Add more external nullable annotations for libs
diff --git a/eea/java/lang/Class.eea b/eea/java/lang/Class.eea
index 4420d16..ea8ce2b 100644
--- a/eea/java/lang/Class.eea
+++ b/eea/java/lang/Class.eea
@@ -1,10 +1,13 @@
 class java/lang/Class
 forName
+ (Ljava/lang/Module;Ljava/lang/String;)Ljava/lang/Class<*>;
+ (L1java/lang/Module;L1java/lang/String;)L1java/lang/Class<*>;
+forName
  (Ljava/lang/String;)Ljava/lang/Class<*>;
  (L1java/lang/String;)L1java/lang/Class<*>;
 forName
  (Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class<*>;
- (L1java/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class<*>;
+ (L1java/lang/String;ZL0java/lang/ClassLoader;)L1java/lang/Class<*>;
 getAnnotatedInterfaces
  ()[Ljava/lang/reflect/AnnotatedType;
  ()[1L1java/lang/reflect/AnnotatedType;
@@ -20,6 +23,12 @@
 getClasses
  ()[Ljava/lang/Class<*>;
  ()[Ljava/lang/Class<*>;
+getConstructor
+ ([Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<TT;>;
+ ([1L1java/lang/Class<*>;)L1java/lang/reflect/Constructor<TT;>;
+getConstructors
+ ()[Ljava/lang/reflect/Constructor<*>;
+ ()[1L1java/lang/reflect/Constructor<*>;
 getGenericSuperclass
  ()Ljava/lang/reflect/Type;
  ()L0java/lang/reflect/Type;
@@ -44,9 +53,6 @@
 isInstance
  (Ljava/lang/Object;)Z
  (L0java/lang/Object;)Z
-newInstance
- ()TT;
- ()T1T;
 toGenericString
  ()Ljava/lang/String;
  ()L1java/lang/String;
diff --git a/eea/java/lang/Process.eea b/eea/java/lang/Process.eea
new file mode 100644
index 0000000..368b9da
--- /dev/null
+++ b/eea/java/lang/Process.eea
@@ -0,0 +1,31 @@
+class java/lang/Process
+children
+ ()Ljava/util/stream/Stream<Ljava/lang/ProcessHandle;>;
+ ()L1java/util/stream/Stream<L1java/lang/ProcessHandle;>;
+descendants
+ ()Ljava/util/stream/Stream<Ljava/lang/ProcessHandle;>;
+ ()L1java/util/stream/Stream<L1java/lang/ProcessHandle;>;
+destroyForcibly
+ ()Ljava/lang/Process;
+ ()L1java/lang/Process;
+getErrorStream
+ ()Ljava/io/InputStream;
+ ()L1java/io/InputStream;
+getInputStream
+ ()Ljava/io/InputStream;
+ ()L1java/io/InputStream;
+getOutputStream
+ ()Ljava/io/OutputStream;
+ ()L1java/io/OutputStream;
+info
+ ()Ljava/lang/ProcessHandle$Info;
+ ()L1java/lang/ProcessHandle$Info;
+onExit
+ ()Ljava/util/concurrent/CompletableFuture<Ljava/lang/Process;>;
+ ()L1java/util/concurrent/CompletableFuture<L1java/lang/Process;>;
+toHandle
+ ()Ljava/lang/ProcessHandle;
+ ()L1java/lang/ProcessHandle;
+waitFor
+ (JLjava/util/concurrent/TimeUnit;)Z
+ (JL1java/util/concurrent/TimeUnit;)Z
diff --git a/eea/java/lang/Throwable.eea b/eea/java/lang/Throwable.eea
index 9bfec03..29e40be 100644
--- a/eea/java/lang/Throwable.eea
+++ b/eea/java/lang/Throwable.eea
@@ -1,4 +1,10 @@
 class java/lang/Throwable
+getLocalizedMessage
+ ()Ljava/lang/String;
+ ()L0java/lang/String;
+getMessage
+ ()Ljava/lang/String;
+ ()L0java/lang/String;
 printStackTrace
  (Ljava/io/PrintStream;)V
  (L1java/io/PrintStream;)V
diff --git a/eea/java/lang/reflect/Constructor.eea b/eea/java/lang/reflect/Constructor.eea
new file mode 100644
index 0000000..b2fcbd6
--- /dev/null
+++ b/eea/java/lang/reflect/Constructor.eea
@@ -0,0 +1,4 @@
+class java/lang/reflect/Constructor
+newInstance
+ ([Ljava/lang/Object;)TT;
+ ([1Ljava/lang/Object;)T1T;
diff --git a/eea/java/nio/charset/StandardCharsets.eea b/eea/java/nio/charset/StandardCharsets.eea
new file mode 100644
index 0000000..f0d75ff
--- /dev/null
+++ b/eea/java/nio/charset/StandardCharsets.eea
@@ -0,0 +1,19 @@
+class java/nio/charset/StandardCharsets
+ISO_8859_1
+ Ljava/nio/charset/Charset;
+ L1java/nio/charset/Charset;
+US_ASCII
+ Ljava/nio/charset/Charset;
+ L1java/nio/charset/Charset;
+UTF_16
+ Ljava/nio/charset/Charset;
+ L1java/nio/charset/Charset;
+UTF_16BE
+ Ljava/nio/charset/Charset;
+ L1java/nio/charset/Charset;
+UTF_16LE
+ Ljava/nio/charset/Charset;
+ L1java/nio/charset/Charset;
+UTF_8
+ Ljava/nio/charset/Charset;
+ L1java/nio/charset/Charset;
diff --git a/eea/java/nio/file/FileVisitor.eea b/eea/java/nio/file/FileVisitor.eea
new file mode 100644
index 0000000..4d0b153
--- /dev/null
+++ b/eea/java/nio/file/FileVisitor.eea
@@ -0,0 +1,15 @@
+class java/nio/file/FileVisitor
+ <T:Ljava/lang/Object;>
+ <T:Ljava/lang/Object;>
+postVisitDirectory
+ (TT;Ljava/io/IOException;)Ljava/nio/file/FileVisitResult;
+ (T1T;L0java/io/IOException;)L1java/nio/file/FileVisitResult;
+preVisitDirectory
+ (TT;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult;
+ (T1T;L1java/nio/file/attribute/BasicFileAttributes;)L1java/nio/file/FileVisitResult;
+visitFile
+ (TT;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult;
+ (T1T;L1java/nio/file/attribute/BasicFileAttributes;)L1java/nio/file/FileVisitResult;
+visitFileFailed
+ (TT;Ljava/io/IOException;)Ljava/nio/file/FileVisitResult;
+ (T1T;L1java/io/IOException;)L1java/nio/file/FileVisitResult;
diff --git a/eea/java/nio/file/Files.eea b/eea/java/nio/file/Files.eea
index 886013a..0251863 100644
--- a/eea/java/nio/file/Files.eea
+++ b/eea/java/nio/file/Files.eea
@@ -1,4 +1,13 @@
 class java/nio/file/Files
+createDirectories
+ (Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute<*>;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;[L1java/nio/file/attribute/FileAttribute<*>;)L1java/nio/file/Path;
+createDirectory
+ (Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute<*>;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;[1L1java/nio/file/attribute/FileAttribute<*>;)L1java/nio/file/Path;
+createFile
+ (Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute<*>;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;[1L1java/nio/file/attribute/FileAttribute<*>;)L1java/nio/file/Path;
 newDirectoryStream
  (Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream<Ljava/nio/file/Path;>;
  (Ljava/nio/file/Path;)L1java/nio/file/DirectoryStream<L1java/nio/file/Path;>;
@@ -11,6 +20,33 @@
 readAllLines
  (Ljava/nio/file/Path;)Ljava/util/List<Ljava/lang/String;>;
  (L1java/nio/file/Path;)L1java/util/List<L1java/lang/String;>;
+readAllLines
+ (Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/util/List<Ljava/lang/String;>;
+ (L1java/nio/file/Path;L1java/nio/charset/Charset;)L1java/util/List<L1java/lang/String;>;
 readString
  (Ljava/nio/file/Path;)Ljava/lang/String;
- (Ljava/nio/file/Path;)L1java/lang/String;
+ (L1java/nio/file/Path;)L1java/lang/String;
+readString
+ (Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/lang/String;
+ (L1java/nio/file/Path;L1java/nio/charset/Charset;)L1java/lang/String;
+walkFileTree
+ (Ljava/nio/file/Path;Ljava/nio/file/FileVisitor<-Ljava/nio/file/Path;>;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;L1java/nio/file/FileVisitor<-L1java/nio/file/Path;>;)Ljava/nio/file/Path;
+walkFileTree
+ (Ljava/nio/file/Path;Ljava/util/Set<Ljava/nio/file/FileVisitOption;>;ILjava/nio/file/FileVisitor<-Ljava/nio/file/Path;>;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;L1java/util/Set<Ljava/nio/file/FileVisitOption;>;IL1java/nio/file/FileVisitor<-L1java/nio/file/Path;>;)Ljava/nio/file/Path;
+write
+ (Ljava/nio/file/Path;Ljava/lang/Iterable<+Ljava/lang/CharSequence;>;Ljava/nio/charset/Charset;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;L1java/lang/Iterable<+L1java/lang/CharSequence;>;L1java/nio/charset/Charset;[1L1java/nio/file/OpenOption;)L1java/nio/file/Path;
+write
+ (Ljava/nio/file/Path;Ljava/lang/Iterable<+Ljava/lang/CharSequence;>;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;L1java/lang/Iterable<+L1java/lang/CharSequence;>;[1L1java/nio/file/OpenOption;)L1java/nio/file/Path;
+write
+ (Ljava/nio/file/Path;[B[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;[1B[1L1java/nio/file/OpenOption;)L1java/nio/file/Path;
+writeString
+ (Ljava/nio/file/Path;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;L1java/lang/CharSequence;L1java/nio/charset/Charset;[1L1java/nio/file/OpenOption;)L1java/nio/file/Path;
+writeString
+ (Ljava/nio/file/Path;Ljava/lang/CharSequence;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
+ (L1java/nio/file/Path;L1java/lang/CharSequence;[1L1java/nio/file/OpenOption;)L1java/nio/file/Path;
diff --git a/eea/java/nio/file/InvalidPathException.eea b/eea/java/nio/file/InvalidPathException.eea
new file mode 100644
index 0000000..3598652
--- /dev/null
+++ b/eea/java/nio/file/InvalidPathException.eea
@@ -0,0 +1,16 @@
+class java/nio/file/InvalidPathException
+<init>
+ (Ljava/lang/String;Ljava/lang/String;)V
+ (L1java/lang/String;L1java/lang/String;)V
+<init>
+ (Ljava/lang/String;Ljava/lang/String;I)V
+ (L1java/lang/String;L1java/lang/String;I)V
+getInput
+ ()Ljava/lang/String;
+ ()L1java/lang/String;
+getMessage
+ ()Ljava/lang/String;
+ ()L1java/lang/String;
+getReason
+ ()Ljava/lang/String;
+ ()L1java/lang/String;
diff --git a/eea/java/nio/file/Path.eea b/eea/java/nio/file/Path.eea
index c3e45ac..edb419d 100644
--- a/eea/java/nio/file/Path.eea
+++ b/eea/java/nio/file/Path.eea
@@ -32,6 +32,12 @@
 normalize
  ()Ljava/nio/file/Path;
  ()L1java/nio/file/Path;
+of
+ (Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
+ (L1java/lang/String;[1L1java/lang/String;)L1java/nio/file/Path;
+of
+ (Ljava/net/URI;)Ljava/nio/file/Path;
+ (L1java/net/URI;)L1java/nio/file/Path;
 relativize
  (Ljava/nio/file/Path;)Ljava/nio/file/Path;
  (L1java/nio/file/Path;)L1java/nio/file/Path;
diff --git a/eea/java/nio/file/attribute/BasicFileAttributes.eea b/eea/java/nio/file/attribute/BasicFileAttributes.eea
new file mode 100644
index 0000000..d18751d
--- /dev/null
+++ b/eea/java/nio/file/attribute/BasicFileAttributes.eea
@@ -0,0 +1,13 @@
+class java/nio/file/attribute/BasicFileAttributes
+creationTime
+ ()Ljava/nio/file/attribute/FileTime;
+ ()L1java/nio/file/attribute/FileTime;
+fileKey
+ ()Ljava/lang/Object;
+ ()L0java/lang/Object;
+lastAccessTime
+ ()Ljava/nio/file/attribute/FileTime;
+ ()L1java/nio/file/attribute/FileTime;
+lastModifiedTime
+ ()Ljava/nio/file/attribute/FileTime;
+ ()L1java/nio/file/attribute/FileTime;
diff --git a/eea/java/rmi/server/RemoteServer.eea b/eea/java/rmi/server/RemoteServer.eea
new file mode 100644
index 0000000..21f88f7
--- /dev/null
+++ b/eea/java/rmi/server/RemoteServer.eea
@@ -0,0 +1,4 @@
+class java/rmi/server/RemoteServer
+getClientHost
+ ()Ljava/lang/String;
+ ()L1java/lang/String;
diff --git a/eea/java/security/KeyPairGenerator.eea b/eea/java/security/KeyPairGenerator.eea
new file mode 100644
index 0000000..e2b7466
--- /dev/null
+++ b/eea/java/security/KeyPairGenerator.eea
@@ -0,0 +1,4 @@
+class java/security/KeyPairGenerator
+getInstance
+ (Ljava/lang/String;)Ljava/security/KeyPairGenerator;
+ (L1java/lang/String;)L1java/security/KeyPairGenerator;
diff --git a/eea/java/security/MessageDigest.eea b/eea/java/security/MessageDigest.eea
new file mode 100644
index 0000000..437316e
--- /dev/null
+++ b/eea/java/security/MessageDigest.eea
@@ -0,0 +1,7 @@
+class java/security/MessageDigest
+digest
+ ([B)[B
+ ([1B)[1B
+getInstance
+ (Ljava/lang/String;)Ljava/security/MessageDigest;
+ (L1java/lang/String;)L1java/security/MessageDigest;
diff --git a/eea/java/security/Policy.eea b/eea/java/security/Policy.eea
new file mode 100644
index 0000000..a2594ba
--- /dev/null
+++ b/eea/java/security/Policy.eea
@@ -0,0 +1,4 @@
+class java/security/Policy
+getPolicy
+ ()Ljava/security/Policy;
+ ()L1java/security/Policy;
diff --git a/eea/java/util/Arrays.eea b/eea/java/util/Arrays.eea
index c2c54c2..5323eef 100644
--- a/eea/java/util/Arrays.eea
+++ b/eea/java/util/Arrays.eea
@@ -190,7 +190,7 @@
  ([1J)Ljava/lang/String;
 toString
  ([Ljava/lang/Object;)Ljava/lang/String;
- ([0L0java/lang/Object;)L1java/lang/String;
+ ([0Ljava/lang/Object;)L1java/lang/String;
 toString
  ([S)Ljava/lang/String;
  ([0S)Ljava/lang/String;
diff --git a/eea/java/util/Properties.eea b/eea/java/util/Properties.eea
new file mode 100644
index 0000000..e076d61
--- /dev/null
+++ b/eea/java/util/Properties.eea
@@ -0,0 +1,10 @@
+class java/util/Properties
+entrySet
+ ()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;>;
+ ()L1java/util/Set<L1java/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;>;
+keySet
+ ()Ljava/util/Set<Ljava/lang/Object;>;
+ ()L1java/util/Set<Ljava/lang/Object;>;
+values
+ ()Ljava/util/Collection<Ljava/lang/Object;>;
+ ()L1java/util/Collection<Ljava/lang/Object;>;
diff --git a/eea/java/util/Set.eea b/eea/java/util/Set.eea
index e7e18f4..c945809 100644
--- a/eea/java/util/Set.eea
+++ b/eea/java/util/Set.eea
@@ -18,5 +18,8 @@
  ()Ljava/util/Spliterator<TE;>;
  ()L1java/util/Spliterator<TE;>;
 toArray
+ ()[Ljava/lang/Object;
+ ()[1Ljava/lang/Object;
+toArray
  <T:Ljava/lang/Object;>([TT;)[TT;
- <T:Ljava/lang/Object;>([1TT;)[T1T;
+ <T:Ljava/lang/Object;>([1TT;)[1TT;
diff --git a/eea/javax/security/auth/callback/NameCallback.eea b/eea/javax/security/auth/callback/NameCallback.eea
new file mode 100644
index 0000000..79aa192
--- /dev/null
+++ b/eea/javax/security/auth/callback/NameCallback.eea
@@ -0,0 +1,19 @@
+class javax/security/auth/callback/NameCallback
+<init>
+ (Ljava/lang/String;)V
+ (L1java/lang/String;)V
+<init>
+ (Ljava/lang/String;Ljava/lang/String;)V
+ (L1java/lang/String;L1java/lang/String;)V
+getDefaultName
+ ()Ljava/lang/String;
+ ()L0java/lang/String;
+getName
+ ()Ljava/lang/String;
+ ()L0java/lang/String;
+getPrompt
+ ()Ljava/lang/String;
+ ()L1java/lang/String;
+setName
+ (Ljava/lang/String;)V
+ (L0java/lang/String;)V