Snap for 4829593 from 9d085c19fe6d82438fa604ae739b5602b3904b0e to pi-release

Change-Id: I42938869c8fc0fda4f09911cbaa2665bb995508b
diff --git a/annotated_java_files.bp b/annotated_java_files.bp
index 7887a1d..77a2c6e 100644
--- a/annotated_java_files.bp
+++ b/annotated_java_files.bp
@@ -3,17 +3,20 @@
     name: "annotated_ojluni_files",
     export_to_make_var: "annotated_ojluni_files",
     srcs: [
+        "ojluni/src/main/java/java/io/PrintWriter.java",
         "ojluni/src/main/java/java/lang/Appendable.java",
         "ojluni/src/main/java/java/lang/Boolean.java",
         "ojluni/src/main/java/java/lang/Byte.java",
         "ojluni/src/main/java/java/lang/CharSequence.java",
         "ojluni/src/main/java/java/lang/Character.java",
+        "ojluni/src/main/java/java/lang/Class.java",
         "ojluni/src/main/java/java/lang/Double.java",
         "ojluni/src/main/java/java/lang/Enum.java",
         "ojluni/src/main/java/java/lang/Float.java",
         "ojluni/src/main/java/java/lang/Integer.java",
         "ojluni/src/main/java/java/lang/Iterable.java",
         "ojluni/src/main/java/java/lang/Long.java",
+        "ojluni/src/main/java/java/lang/Object.java",
         "ojluni/src/main/java/java/lang/String.java",
         "ojluni/src/main/java/java/lang/StringBuffer.java",
         "ojluni/src/main/java/java/lang/StringBuilder.java",
@@ -36,6 +39,11 @@
         "ojluni/src/main/java/java/lang/reflect/Type.java",
         "ojluni/src/main/java/java/lang/reflect/TypeVariable.java",
         "ojluni/src/main/java/java/lang/reflect/WildcardType.java",
+        "ojluni/src/main/java/java/util/ArrayList.java",
+        "ojluni/src/main/java/java/util/HashMap.java",
+        "ojluni/src/main/java/java/util/Iterator.java",
         "ojluni/src/main/java/java/util/List.java",
+        "ojluni/src/main/java/java/util/Map.java",
+        "ojluni/src/main/java/java/util/Set.java",
     ],
 }
diff --git a/annotations/ojluni.jaif b/annotations/ojluni.jaif
index be0a2cb7..a0bdabe 100644
--- a/annotations/ojluni.jaif
+++ b/annotations/ojluni.jaif
@@ -38,6 +38,176 @@
     int from
     int to
 
+package java.io:
+class PrintWriter:
+
+    method <init>(Ljava/io/Writer;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/io/Writer;Z)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/io/OutputStream;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/io/OutputStream;Z)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/lang/String;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/nio/charset/Charset;Ljava/io/File;)V:
+        return:
+
+    method <init>(Ljava/lang/String;Ljava/lang/String;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #1:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/io/File;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method <init>(Ljava/io/File;Ljava/lang/String;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #1:
+            type: @libcore.util.NonNull
+
+    method write([CII)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method write([C)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method write(Ljava/lang/String;II)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method write(Ljava/lang/String;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method print([C)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method print(Ljava/lang/String;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method print(Ljava/lang/Object;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method println(Ljava/lang/String;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method println(Ljava/lang/Object;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 0, 0: @libcore.util.Nullable
+
+    method printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+        parameter #1:
+            type: @libcore.util.NonNull
+        parameter #2:
+            type: @libcore.util.NonNull
+                inner-type 0, 0: @libcore.util.Nullable
+
+    method format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 0, 0: @libcore.util.Nullable
+
+    method format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+        parameter #1:
+            type: @libcore.util.NonNull
+        parameter #2:
+            type: @libcore.util.NonNull
+                inner-type 0, 0: @libcore.util.Nullable
+
+    method append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method append(Ljava/lang/CharSequence;II)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method append(C)Ljava/io/PrintWriter;:
+        return: @libcore.util.NonNull
+
+    method append(C)Ljava/io/Writer;:
+        return: @libcore.util.NonNull
+
+    method append(Ljava/lang/CharSequence;II)Ljava/io/Writer;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method append(Ljava/lang/CharSequence;)Ljava/io/Writer;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method append(C)Ljava/lang/Appendable;:
+        return: @libcore.util.NonNull
+
+    method append(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+
 package java.lang:
 class Appendable:
     method append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;:
@@ -1526,6 +1696,237 @@
         parameter #0:
           type: @libcore.util.NullFromTypeParam
 
+class Object:
+
+    method getClass()Ljava/lang/Class;:
+        return: @libcore.util.NonNull
+
+    method equals(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method toString()Ljava/lang/String;:
+        return: @libcore.util.NonNull
+
+class Class:
+
+    method toString()Ljava/lang/String;:
+        return: @libcore.util.NonNull
+
+    method toGenericString()Ljava/lang/String;:
+        return: @libcore.util.NonNull
+
+    method forName(Ljava/lang/String;)Ljava/lang/Class;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #2:
+            type: @libcore.util.Nullable
+
+    method newInstance()Ljava/lang/Object;:
+        return: @libcore.util.NonNull
+
+    method isInstance(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method isAssignableFrom(Ljava/lang/Class;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getName()Ljava/lang/String;:
+        return: @libcore.util.NonNull
+
+    method getClassLoader()Ljava/lang/ClassLoader;:
+        return: @libcore.util.Nullable
+
+    method getTypeParameters()[Ljava/lang/reflect/TypeVariable;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0,3, 0: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getSuperclass()Ljava/lang/Class;:
+        return: @libcore.util.Nullable
+
+    method getGenericSuperclass()Ljava/lang/reflect/Type;:
+        return: @libcore.util.Nullable
+
+    method getPackage()Ljava/lang/Package;:
+        return: @libcore.util.Nullable
+
+    method getInterfaces()[Ljava/lang/Class;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getGenericInterfaces()[Ljava/lang/reflect/Type;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getComponentType()Ljava/lang/Class;:
+        return: @libcore.util.Nullable
+
+    method getSigners()[Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getEnclosingMethod()Ljava/lang/reflect/Method;:
+        return: @libcore.util.Nullable
+
+    method getEnclosingConstructor()Ljava/lang/reflect/Constructor;:
+        return: @libcore.util.Nullable
+
+    method getDeclaringClass()Ljava/lang/Class;:
+        return: @libcore.util.Nullable
+
+    method getEnclosingClass()Ljava/lang/Class;:
+        return: @libcore.util.Nullable
+
+    method getSimpleName()Ljava/lang/String;:
+        return: @libcore.util.NonNull
+
+    method getTypeName()Ljava/lang/String;:
+        return: @libcore.util.NonNull
+
+    method getCanonicalName()Ljava/lang/String;:
+        return: @libcore.util.Nullable
+
+    method getClasses()[Ljava/lang/Class;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getFields()[Ljava/lang/reflect/Field;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getMethods()[Ljava/lang/reflect/Method;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getConstructors()[Ljava/lang/reflect/Constructor;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getField(Ljava/lang/String;)Ljava/lang/reflect/Field;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #1:
+            type: @libcore.util.Nullable
+                inner-type 0, 0: @libcore.util.NonNull
+
+    method getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+                inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredClasses()[Ljava/lang/Class;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredFields()[Ljava/lang/reflect/Field;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredMethods()[Ljava/lang/reflect/Method;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredConstructors()[Ljava/lang/reflect/Constructor;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+        parameter #1:
+            type: @libcore.util.Nullable
+                inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;:
+        return: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.Nullable
+                inner-type 0, 0: @libcore.util.NonNull
+
+    method getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getResource(Ljava/lang/String;)Ljava/net/URL;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getProtectionDomain()Ljava/security/ProtectionDomain;:
+        return: @libcore.util.Nullable
+
+    method getEnumConstants()[Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method cast(Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method asSubclass(Ljava/lang/Class;)Ljava/lang/Class;:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method isAnnotationPresent(Ljava/lang/Class;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getAnnotationsByType(Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getAnnotations()[Ljava/lang/annotation/Annotation;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method getDeclaredAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.NonNull
+
+    method isDeclaredAnnotationPresent(Ljava/lang/Class;)Z:
+        return:
+
 package java.lang.reflect:
 
 class AccessibleObject:
@@ -1774,6 +2175,299 @@
 
 package java.util:
 
+class ArrayList:
+
+    method <init>(Ljava/util/Collection;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method contains(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method indexOf(Ljava/lang/Object;)I:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method lastIndexOf(Ljava/lang/Object;)I:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method clone()Ljava/lang/Object;:
+        return: @libcore.util.NonNull
+
+    method toArray()[Ljava/lang/Object;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
+
+    method toArray([Ljava/lang/Object;)[Ljava/lang/Object;:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 0, 0: @libcore.util.Nullable
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
+
+    method get(I)Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+
+    method set(ILjava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method add(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+
+    method add(ILjava/lang/Object;)V:
+        return:
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method remove(I)Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+
+    method remove(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method addAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method addAll(ILjava/util/Collection;)Z:
+        return:
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method removeAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method retainAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method listIterator(I)Ljava/util/ListIterator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method listIterator()Ljava/util/ListIterator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method iterator()Ljava/util/Iterator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method subList(II)Ljava/util/List;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method forEach(Ljava/util/function/Consumer;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method spliterator()Ljava/util/Spliterator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method removeIf(Ljava/util/function/Predicate;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method replaceAll(Ljava/util/function/UnaryOperator;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method sort(Ljava/util/Comparator;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+class HashMap:
+
+    method <init>(Ljava/util/Map;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+
+    method get(Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method containsKey(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method putAll(Ljava/util/Map;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+
+    method remove(Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method containsValue(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method keySet()Ljava/util/Set;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method values()Ljava/util/Collection;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method entrySet()Ljava/util/Set;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 0: @libcore.util.NullFromTypeParam
+            inner-type 3, 0,3, 1: @libcore.util.NullFromTypeParam
+
+    method getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+        parameter #1:
+            type: @libcore.util.Nullable
+
+    method putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method remove(Ljava/lang/Object;Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+        parameter #1:
+            type: @libcore.util.Nullable
+
+    method replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.Nullable
+        parameter #2:
+            type: @libcore.util.NullFromTypeParam
+
+    method replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.Nullable
+
+    method computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NonNull
+                inner-type 3, 2,2, 0: @libcore.util.Nullable
+
+    method compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.Nullable
+                inner-type 3, 2,2, 0: @libcore.util.Nullable
+
+    method merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+        parameter #2:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NonNull
+                inner-type 3, 1,2, 0: @libcore.util.NonNull
+                inner-type 3, 2,2, 0: @libcore.util.Nullable
+
+    method forEach(Ljava/util/function/BiConsumer;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+
+    method replaceAll(Ljava/util/function/BiFunction;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 2,2, 0: @libcore.util.NullFromTypeParam
+
+    method clone()Ljava/lang/Object;:
+        return: @libcore.util.NonNull
+
+class Iterator:
+
+    method next()Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+
+    method forEachRemaining(Ljava/util/function/Consumer;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
 class List:
     method contains(Ljava/lang/Object;)Z:
         // May be null
@@ -1784,17 +2478,21 @@
     method iterator()Ljava/util/Iterator;:
         // Javadoc doesn't mention possiblity of a null result
         return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
 
     method toArray()[Ljava/lang/Object;:
         // Never returns null
         return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
 
     method toArray([Ljava/lang/Object;)[Ljava/lang/Object;:
         // Javadoc mention NPE for param #0
         parameter #0:
           type: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
         // Never returns null
         return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
 
     method add(Ljava/lang/Object;)Z:
         // Nullness depends on type parameter nullness
@@ -1810,7 +2508,6 @@
         // Javadoc mention NPE for null param #0
         parameter #0:
           type: @libcore.util.NonNull
-          inner-type 3, 0: @libcore.util.Nullable
 
     method addAll(Ljava/util/Collection;)Z:
         // Javadoc mention NPE for null param #0
@@ -1818,14 +2515,14 @@
           type: @libcore.util.NonNull
           // boolean addAll(Collection<? extends E> c);
           // Nullness depends on type parameter nullness
-          inner-type 3, 0: @libcore.util.NullFromTypeParam
+          inner-type 3, 0, 2, 0: @libcore.util.NullFromTypeParam
 
     method addAll(ILjava/util/Collection;)Z:
         // Javadoc mention NPE for null param #1
         parameter #1:
           type: @libcore.util.NonNull
           // boolean addAll(int, Collection<? extends E> c);
-          inner-type 3, 0: @libcore.util.NullFromTypeParam
+          inner-type 3, 0, 2, 0: @libcore.util.NullFromTypeParam
 
     method removeAll(Ljava/util/Collection;)Z:
         // Javadoc mention NPE for null param #0
@@ -1841,11 +2538,13 @@
         // Javadoc mention NPE for null param #0
         parameter #0:
           type: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
 
     method sort(Ljava/util/Comparator;)V:
         // Javadoc mention null as valid param #0
         parameter #0:
           type: @libcore.util.Nullable
+          inner-type 3, 0, 2, 0: @libcore.util.NullFromTypeParam
 
     method equals(Ljava/lang/Object;)Z:
         // Null is valid argument #0
@@ -1860,7 +2559,7 @@
     method set(ILjava/lang/Object;)Ljava/lang/Object;:
         // Nullness depends on type parameter nullness
         // E set(int index, E element);
-        parameter #0:
+        parameter #1:
           type: @libcore.util.NullFromTypeParam
         return: @libcore.util.NullFromTypeParam
 
@@ -1888,15 +2587,276 @@
     method listIterator()Ljava/util/ListIterator;:
         // Javadoc doesn't mention possiblity of a null result
         return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
 
     method listIterator(I)Ljava/util/ListIterator;:
         // Javadoc doesn't mention possiblity of a null result
         return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
 
     method subList(II)Ljava/util/List;:
          // Javadoc doesn't mention possiblity of a null result
         return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
 
     method spliterator()Ljava/util/Spliterator;:
         // Javadoc doesn't mention possiblity of a null result
         return: @libcore.util.NonNull
+
+class Map:
+
+    method containsKey(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method containsValue(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method get(Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method remove(Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method putAll(Ljava/util/Map;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+
+    method keySet()Ljava/util/Set;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method values()Ljava/util/Collection;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method entrySet()Ljava/util/Set;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 0: @libcore.util.NullFromTypeParam
+            inner-type 3, 0,3, 1: @libcore.util.NullFromTypeParam
+
+    method equals(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.Nullable
+        parameter #1:
+            type: @libcore.util.Nullable
+
+    method forEach(Ljava/util/function/BiConsumer;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+
+    method replaceAll(Ljava/util/function/BiFunction;)V:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 2,2, 0: @libcore.util.NullFromTypeParam
+
+    method putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method remove(Ljava/lang/Object;Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+        parameter #1:
+            type: @libcore.util.Nullable
+
+    method replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.Nullable
+        parameter #2:
+            type: @libcore.util.NullFromTypeParam
+
+    method replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NullFromTypeParam
+
+    method computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.Nullable
+
+    method computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.NonNull
+                inner-type 3, 2,2, 0: @libcore.util.Nullable
+
+    method compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+                inner-type 3, 1,2, 0: @libcore.util.Nullable
+                inner-type 3, 2,2, 0: @libcore.util.Nullable
+
+    method merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;:
+        return: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+        parameter #1:
+            type: @libcore.util.NonNull
+        parameter #2:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NonNull
+                inner-type 3, 1,2, 0: @libcore.util.NonNull
+                inner-type 3, 2,2, 0: @libcore.util.Nullable
+
+class Map$Entry:
+
+    method getKey()Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+
+    method getValue()Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+
+    method setValue(Ljava/lang/Object;)Ljava/lang/Object;:
+        return: @libcore.util.NullFromTypeParam
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+
+    method equals(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method comparingByKey()Ljava/util/Comparator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 1: @libcore.util.Nullable
+
+    method comparingByValue()Ljava/util/Comparator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 0: @libcore.util.Nullable
+            inner-type 3, 0,3, 1: @libcore.util.NonNull
+
+    method comparingByKey(Ljava/util/Comparator;)Ljava/util/Comparator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 0: @libcore.util.NullFromTypeParam
+            inner-type 3, 0,3, 1: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method comparingByValue(Ljava/util/Comparator;)Ljava/util/Comparator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NonNull
+            inner-type 3, 0,3, 0: @libcore.util.Nullable
+            inner-type 3, 0,3, 1: @libcore.util.NullFromTypeParam
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+class Set:
+
+    method contains(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method iterator()Ljava/util/Iterator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
+
+    method toArray()[Ljava/lang/Object;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
+
+    method toArray([Ljava/lang/Object;)[Ljava/lang/Object;:
+        return: @libcore.util.NonNull
+            inner-type 0, 0: @libcore.util.Nullable
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 0, 0: @libcore.util.Nullable
+
+    method add(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NullFromTypeParam
+
+    method remove(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method containsAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method addAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+                inner-type 3, 0,2, 0: @libcore.util.NullFromTypeParam
+
+    method retainAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method removeAll(Ljava/util/Collection;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.NonNull
+
+    method equals(Ljava/lang/Object;)Z:
+        return:
+        parameter #0:
+            type: @libcore.util.Nullable
+
+    method spliterator()Ljava/util/Spliterator;:
+        return: @libcore.util.NonNull
+            inner-type 3, 0: @libcore.util.NullFromTypeParam
diff --git a/ojluni/src/main/java/java/text/BreakIterator.java b/ojluni/src/main/java/java/text/BreakIterator.java
index e9adafa..a875ec1 100644
--- a/ojluni/src/main/java/java/text/BreakIterator.java
+++ b/ojluni/src/main/java/java/text/BreakIterator.java
@@ -44,6 +44,7 @@
 import java.util.Locale;
 
 
+// Android-changed: Discourage modification on CharacterIterator after setText. http://b/80456574
 /**
  * The <code>BreakIterator</code> class implements methods for finding
  * the location of boundaries in text. Instances of <code>BreakIterator</code>
@@ -53,6 +54,10 @@
  * <code>CharacterIterator</code>, and is thus able to scan text held
  * by any object implementing that protocol. A <code>StringCharacterIterator</code>
  * is used to scan <code>String</code> objects passed to <code>setText</code>.
+ * The <code>CharacterIterator</code> object must not be modified after having been
+ * passed to <code>setText</code>. If the text in the <code>CharacterIterator</code> object
+ * is changed, the caller must reset <code>BreakIterator</code> by calling
+ * <code>setText</code>.
  *
  * <p>
  * You use the factory methods provided by this class to create