Merge "Added a workaround for ValueAnimator issue" into oc-support-26.0-dev
diff --git a/.gitignore b/.gitignore
index 5e7ac49..e57740b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,9 @@
 .classpath
 .gradle
-.idea/*
-.idea/**/*
-!.idea/*/
+.idea/
 !.idea/codeStyleSettings.xml
 !.idea/copyright/AndroidCopyright.xml
 !.idea/copyright/profiles_settings.xml
-!.idea/inspectionProfiles/SupportLib.xml
-!.idea/inspectionProfiles/profiles_settings.xml
 !.idea/vcs.xml
 .project
 .settings/
diff --git a/.idea/inspectionProfiles/SupportLib.xml b/.idea/inspectionProfiles/SupportLib.xml
deleted file mode 100644
index e0d21e6..0000000
--- a/.idea/inspectionProfiles/SupportLib.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <profile version="1.0">
-    <option name="myName" value="SupportLib" />
-    <inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
-      <option name="TOP_LEVEL_CLASS_OPTIONS">
-        <value>
-          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
-          <option name="REQUIRED_TAGS" value="" />
-        </value>
-      </option>
-      <option name="INNER_CLASS_OPTIONS">
-        <value>
-          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
-          <option name="REQUIRED_TAGS" value="" />
-        </value>
-      </option>
-      <option name="METHOD_OPTIONS">
-        <value>
-          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
-          <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
-        </value>
-      </option>
-      <option name="FIELD_OPTIONS">
-        <value>
-          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
-          <option name="REQUIRED_TAGS" value="" />
-        </value>
-      </option>
-      <option name="IGNORE_DEPRECATED" value="false" />
-      <option name="IGNORE_JAVADOC_PERIOD" value="true" />
-      <option name="IGNORE_DUPLICATED_THROWS" value="false" />
-      <option name="IGNORE_POINT_TO_ITSELF" value="false" />
-      <option name="myAdditionalJavadocTags" value="hide,attr" />
-    </inspection_tool>
-    <inspection_tool class="WeakerAccess" enabled="false" level="WARNING" enabled_by_default="false">
-      <option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true" />
-      <option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="true" />
-      <option name="SUGGEST_PRIVATE_FOR_INNERS" value="false" />
-    </inspection_tool>
-    <inspection_tool class="unused" enabled="true" level="WARNING" enabled_by_default="true" method="protected">
-      <option name="LOCAL_VARIABLE" value="true" />
-      <option name="FIELD" value="true" />
-      <option name="METHOD" value="true" />
-      <option name="CLASS" value="true" />
-      <option name="PARAMETER" value="true" />
-      <option name="REPORT_PARAMETER_FOR_PUBLIC_METHODS" value="true" />
-      <option name="ADD_MAINS_TO_ENTRIES" value="true" />
-      <option name="ADD_APPLET_TO_ENTRIES" value="true" />
-      <option name="ADD_SERVLET_TO_ENTRIES" value="true" />
-      <option name="ADD_NONJAVA_TO_ENTRIES" value="true" />
-    </inspection_tool>
-  </profile>
-</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 83490b5..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <settings>
-    <option name="PROJECT_PROFILE" value="SupportLib" />
-    <version value="1.0" />
-  </settings>
-</component>
\ No newline at end of file
diff --git a/api/26.0.0-SNAPSHOT.txt b/api/26.0.0-SNAPSHOT.txt
index 70782d0..8ec08ac 100644
--- a/api/26.0.0-SNAPSHOT.txt
+++ b/api/26.0.0-SNAPSHOT.txt
@@ -6282,6 +6282,7 @@
   public abstract class JobIntentService extends android.app.Service {
     ctor public JobIntentService();
     method public static void enqueueWork(android.content.Context, java.lang.Class, int, android.content.Intent);
+    method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
     method public boolean isStopped();
     method public android.os.IBinder onBind(android.content.Intent);
     method protected abstract void onHandleWork(android.content.Intent);
diff --git a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
index 8f3966b..6dc2d90 100644
--- a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
@@ -169,11 +169,11 @@
                     }
                 }
             });
-        }
 
-        if (project.rootProject.usingFullSdk) {
-            // Library projects don't run lint by default, so set up dependency.
-            uploadTask.dependsOn project.tasks.lint
+            if (project.rootProject.usingFullSdk) {
+                // Library projects don't run lint by default, so set up dependency.
+                uploadTask.dependsOn project.getTasks().getByName("lintRelease")
+            }
         }
 
         final ErrorProneToolChain toolChain = ErrorProneToolChain.create(project);
@@ -189,7 +189,9 @@
 
                             // Enforce the following checks.
                             '-Xep:MissingOverride:ERROR',
+                            '-Xep:NarrowingCompoundAssignment:ERROR',
                             '-Xep:ClassNewInstance:ERROR',
+                            '-Xep:ClassCanBeStatic:ERROR',
                             '-Xep:SynchronizeOnNonFinalField:ERROR'
                     ]
                 }
diff --git a/compat/java/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.java b/compat/java/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.java
index e2ea863..3c17fda 100644
--- a/compat/java/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.java
+++ b/compat/java/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.java
@@ -18,15 +18,14 @@
 
 import android.accessibilityservice.AccessibilityService;
 import android.accessibilityservice.AccessibilityServiceInfo;
-import android.support.annotation.RequiresApi;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.os.Build;
+import android.support.annotation.RequiresApi;
 import android.view.View;
 
 /**
- * Helper for accessing features in {@link android.accessibilityservice.AccessibilityService}
- * in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.accessibilityservice.AccessibilityService}.
  */
 public final class AccessibilityServiceInfoCompat {
 
diff --git a/compat/java/android/support/v4/app/ActivityCompat.java b/compat/java/android/support/v4/app/ActivityCompat.java
index e3e2516..f260508 100644
--- a/compat/java/android/support/v4/app/ActivityCompat.java
+++ b/compat/java/android/support/v4/app/ActivityCompat.java
@@ -41,8 +41,7 @@
 import java.util.Map;
 
 /**
- * Helper for accessing features in {@link android.app.Activity}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.app.Activity}.
  */
 public class ActivityCompat extends ContextCompat {
 
diff --git a/compat/java/android/support/v4/app/AppOpsManagerCompat.java b/compat/java/android/support/v4/app/AppOpsManagerCompat.java
index 5b8fdd9..ce2d2c6 100644
--- a/compat/java/android/support/v4/app/AppOpsManagerCompat.java
+++ b/compat/java/android/support/v4/app/AppOpsManagerCompat.java
@@ -23,8 +23,7 @@
 import android.support.annotation.NonNull;
 
 /**
- * Helper for accessing features in android.app.AppOpsManager
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.app.AppOpsManager}.
  */
 public final class AppOpsManagerCompat {
 
diff --git a/compat/java/android/support/v4/app/BundleCompat.java b/compat/java/android/support/v4/app/BundleCompat.java
index eb8a4c8..e5fc302 100644
--- a/compat/java/android/support/v4/app/BundleCompat.java
+++ b/compat/java/android/support/v4/app/BundleCompat.java
@@ -25,7 +25,7 @@
 import java.lang.reflect.Method;
 
 /**
- * Helper for accessing features in {@link Bundle} in a backwards compatible fashion.
+ * Helper for accessing features in {@link Bundle}.
  */
 public final class BundleCompat {
 
diff --git a/compat/java/android/support/v4/app/JobIntentService.java b/compat/java/android/support/v4/app/JobIntentService.java
index a08d31f..b08c654 100644
--- a/compat/java/android/support/v4/app/JobIntentService.java
+++ b/compat/java/android/support/v4/app/JobIntentService.java
@@ -101,7 +101,7 @@
     final ArrayList<CompatWorkItem> mCompatQueue;
 
     static final Object sLock = new Object();
-    static final HashMap<Class, WorkEnqueuer> sClassWorkEnqueuer = new HashMap<>();
+    static final HashMap<ComponentName, WorkEnqueuer> sClassWorkEnqueuer = new HashMap<>();
 
     /**
      * Base class for the target service we can deliver work to and the implementation of
@@ -113,8 +113,8 @@
         boolean mHasJobId;
         int mJobId;
 
-        WorkEnqueuer(Context context, Class cls) {
-            mComponentName = new ComponentName(context, cls);
+        WorkEnqueuer(Context context, ComponentName cn) {
+            mComponentName = cn;
         }
 
         void ensureJobId(int jobId) {
@@ -157,16 +157,18 @@
         boolean mLaunchingService;
         boolean mServiceRunning;
 
-        CompatWorkEnqueuer(Context context, Class cls) {
-            super(context, cls);
+        CompatWorkEnqueuer(Context context, ComponentName cn) {
+            super(context, cn);
             mContext = context.getApplicationContext();
             // Make wake locks.  We need two, because the launch wake lock wants to have
             // a timeout, and the system does not do the right thing if you mix timeout and
             // non timeout (or even changing the timeout duration) in one wake lock.
             PowerManager pm = ((PowerManager) context.getSystemService(Context.POWER_SERVICE));
-            mLaunchWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, cls.getName());
+            mLaunchWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
+                    cn.getClassName() + ":launch");
             mLaunchWakeLock.setReferenceCounted(false);
-            mRunWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, cls.getName());
+            mRunWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
+                    cn.getClassName() + ":run");
             mRunWakeLock.setReferenceCounted(false);
         }
 
@@ -319,8 +321,8 @@
         private final JobInfo mJobInfo;
         private final JobScheduler mJobScheduler;
 
-        JobWorkEnqueuer(Context context, Class cls, int jobId) {
-            super(context, cls);
+        JobWorkEnqueuer(Context context, ComponentName cn, int jobId) {
+            super(context, cn);
             ensureJobId(jobId);
             JobInfo.Builder b = new JobInfo.Builder(jobId, mComponentName);
             mJobInfo = b.setOverrideDeadline(0).build();
@@ -421,7 +423,8 @@
             mCompatWorkEnqueuer = null;
         } else {
             mJobImpl = null;
-            mCompatWorkEnqueuer = getWorkEnqueuer(this, this.getClass(), false, 0);
+            ComponentName cn = new ComponentName(this, this.getClass());
+            mCompatWorkEnqueuer = getWorkEnqueuer(this, cn, false, 0);
             mCompatWorkEnqueuer.serviceCreated();
         }
     }
@@ -486,28 +489,45 @@
      */
     public static void enqueueWork(@NonNull Context context, @NonNull Class cls, int jobId,
             @NonNull Intent work) {
+        enqueueWork(context, new ComponentName(context, cls), jobId, work);
+    }
+
+    /**
+     * Like {@link #enqueueWork(Context, Class, int, Intent)}, but supplies a ComponentName
+     * for the service to interact with instead of its class.
+     *
+     * @param context Context this is being called from.
+     * @param component The published ComponentName of the class this work should be
+     * dispatched to.
+     * @param jobId A unique job ID for scheduling; must be the same value for all work
+     * enqueued for the same class.
+     * @param work The Intent of work to enqueue.
+     */
+    public static void enqueueWork(@NonNull Context context, @NonNull ComponentName component,
+            int jobId, @NonNull Intent work) {
         if (work == null) {
             throw new IllegalArgumentException("work must not be null");
         }
         synchronized (sLock) {
-            WorkEnqueuer we = getWorkEnqueuer(context, cls, true, jobId);
+            WorkEnqueuer we = getWorkEnqueuer(context, component, true, jobId);
             we.ensureJobId(jobId);
             we.enqueueWork(work);
         }
     }
 
-    static WorkEnqueuer getWorkEnqueuer(Context context, Class cls, boolean hasJobId, int jobId) {
-        WorkEnqueuer we = sClassWorkEnqueuer.get(cls);
+    static WorkEnqueuer getWorkEnqueuer(Context context, ComponentName cn, boolean hasJobId,
+            int jobId) {
+        WorkEnqueuer we = sClassWorkEnqueuer.get(cn);
         if (we == null) {
             if (Build.VERSION.SDK_INT >= 26) {
                 if (!hasJobId) {
                     throw new IllegalArgumentException("Can't be here without a job id");
                 }
-                we = new JobWorkEnqueuer(context, cls, jobId);
+                we = new JobWorkEnqueuer(context, cn, jobId);
             } else {
-                we = new CompatWorkEnqueuer(context, cls);
+                we = new CompatWorkEnqueuer(context, cn);
             }
-            sClassWorkEnqueuer.put(cls, we);
+            sClassWorkEnqueuer.put(cn, we);
         }
         return we;
     }
diff --git a/compat/java/android/support/v4/app/NotificationCompat.java b/compat/java/android/support/v4/app/NotificationCompat.java
index a93c763..9129cc7 100644
--- a/compat/java/android/support/v4/app/NotificationCompat.java
+++ b/compat/java/android/support/v4/app/NotificationCompat.java
@@ -48,8 +48,7 @@
 import java.util.List;
 
 /**
- * Helper for accessing features in {@link android.app.Notification}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.app.Notification}.
  */
 public class NotificationCompat {
 
@@ -591,7 +590,7 @@
     }
 
     /**
-     * Interface for appcompat to extend v4 builder with media style.
+     * Interface for appcompat to extend compat builder with media style.
      *
      * @hide
      */
diff --git a/compat/java/android/support/v4/app/RemoteInput.java b/compat/java/android/support/v4/app/RemoteInput.java
index 6efa63c..48f7744 100644
--- a/compat/java/android/support/v4/app/RemoteInput.java
+++ b/compat/java/android/support/v4/app/RemoteInput.java
@@ -31,7 +31,7 @@
 import java.util.Set;
 
 /**
- * Helper for using the {@link android.app.RemoteInput} API in a backwards compatible fashion.
+ * Helper for using the {@link android.app.RemoteInput}.
  */
 public final class RemoteInput extends RemoteInputCompatBase.RemoteInput {
     private static final String TAG = "RemoteInput";
diff --git a/compat/java/android/support/v4/app/ServiceCompat.java b/compat/java/android/support/v4/app/ServiceCompat.java
index e4d7cdf..1676ee8 100644
--- a/compat/java/android/support/v4/app/ServiceCompat.java
+++ b/compat/java/android/support/v4/app/ServiceCompat.java
@@ -28,7 +28,7 @@
 import java.lang.annotation.RetentionPolicy;
 
 /**
- * Helper for accessing features in {@link android.app.Service} in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.app.Service}.
  */
 public final class ServiceCompat {
 
diff --git a/compat/java/android/support/v4/content/ContextCompat.java b/compat/java/android/support/v4/content/ContextCompat.java
index 9d8f551..fdbe32f 100644
--- a/compat/java/android/support/v4/content/ContextCompat.java
+++ b/compat/java/android/support/v4/content/ContextCompat.java
@@ -37,8 +37,7 @@
 import java.io.File;
 
 /**
- * Helper for accessing features in {@link android.content.Context}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.content.Context}.
  */
 public class ContextCompat {
     private static final String TAG = "ContextCompat";
diff --git a/compat/java/android/support/v4/content/IntentCompat.java b/compat/java/android/support/v4/content/IntentCompat.java
index 387274e..cf6b012 100644
--- a/compat/java/android/support/v4/content/IntentCompat.java
+++ b/compat/java/android/support/v4/content/IntentCompat.java
@@ -23,8 +23,7 @@
 import android.support.annotation.RequiresApi;
 
 /**
- * Helper for accessing features in {@link android.content.Intent}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.content.Intent}.
  */
 public final class IntentCompat {
 
diff --git a/compat/java/android/support/v4/content/ParallelExecutorCompat.java b/compat/java/android/support/v4/content/ParallelExecutorCompat.java
index 19a6988..4dc4168 100644
--- a/compat/java/android/support/v4/content/ParallelExecutorCompat.java
+++ b/compat/java/android/support/v4/content/ParallelExecutorCompat.java
@@ -21,8 +21,7 @@
 import java.util.concurrent.Executor;
 
 /**
- * Helper for accessing a shared parallel Executor instance
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing a shared parallel Executor instance.
  *
  * @deprecated Use {@link AsyncTask} directly.
  */
diff --git a/compat/java/android/support/v4/content/pm/ActivityInfoCompat.java b/compat/java/android/support/v4/content/pm/ActivityInfoCompat.java
index 4014404..61bed07 100644
--- a/compat/java/android/support/v4/content/pm/ActivityInfoCompat.java
+++ b/compat/java/android/support/v4/content/pm/ActivityInfoCompat.java
@@ -17,8 +17,7 @@
 package android.support.v4.content.pm;
 
 /**
- * Helper for accessing features in {@link android.content.pm.ActivityInfo}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.content.pm.ActivityInfo}.
  */
 public final class ActivityInfoCompat {
 
diff --git a/compat/java/android/support/v4/content/pm/ShortcutInfoCompat.java b/compat/java/android/support/v4/content/pm/ShortcutInfoCompat.java
index f761339..eb892c6 100644
--- a/compat/java/android/support/v4/content/pm/ShortcutInfoCompat.java
+++ b/compat/java/android/support/v4/content/pm/ShortcutInfoCompat.java
@@ -30,8 +30,7 @@
 import java.util.Arrays;
 
 /**
- * Helper for accessing features in {@link android.content.pm.ShortcutInfo}
- * introduced after API level 25 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.content.pm.ShortcutInfo}.
  */
 public class ShortcutInfoCompat {
 
diff --git a/compat/java/android/support/v4/content/pm/ShortcutManagerCompat.java b/compat/java/android/support/v4/content/pm/ShortcutManagerCompat.java
index 9cfc3d3..189e51d 100644
--- a/compat/java/android/support/v4/content/pm/ShortcutManagerCompat.java
+++ b/compat/java/android/support/v4/content/pm/ShortcutManagerCompat.java
@@ -32,8 +32,7 @@
 import android.text.TextUtils;
 
 /**
- * Helper for accessing features in {@link android.content.pm.ShortcutManager}
- * in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.content.pm.ShortcutManager}.
  */
 public class ShortcutManagerCompat {
 
diff --git a/compat/java/android/support/v4/content/res/ResourcesCompat.java b/compat/java/android/support/v4/content/res/ResourcesCompat.java
index 526b79b..f20fb35 100644
--- a/compat/java/android/support/v4/content/res/ResourcesCompat.java
+++ b/compat/java/android/support/v4/content/res/ResourcesCompat.java
@@ -46,8 +46,7 @@
 import java.io.IOException;
 
 /**
- * Helper for accessing features in {@link android.content.res.Resources}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.content.res.Resources}.
  */
 public final class ResourcesCompat {
     private static final String TAG = "ResourcesCompat";
diff --git a/compat/java/android/support/v4/database/DatabaseUtilsCompat.java b/compat/java/android/support/v4/database/DatabaseUtilsCompat.java
index dd53ced..f3d3077 100644
--- a/compat/java/android/support/v4/database/DatabaseUtilsCompat.java
+++ b/compat/java/android/support/v4/database/DatabaseUtilsCompat.java
@@ -19,8 +19,7 @@
 import android.text.TextUtils;
 
 /**
- * Helper for accessing features in {@link android.database.DatabaseUtils}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.database.DatabaseUtils}.
  */
 public final class DatabaseUtilsCompat {
 
diff --git a/compat/java/android/support/v4/graphics/BitmapCompat.java b/compat/java/android/support/v4/graphics/BitmapCompat.java
index f417938..20caf80 100644
--- a/compat/java/android/support/v4/graphics/BitmapCompat.java
+++ b/compat/java/android/support/v4/graphics/BitmapCompat.java
@@ -15,13 +15,12 @@
  */
 package android.support.v4.graphics;
 
-import android.support.annotation.RequiresApi;
 import android.graphics.Bitmap;
 import android.os.Build;
+import android.support.annotation.RequiresApi;
 
 /**
- * Helper for accessing features in {@link android.graphics.Bitmap}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.graphics.Bitmap}.
  */
 public final class BitmapCompat {
     static class BitmapCompatBaseImpl {
diff --git a/compat/java/android/support/v4/graphics/PaintCompat.java b/compat/java/android/support/v4/graphics/PaintCompat.java
index 2bc676c..95eee0c 100644
--- a/compat/java/android/support/v4/graphics/PaintCompat.java
+++ b/compat/java/android/support/v4/graphics/PaintCompat.java
@@ -21,7 +21,7 @@
 import android.support.annotation.NonNull;
 
 /**
- * Helper for accessing features in {@link Paint} in a backwards compatible fashion.
+ * Helper for accessing features in {@link Paint}.
  */
 public final class PaintCompat {
 
diff --git a/compat/java/android/support/v4/graphics/TypefaceCompat.java b/compat/java/android/support/v4/graphics/TypefaceCompat.java
index 59be452..01b9016 100644
--- a/compat/java/android/support/v4/graphics/TypefaceCompat.java
+++ b/compat/java/android/support/v4/graphics/TypefaceCompat.java
@@ -37,7 +37,7 @@
 import java.io.File;
 
 /**
- * Helper for accessing features in {@link Typeface} in a backwards compatible fashion.
+ * Helper for accessing features in {@link Typeface}.
  * @hide
  */
 @RestrictTo(LIBRARY_GROUP)
diff --git a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
index d6ee9bc..79fb9c6 100644
--- a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
+++ b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
@@ -39,12 +39,11 @@
 import java.lang.reflect.Method;
 
 /**
- * Helper for accessing features in {@link android.graphics.drawable.Drawable}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.graphics.drawable.Drawable}.
  */
 public final class DrawableCompat {
     /**
-     * Interface implementation that doesn't use anything about v4 APIs.
+     * Interface implementation that doesn't use anything about platform-specific APIs.
      */
     static class DrawableCompatBaseImpl {
         public void jumpToCurrentState(Drawable drawable) {
diff --git a/compat/java/android/support/v4/graphics/drawable/IconCompat.java b/compat/java/android/support/v4/graphics/drawable/IconCompat.java
index c268d8b..715b80b 100644
--- a/compat/java/android/support/v4/graphics/drawable/IconCompat.java
+++ b/compat/java/android/support/v4/graphics/drawable/IconCompat.java
@@ -36,8 +36,7 @@
 import android.support.annotation.VisibleForTesting;
 
 /**
- * Helper for accessing features in {@link android.graphics.drawable.Icon}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.graphics.drawable.Icon}.
  */
 public class IconCompat {
 
diff --git a/compat/java/android/support/v4/hardware/display/DisplayManagerCompat.java b/compat/java/android/support/v4/hardware/display/DisplayManagerCompat.java
index 17907ae..50d246b 100644
--- a/compat/java/android/support/v4/hardware/display/DisplayManagerCompat.java
+++ b/compat/java/android/support/v4/hardware/display/DisplayManagerCompat.java
@@ -26,8 +26,7 @@
 import java.util.WeakHashMap;
 
 /**
- * Helper for accessing features in {@link android.hardware.display.DisplayManager}
- * in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.hardware.display.DisplayManager}.
  */
 public abstract class DisplayManagerCompat {
     private static final WeakHashMap<Context, DisplayManagerCompat> sInstances =
diff --git a/compat/java/android/support/v4/net/ConnectivityManagerCompat.java b/compat/java/android/support/v4/net/ConnectivityManagerCompat.java
index ae47a9b..5a39586 100644
--- a/compat/java/android/support/v4/net/ConnectivityManagerCompat.java
+++ b/compat/java/android/support/v4/net/ConnectivityManagerCompat.java
@@ -40,8 +40,7 @@
 import java.lang.annotation.RetentionPolicy;
 
 /**
- * Helper for accessing features in {@link ConnectivityManager} introduced after
- * API level 16 in a backwards compatible fashion.
+ * Helper for accessing features in {@link ConnectivityManager}.
  */
 public final class ConnectivityManagerCompat {
 
diff --git a/compat/java/android/support/v4/net/TrafficStatsCompat.java b/compat/java/android/support/v4/net/TrafficStatsCompat.java
index a9cb423..1b62101 100644
--- a/compat/java/android/support/v4/net/TrafficStatsCompat.java
+++ b/compat/java/android/support/v4/net/TrafficStatsCompat.java
@@ -16,18 +16,17 @@
 
 package android.support.v4.net;
 
-import android.support.annotation.RequiresApi;
 import android.net.TrafficStats;
 import android.os.Build;
 import android.os.ParcelFileDescriptor;
+import android.support.annotation.RequiresApi;
 
 import java.net.DatagramSocket;
 import java.net.Socket;
 import java.net.SocketException;
 
 /**
- * Helper for accessing features in {@link TrafficStats} introduced after API level 14
- * in a backwards compatible fashion.
+ * Helper for accessing features in {@link TrafficStats}.
  */
 public final class TrafficStatsCompat {
     static class TrafficStatsCompatBaseImpl {
diff --git a/compat/java/android/support/v4/os/AsyncTaskCompat.java b/compat/java/android/support/v4/os/AsyncTaskCompat.java
index 0fb3c84..ebad879 100644
--- a/compat/java/android/support/v4/os/AsyncTaskCompat.java
+++ b/compat/java/android/support/v4/os/AsyncTaskCompat.java
@@ -21,8 +21,7 @@
 import java.util.concurrent.Executor;
 
 /**
- * Helper for accessing features in {@link android.os.AsyncTask}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.os.AsyncTask}.
  *
  * @deprecated Use {@link android.os.AsyncTask} directly.
  */
diff --git a/compat/java/android/support/v4/os/EnvironmentCompat.java b/compat/java/android/support/v4/os/EnvironmentCompat.java
index 90c8e15..3e9e7f9 100644
--- a/compat/java/android/support/v4/os/EnvironmentCompat.java
+++ b/compat/java/android/support/v4/os/EnvironmentCompat.java
@@ -24,7 +24,7 @@
 import java.io.IOException;
 
 /**
- * Helper for accessing features in {@link Environment} in a backwards compatible fashion.
+ * Helper for accessing features in {@link Environment}.
  */
 public final class EnvironmentCompat {
     private static final String TAG = "EnvironmentCompat";
diff --git a/compat/java/android/support/v4/os/LocaleHelper.java b/compat/java/android/support/v4/os/LocaleHelper.java
index f6fe7da..8b933b9 100644
--- a/compat/java/android/support/v4/os/LocaleHelper.java
+++ b/compat/java/android/support/v4/os/LocaleHelper.java
@@ -23,7 +23,7 @@
 import java.util.Locale;
 
 /**
- * Helper to deal with new {@link Locale} APIs in a backwards compatible fashion.
+ * Helper to deal with new {@link Locale} APIs.
  *
  * @hide
  */
diff --git a/compat/java/android/support/v4/os/LocaleListCompat.java b/compat/java/android/support/v4/os/LocaleListCompat.java
index d4a32f2..9ccc35b 100644
--- a/compat/java/android/support/v4/os/LocaleListCompat.java
+++ b/compat/java/android/support/v4/os/LocaleListCompat.java
@@ -27,7 +27,7 @@
 import java.util.Locale;
 
 /**
- * Helper for accessing features in LocaleList in a backwards compatible fashion.
+ * Helper for accessing features in {@link LocaleList}.
  */
 public final class LocaleListCompat {
     static final LocaleListInterface IMPL;
diff --git a/compat/java/android/support/v4/os/ParcelableCompat.java b/compat/java/android/support/v4/os/ParcelableCompat.java
index 663da56..ee83122 100644
--- a/compat/java/android/support/v4/os/ParcelableCompat.java
+++ b/compat/java/android/support/v4/os/ParcelableCompat.java
@@ -20,7 +20,7 @@
 import android.os.Parcelable;
 
 /**
- * Helper for accessing features in {@link android.os.Parcelable} in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.os.Parcelable}.
  *
  * @deprecated Use {@link android.os.Parcelable.ClassLoaderCreator} directly.
  */
diff --git a/compat/java/android/support/v4/util/DebugUtils.java b/compat/java/android/support/v4/util/DebugUtils.java
index 8937b7e..7e35afa 100644
--- a/compat/java/android/support/v4/util/DebugUtils.java
+++ b/compat/java/android/support/v4/util/DebugUtils.java
@@ -21,8 +21,7 @@
 import android.support.annotation.RestrictTo;
 
 /**
- * Helper for accessing features in {@link android.util.DebugUtils}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.util.DebugUtils}.
  *
  * @hide
  */
diff --git a/compat/java/android/support/v4/util/LogWriter.java b/compat/java/android/support/v4/util/LogWriter.java
index 2889f4d..0ab3298 100644
--- a/compat/java/android/support/v4/util/LogWriter.java
+++ b/compat/java/android/support/v4/util/LogWriter.java
@@ -24,8 +24,7 @@
 import java.io.Writer;
 
 /**
- * Helper for accessing features in {@link android.util.LogWriter}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.util.LogWriter}.
  *
  * @hide
  */
diff --git a/compat/java/android/support/v4/util/TimeUtils.java b/compat/java/android/support/v4/util/TimeUtils.java
index 0174e3a..2d1ce53 100644
--- a/compat/java/android/support/v4/util/TimeUtils.java
+++ b/compat/java/android/support/v4/util/TimeUtils.java
@@ -23,8 +23,7 @@
 import java.io.PrintWriter;
 
 /**
- * Helper for accessing features in {@link android.util.TimeUtils}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.util.TimeUtils}.
  *
  * @hide
  */
diff --git a/compat/java/android/support/v4/view/AccessibilityDelegateCompat.java b/compat/java/android/support/v4/view/AccessibilityDelegateCompat.java
index 22c2590..66b2cef 100644
--- a/compat/java/android/support/v4/view/AccessibilityDelegateCompat.java
+++ b/compat/java/android/support/v4/view/AccessibilityDelegateCompat.java
@@ -29,8 +29,7 @@
 import android.view.accessibility.AccessibilityNodeProvider;
 
 /**
- * Helper for accessing {@link AccessibilityDelegate} introduced after
- * API level 4 in a backwards compatible fashion.
+ * Helper for accessing {@link AccessibilityDelegate}.
  * <p>
  * <strong>Note:</strong> On platform versions prior to
  * {@link android.os.Build.VERSION_CODES#M API 23}, delegate methods on
diff --git a/compat/java/android/support/v4/view/KeyEventCompat.java b/compat/java/android/support/v4/view/KeyEventCompat.java
index 03c668d..85fe686 100644
--- a/compat/java/android/support/v4/view/KeyEventCompat.java
+++ b/compat/java/android/support/v4/view/KeyEventCompat.java
@@ -20,8 +20,7 @@
 import android.view.View;
 
 /**
- * Helper for accessing features in {@link KeyEvent} introduced after
- * API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link KeyEvent}.
  *
  * @deprecated Use {@link KeyEvent} directly.
  */
diff --git a/compat/java/android/support/v4/view/LayoutInflaterCompat.java b/compat/java/android/support/v4/view/LayoutInflaterCompat.java
index 50f494b..0cb2969 100644
--- a/compat/java/android/support/v4/view/LayoutInflaterCompat.java
+++ b/compat/java/android/support/v4/view/LayoutInflaterCompat.java
@@ -28,8 +28,7 @@
 import java.lang.reflect.Field;
 
 /**
- * Helper for accessing features in {@link LayoutInflater}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link LayoutInflater}.
  */
 public final class LayoutInflaterCompat {
     private static final String TAG = "LayoutInflaterCompatHC";
diff --git a/compat/java/android/support/v4/view/MenuCompat.java b/compat/java/android/support/v4/view/MenuCompat.java
index 4f0890a..bbac379 100644
--- a/compat/java/android/support/v4/view/MenuCompat.java
+++ b/compat/java/android/support/v4/view/MenuCompat.java
@@ -19,8 +19,7 @@
 import android.view.MenuItem;
 
 /**
- * Helper for accessing features in {@link android.view.Menu}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.view.Menu}.
  */
 public final class MenuCompat {
     /**
diff --git a/compat/java/android/support/v4/view/MenuItemCompat.java b/compat/java/android/support/v4/view/MenuItemCompat.java
index d7e96cc..bbbc2e5 100644
--- a/compat/java/android/support/v4/view/MenuItemCompat.java
+++ b/compat/java/android/support/v4/view/MenuItemCompat.java
@@ -29,8 +29,7 @@
 import android.view.View;
 
 /**
- * Helper for accessing features in {@link android.view.MenuItem}
- * introduced after API level 14 in a backwards compatible fashion.
+ * Helper for accessing features in {@link android.view.MenuItem}.
  * <p class="note"><strong>Note:</strong> You cannot get an instance of this class. Instead,
  * it provides <em>static</em> methods that correspond to the methods in {@link
  * android.view.MenuItem}, but take a {@link android.view.MenuItem} object as an additional
diff --git a/compat/java/android/support/v4/view/MotionEventCompat.java b/compat/java/android/support/v4/view/MotionEventCompat.java
index 0e43ae0..367eda2 100644
--- a/compat/java/android/support/v4/view/MotionEventCompat.java
+++ b/compat/java/android/support/v4/view/MotionEventCompat.java
@@ -19,8 +19,7 @@
 import android.view.MotionEvent;
 
 /**
- * Helper for accessing features in {@link MotionEvent} introduced
- * after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link MotionEvent}.
  */
 public final class MotionEventCompat {
     /**
diff --git a/compat/java/android/support/v4/view/ScaleGestureDetectorCompat.java b/compat/java/android/support/v4/view/ScaleGestureDetectorCompat.java
index afe7a53..6233dff 100644
--- a/compat/java/android/support/v4/view/ScaleGestureDetectorCompat.java
+++ b/compat/java/android/support/v4/view/ScaleGestureDetectorCompat.java
@@ -20,7 +20,7 @@
 import android.view.ScaleGestureDetector;
 
 /**
- * Helper for accessing features in {@link ScaleGestureDetector} in a backwards compatible fashion.
+ * Helper for accessing features in {@link ScaleGestureDetector}.
  */
 public final class ScaleGestureDetectorCompat {
     private ScaleGestureDetectorCompat() {}
diff --git a/compat/java/android/support/v4/view/VelocityTrackerCompat.java b/compat/java/android/support/v4/view/VelocityTrackerCompat.java
index 327f21a..d536085 100644
--- a/compat/java/android/support/v4/view/VelocityTrackerCompat.java
+++ b/compat/java/android/support/v4/view/VelocityTrackerCompat.java
@@ -19,8 +19,7 @@
 import android.view.VelocityTracker;
 
 /**
- * Helper for accessing features in {@link VelocityTracker}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link VelocityTracker}.
  *
  * @deprecated Use {@link VelocityTracker} directly.
  */
diff --git a/compat/java/android/support/v4/view/ViewCompat.java b/compat/java/android/support/v4/view/ViewCompat.java
index 14a0102..9a66cec 100644
--- a/compat/java/android/support/v4/view/ViewCompat.java
+++ b/compat/java/android/support/v4/view/ViewCompat.java
@@ -61,8 +61,7 @@
 import java.util.WeakHashMap;
 
 /**
- * Helper for accessing features in {@link View} introduced after API
- * level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link View}.
  */
 public class ViewCompat {
     private static final String TAG = "ViewCompat";
diff --git a/compat/java/android/support/v4/view/ViewConfigurationCompat.java b/compat/java/android/support/v4/view/ViewConfigurationCompat.java
index 4ae2260..f14b806 100644
--- a/compat/java/android/support/v4/view/ViewConfigurationCompat.java
+++ b/compat/java/android/support/v4/view/ViewConfigurationCompat.java
@@ -26,7 +26,7 @@
 import java.lang.reflect.Method;
 
 /**
- * Helper for accessing features in {@link ViewConfiguration} in a backwards compatible fashion.
+ * Helper for accessing features in {@link ViewConfiguration}.
  *
  * @deprecated Use {@link ViewConfiguration} directly.
  */
diff --git a/compat/java/android/support/v4/view/ViewGroupCompat.java b/compat/java/android/support/v4/view/ViewGroupCompat.java
index c6f72f1..528d70e 100644
--- a/compat/java/android/support/v4/view/ViewGroupCompat.java
+++ b/compat/java/android/support/v4/view/ViewGroupCompat.java
@@ -25,8 +25,7 @@
 import android.view.accessibility.AccessibilityEvent;
 
 /**
- * Helper for accessing features in {@link ViewGroup}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link ViewGroup}.
  */
 public final class ViewGroupCompat {
 
diff --git a/compat/java/android/support/v4/view/ViewParentCompat.java b/compat/java/android/support/v4/view/ViewParentCompat.java
index d51c9b4..bb1587e 100644
--- a/compat/java/android/support/v4/view/ViewParentCompat.java
+++ b/compat/java/android/support/v4/view/ViewParentCompat.java
@@ -27,8 +27,7 @@
 import android.view.accessibility.AccessibilityEvent;
 
 /**
- * Helper for accessing features in {@link ViewParent}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link ViewParent}.
  */
 public final class ViewParentCompat {
 
diff --git a/compat/java/android/support/v4/view/WindowCompat.java b/compat/java/android/support/v4/view/WindowCompat.java
index 9a0773e..cdf4789 100644
--- a/compat/java/android/support/v4/view/WindowCompat.java
+++ b/compat/java/android/support/v4/view/WindowCompat.java
@@ -20,8 +20,7 @@
 import android.view.Window;
 
 /**
- * Helper for accessing features in {@link Window} introduced after API
- * level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link Window}.
  */
 public final class WindowCompat {
     /**
diff --git a/compat/java/android/support/v4/view/accessibility/AccessibilityEventCompat.java b/compat/java/android/support/v4/view/accessibility/AccessibilityEventCompat.java
index 61eff1c..924b482 100644
--- a/compat/java/android/support/v4/view/accessibility/AccessibilityEventCompat.java
+++ b/compat/java/android/support/v4/view/accessibility/AccessibilityEventCompat.java
@@ -22,7 +22,7 @@
 import android.view.accessibility.AccessibilityRecord;
 
 /**
- * Helper for accessing features in {@link AccessibilityEvent} in a backwards compatible fashion.
+ * Helper for accessing features in {@link AccessibilityEvent}.
  */
 public final class AccessibilityEventCompat {
 
diff --git a/compat/java/android/support/v4/view/accessibility/AccessibilityManagerCompat.java b/compat/java/android/support/v4/view/accessibility/AccessibilityManagerCompat.java
index 112d809..5767f74 100644
--- a/compat/java/android/support/v4/view/accessibility/AccessibilityManagerCompat.java
+++ b/compat/java/android/support/v4/view/accessibility/AccessibilityManagerCompat.java
@@ -25,7 +25,7 @@
 import java.util.List;
 
 /**
- * Helper for accessing features in {@link AccessibilityManager} in a backwards compatible fashion.
+ * Helper for accessing features in {@link AccessibilityManager}.
  */
 public final class AccessibilityManagerCompat {
     /**
diff --git a/compat/java/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.java b/compat/java/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.java
index c336585..211a0bc 100644
--- a/compat/java/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.java
+++ b/compat/java/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.java
@@ -16,17 +16,16 @@
 
 package android.support.v4.view.accessibility;
 
-import android.support.annotation.RequiresApi;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
- * Helper for accessing {@link android.view.accessibility.AccessibilityNodeProvider}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing {@link android.view.accessibility.AccessibilityNodeProvider}.
  */
 public class AccessibilityNodeProviderCompat {
 
diff --git a/compat/java/android/support/v4/view/accessibility/AccessibilityRecordCompat.java b/compat/java/android/support/v4/view/accessibility/AccessibilityRecordCompat.java
index ca29ef3..395af49 100644
--- a/compat/java/android/support/v4/view/accessibility/AccessibilityRecordCompat.java
+++ b/compat/java/android/support/v4/view/accessibility/AccessibilityRecordCompat.java
@@ -27,7 +27,7 @@
 import java.util.List;
 
 /**
- * Helper for accessing {@link AccessibilityRecord} in a backwards compatible fashion.
+ * Helper for accessing {@link AccessibilityRecord}.
  */
 public class AccessibilityRecordCompat {
 
diff --git a/compat/java/android/support/v4/view/accessibility/AccessibilityWindowInfoCompat.java b/compat/java/android/support/v4/view/accessibility/AccessibilityWindowInfoCompat.java
index d95ea27..be5d29f 100644
--- a/compat/java/android/support/v4/view/accessibility/AccessibilityWindowInfoCompat.java
+++ b/compat/java/android/support/v4/view/accessibility/AccessibilityWindowInfoCompat.java
@@ -22,8 +22,7 @@
 import android.view.accessibility.AccessibilityWindowInfo;
 
 /**
- * Helper for accessing {@link android.view.accessibility.AccessibilityWindowInfo}
- * in a backwards compatible fashion.
+ * Helper for accessing {@link android.view.accessibility.AccessibilityWindowInfo}.
  */
 public class AccessibilityWindowInfoCompat {
     private Object mInfo;
diff --git a/compat/java/android/support/v4/widget/CompoundButtonCompat.java b/compat/java/android/support/v4/widget/CompoundButtonCompat.java
index 25d876e..a858b09 100644
--- a/compat/java/android/support/v4/widget/CompoundButtonCompat.java
+++ b/compat/java/android/support/v4/widget/CompoundButtonCompat.java
@@ -16,13 +16,13 @@
 
 package android.support.v4.widget;
 
-import android.support.annotation.RequiresApi;
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 import android.support.v4.graphics.drawable.DrawableCompat;
 import android.util.Log;
 import android.widget.CompoundButton;
@@ -30,8 +30,7 @@
 import java.lang.reflect.Field;
 
 /**
- * Helper for accessing {@link android.widget.CompoundButton} methods introduced after
- * API level 4 in a backwards compatible fashion.
+ * Helper for accessing {@link android.widget.CompoundButton}.
  */
 public final class CompoundButtonCompat {
 
diff --git a/compat/java/android/support/v4/widget/EdgeEffectCompat.java b/compat/java/android/support/v4/widget/EdgeEffectCompat.java
index 8be2d9f..9293e60 100644
--- a/compat/java/android/support/v4/widget/EdgeEffectCompat.java
+++ b/compat/java/android/support/v4/widget/EdgeEffectCompat.java
@@ -22,7 +22,7 @@
 import android.widget.EdgeEffect;
 
 /**
- * Helper for accessing {@link android.widget.EdgeEffect} in a backwards compatible fashion.
+ * Helper for accessing {@link android.widget.EdgeEffect}.
  *
  * This class is used to access {@link android.widget.EdgeEffect} on platform versions
  * that support it. When running on older platforms it will result in no-ops. It should
diff --git a/compat/java/android/support/v4/widget/ImageViewCompat.java b/compat/java/android/support/v4/widget/ImageViewCompat.java
index df3ace5..acaaf63 100644
--- a/compat/java/android/support/v4/widget/ImageViewCompat.java
+++ b/compat/java/android/support/v4/widget/ImageViewCompat.java
@@ -24,8 +24,7 @@
 import android.widget.ImageView;
 
 /**
- * Helper for accessing features in {@link ImageView} introduced in later platform releases
- * in a backwards compatible fashion.
+ * Helper for accessing features in {@link ImageView}.
  */
 public class ImageViewCompat {
     interface ImageViewCompatImpl {
diff --git a/compat/java/android/support/v4/widget/ListPopupWindowCompat.java b/compat/java/android/support/v4/widget/ListPopupWindowCompat.java
index 691d5b6..ab86e58 100644
--- a/compat/java/android/support/v4/widget/ListPopupWindowCompat.java
+++ b/compat/java/android/support/v4/widget/ListPopupWindowCompat.java
@@ -22,7 +22,7 @@
 import android.widget.ListPopupWindow;
 
 /**
- * Helper for accessing features in {@link ListPopupWindow} in a backwards compatible fashion.
+ * Helper for accessing features in {@link ListPopupWindow}.
  */
 public final class ListPopupWindowCompat {
     private ListPopupWindowCompat() {
diff --git a/compat/java/android/support/v4/widget/PopupMenuCompat.java b/compat/java/android/support/v4/widget/PopupMenuCompat.java
index d8b65b5..639a84b 100644
--- a/compat/java/android/support/v4/widget/PopupMenuCompat.java
+++ b/compat/java/android/support/v4/widget/PopupMenuCompat.java
@@ -21,7 +21,7 @@
 import android.widget.PopupMenu;
 
 /**
- * Helper for accessing features in {@link PopupMenu} in a backwards compatible fashion.
+ * Helper for accessing features in {@link PopupMenu}.
  */
 public final class PopupMenuCompat {
     private PopupMenuCompat() {
diff --git a/compat/java/android/support/v4/widget/PopupWindowCompat.java b/compat/java/android/support/v4/widget/PopupWindowCompat.java
index 5018e04..d846b40 100644
--- a/compat/java/android/support/v4/widget/PopupWindowCompat.java
+++ b/compat/java/android/support/v4/widget/PopupWindowCompat.java
@@ -29,7 +29,7 @@
 import java.lang.reflect.Method;
 
 /**
- * Helper for accessing features in PopupWindow in a backwards compatible fashion.
+ * Helper for accessing features in {@link PopupWindow}.
  */
 public final class PopupWindowCompat {
 
diff --git a/compat/java/android/support/v4/widget/SearchViewCompat.java b/compat/java/android/support/v4/widget/SearchViewCompat.java
index 83cb0fc..b176467 100644
--- a/compat/java/android/support/v4/widget/SearchViewCompat.java
+++ b/compat/java/android/support/v4/widget/SearchViewCompat.java
@@ -25,8 +25,7 @@
 import android.widget.TextView;
 
 /**
- * Helper for accessing features in {@link SearchView}
- * introduced after API level 4 in a backwards compatible fashion.
+ * Helper for accessing features in {@link SearchView}.
  *
  * @deprecated Use {@link SearchView} directly.
  */
diff --git a/compat/java/android/support/v4/widget/TextViewCompat.java b/compat/java/android/support/v4/widget/TextViewCompat.java
index b163c73..d7ca21e 100644
--- a/compat/java/android/support/v4/widget/TextViewCompat.java
+++ b/compat/java/android/support/v4/widget/TextViewCompat.java
@@ -37,7 +37,7 @@
 import java.lang.reflect.Field;
 
 /**
- * Helper for accessing features in {@link TextView} in a backwards compatible fashion.
+ * Helper for accessing features in {@link TextView}.
  */
 public final class TextViewCompat {
 
diff --git a/core-ui/java/android/support/v4/widget/CircularProgressDrawable.java b/core-ui/java/android/support/v4/widget/CircularProgressDrawable.java
index 3e56e08..ac29541 100644
--- a/core-ui/java/android/support/v4/widget/CircularProgressDrawable.java
+++ b/core-ui/java/android/support/v4/widget/CircularProgressDrawable.java
@@ -612,7 +612,7 @@
      * A private class to do all the drawing of CircularProgressDrawable, which includes background,
      * progress spinner and the arrow. This class is to separate drawing from animation.
      */
-    private class Ring {
+    private static class Ring {
         final RectF mTempBounds = new RectF();
         final Paint mPaint = new Paint();
         final Paint mArrowPaint = new Paint();
diff --git a/transition/api14/android/support/transition/GhostViewApi14.java b/transition/api14/android/support/transition/GhostViewApi14.java
index c918651..38acef2 100644
--- a/transition/api14/android/support/transition/GhostViewApi14.java
+++ b/transition/api14/android/support/transition/GhostViewApi14.java
@@ -150,8 +150,8 @@
         final int[] viewLocation = new int[2];
         getLocationOnScreen(location);
         mView.getLocationOnScreen(viewLocation);
-        viewLocation[0] -= mView.getTranslationX();
-        viewLocation[1] -= mView.getTranslationY();
+        viewLocation[0] = (int) (viewLocation[0] - mView.getTranslationX());
+        viewLocation[1] = (int) (viewLocation[1] - mView.getTranslationY());
         mDeltaX = viewLocation[0] - location[0];
         mDeltaY = viewLocation[1] - location[1];
         // Monitor invalidation of the target view.
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepFragmentTest.java b/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepFragmentTest.java
index bb8e94b..bd245aa 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepFragmentTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepFragmentTest.java
@@ -18,6 +18,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.timeout;
@@ -62,7 +63,7 @@
                 actions.add(new GuidedAction.Builder().id(1000).title("OK").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -80,13 +81,13 @@
         GuidedStepTestFragment.Provider second = mockProvider(secondFragmentName);
 
         GuidedStepFragmentTestActivity activity = launchTestActivity(firstFragmentName);
-        verify(first, times(1)).onCreate(any(Bundle.class));
-        verify(first, times(1)).onCreateGuidance(any(Bundle.class));
-        verify(first, times(1)).onCreateActions(any(List.class), any(Bundle.class));
-        verify(first, times(1)).onCreateButtonActions(any(List.class), any(Bundle.class));
+        verify(first, times(1)).onCreate(nullable(Bundle.class));
+        verify(first, times(1)).onCreateGuidance(nullable(Bundle.class));
+        verify(first, times(1)).onCreateActions(any(List.class), nullable(Bundle.class));
+        verify(first, times(1)).onCreateButtonActions(any(List.class), nullable(Bundle.class));
         verify(first, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
-        verify(first, times(1)).onViewStateRestored(any(Bundle.class));
+                nullable(Bundle.class), any(View.class));
+        verify(first, times(1)).onViewStateRestored(nullable(Bundle.class));
         verify(first, times(1)).onStart();
         verify(first, times(1)).onResume();
 
@@ -97,13 +98,13 @@
         verify(first, times(1)).onPause();
         verify(first, times(1)).onStop();
         verify(first, times(1)).onDestroyView();
-        verify(second, times(1)).onCreate(any(Bundle.class));
-        verify(second, times(1)).onCreateGuidance(any(Bundle.class));
-        verify(second, times(1)).onCreateActions(any(List.class), any(Bundle.class));
-        verify(second, times(1)).onCreateButtonActions(any(List.class), any(Bundle.class));
-        verify(second, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
-        verify(second, times(1)).onViewStateRestored(any(Bundle.class));
+        verify(second, times(1)).onCreate(nullable(Bundle.class));
+        verify(second, times(1)).onCreateGuidance(nullable(Bundle.class));
+        verify(second, times(1)).onCreateActions(any(List.class), nullable(Bundle.class));
+        verify(second, times(1)).onCreateButtonActions(any(List.class), nullable(Bundle.class));
+        verify(second, times(1)).onCreateView(any(LayoutInflater.class), nullable(ViewGroup.class),
+                nullable(Bundle.class), any(View.class));
+        verify(second, times(1)).onViewStateRestored(nullable(Bundle.class));
         verify(second, times(1)).onStart();
         verify(second, times(1)).onResume();
 
@@ -114,10 +115,10 @@
         verify(second, times(1)).onStop();
         verify(second, times(1)).onDestroyView();
         verify(second, times(1)).onDestroy();
-        verify(first, times(1)).onCreateActions(any(List.class), any(Bundle.class));
+        verify(first, times(1)).onCreateActions(any(List.class), nullable(Bundle.class));
         verify(first, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
-        verify(first, times(2)).onViewStateRestored(any(Bundle.class));
+                nullable(Bundle.class), any(View.class));
+        verify(first, times(2)).onViewStateRestored(nullable(Bundle.class));
         verify(first, times(2)).onStart();
         verify(first, times(2)).onResume();
 
@@ -143,7 +144,7 @@
                         .autoSaveRestoreEnabled(false).build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -174,11 +175,11 @@
         });
         PollingCheck.waitFor(new EnterTransitionFinish(second));
         verify(first, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         verify(first, times(1)).onDestroy();
-        verify(second, times(2)).onCreate(any(Bundle.class));
+        verify(second, times(2)).onCreate(nullable(Bundle.class));
         verify(second, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         verify(second, times(1)).onDestroy();
 
         sendKey(KeyEvent.KEYCODE_BACK);
@@ -189,10 +190,10 @@
         verify(second, times(2)).onDestroy();
         assertEquals("modified text", first.getFragment().findActionById(1001).getTitle());
         assertEquals("text", first.getFragment().findActionById(1002).getTitle());
-        verify(first, times(2)).onCreate(any(Bundle.class));
-        verify(first, times(2)).onCreateActions(any(List.class), any(Bundle.class));
+        verify(first, times(2)).onCreate(nullable(Bundle.class));
+        verify(first, times(2)).onCreateActions(any(List.class), nullable(Bundle.class));
         verify(first, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
     }
 
 
@@ -207,7 +208,7 @@
                 actions.add(new GuidedAction.Builder().id(1001).title("Finish activity").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -241,7 +242,7 @@
                 actions.add(new GuidedAction.Builder().id(1001).title("Finish fragments").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -284,7 +285,7 @@
                 return null;
             }
         }).when(first).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -296,7 +297,7 @@
                         .title("list").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Boolean>() {
             @Override
             public Boolean answer(InvocationOnMock invocation) {
@@ -345,14 +346,14 @@
 
         PollingCheck.waitFor(new EnterTransitionFinish(second));
         verify(second, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
 
         // test expand sub action when return to first fragment
         expandSubActionInOnCreateView[0] = true;
         sendKey(KeyEvent.KEYCODE_BACK);
         PollingCheck.waitFor(new EnterTransitionFinish(first));
         verify(first, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         assertTrue(first.getFragment().isExpanded());
 
         sendKey(KeyEvent.KEYCODE_BACK);
@@ -378,7 +379,7 @@
                         .title("list").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Boolean>() {
             @Override
             public Boolean answer(InvocationOnMock invocation) {
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepSupportFragmentTest.java b/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepSupportFragmentTest.java
index f2ac612..5741181 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepSupportFragmentTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/GuidedStepSupportFragmentTest.java
@@ -21,6 +21,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.timeout;
@@ -65,7 +66,7 @@
                 actions.add(new GuidedAction.Builder().id(1000).title("OK").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -83,13 +84,13 @@
         GuidedStepTestSupportFragment.Provider second = mockProvider(secondFragmentName);
 
         GuidedStepSupportFragmentTestActivity activity = launchTestActivity(firstFragmentName);
-        verify(first, times(1)).onCreate(any(Bundle.class));
-        verify(first, times(1)).onCreateGuidance(any(Bundle.class));
-        verify(first, times(1)).onCreateActions(any(List.class), any(Bundle.class));
-        verify(first, times(1)).onCreateButtonActions(any(List.class), any(Bundle.class));
+        verify(first, times(1)).onCreate(nullable(Bundle.class));
+        verify(first, times(1)).onCreateGuidance(nullable(Bundle.class));
+        verify(first, times(1)).onCreateActions(any(List.class), nullable(Bundle.class));
+        verify(first, times(1)).onCreateButtonActions(any(List.class), nullable(Bundle.class));
         verify(first, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
-        verify(first, times(1)).onViewStateRestored(any(Bundle.class));
+                nullable(Bundle.class), any(View.class));
+        verify(first, times(1)).onViewStateRestored(nullable(Bundle.class));
         verify(first, times(1)).onStart();
         verify(first, times(1)).onResume();
 
@@ -100,13 +101,13 @@
         verify(first, times(1)).onPause();
         verify(first, times(1)).onStop();
         verify(first, times(1)).onDestroyView();
-        verify(second, times(1)).onCreate(any(Bundle.class));
-        verify(second, times(1)).onCreateGuidance(any(Bundle.class));
-        verify(second, times(1)).onCreateActions(any(List.class), any(Bundle.class));
-        verify(second, times(1)).onCreateButtonActions(any(List.class), any(Bundle.class));
+        verify(second, times(1)).onCreate(nullable(Bundle.class));
+        verify(second, times(1)).onCreateGuidance(nullable(Bundle.class));
+        verify(second, times(1)).onCreateActions(any(List.class), nullable(Bundle.class));
+        verify(second, times(1)).onCreateButtonActions(any(List.class), nullable(Bundle.class));
         verify(second, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
-        verify(second, times(1)).onViewStateRestored(any(Bundle.class));
+                nullable(Bundle.class), any(View.class));
+        verify(second, times(1)).onViewStateRestored(nullable(Bundle.class));
         verify(second, times(1)).onStart();
         verify(second, times(1)).onResume();
 
@@ -117,10 +118,10 @@
         verify(second, times(1)).onStop();
         verify(second, times(1)).onDestroyView();
         verify(second, times(1)).onDestroy();
-        verify(first, times(1)).onCreateActions(any(List.class), any(Bundle.class));
+        verify(first, times(1)).onCreateActions(any(List.class), nullable(Bundle.class));
         verify(first, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
-        verify(first, times(2)).onViewStateRestored(any(Bundle.class));
+                nullable(Bundle.class), any(View.class));
+        verify(first, times(2)).onViewStateRestored(nullable(Bundle.class));
         verify(first, times(2)).onStart();
         verify(first, times(2)).onResume();
 
@@ -146,7 +147,7 @@
                         .autoSaveRestoreEnabled(false).build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -177,11 +178,11 @@
         });
         PollingCheck.waitFor(new EnterTransitionFinish(second));
         verify(first, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         verify(first, times(1)).onDestroy();
-        verify(second, times(2)).onCreate(any(Bundle.class));
+        verify(second, times(2)).onCreate(nullable(Bundle.class));
         verify(second, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         verify(second, times(1)).onDestroy();
 
         sendKey(KeyEvent.KEYCODE_BACK);
@@ -192,10 +193,10 @@
         verify(second, times(2)).onDestroy();
         assertEquals("modified text", first.getFragment().findActionById(1001).getTitle());
         assertEquals("text", first.getFragment().findActionById(1002).getTitle());
-        verify(first, times(2)).onCreate(any(Bundle.class));
-        verify(first, times(2)).onCreateActions(any(List.class), any(Bundle.class));
+        verify(first, times(2)).onCreate(nullable(Bundle.class));
+        verify(first, times(2)).onCreateActions(any(List.class), nullable(Bundle.class));
         verify(first, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
     }
 
 
@@ -210,7 +211,7 @@
                 actions.add(new GuidedAction.Builder().id(1001).title("Finish activity").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -244,7 +245,7 @@
                 actions.add(new GuidedAction.Builder().id(1001).title("Finish fragments").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -287,7 +288,7 @@
                 return null;
             }
         }).when(first).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) {
@@ -299,7 +300,7 @@
                         .title("list").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Boolean>() {
             @Override
             public Boolean answer(InvocationOnMock invocation) {
@@ -348,14 +349,14 @@
 
         PollingCheck.waitFor(new EnterTransitionFinish(second));
         verify(second, times(1)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
 
         // test expand sub action when return to first fragment
         expandSubActionInOnCreateView[0] = true;
         sendKey(KeyEvent.KEYCODE_BACK);
         PollingCheck.waitFor(new EnterTransitionFinish(first));
         verify(first, times(2)).onCreateView(any(LayoutInflater.class), any(ViewGroup.class),
-                any(Bundle.class), any(View.class));
+                nullable(Bundle.class), any(View.class));
         assertTrue(first.getFragment().isExpanded());
 
         sendKey(KeyEvent.KEYCODE_BACK);
@@ -381,7 +382,7 @@
                         .title("list").build());
                 return null;
             }
-        }).when(first).onCreateActions(any(List.class), any(Bundle.class));
+        }).when(first).onCreateActions(any(List.class), nullable(Bundle.class));
         doAnswer(new Answer<Boolean>() {
             @Override
             public Boolean answer(InvocationOnMock invocation) {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatAutoCompleteTextView.java b/v7/appcompat/src/android/support/v7/widget/AppCompatAutoCompleteTextView.java
index 96a481e..5b0a2f8 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatAutoCompleteTextView.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatAutoCompleteTextView.java
@@ -32,18 +32,18 @@
 import android.widget.AutoCompleteTextView;
 
 /**
- * A {@link AutoCompleteTextView} which supports compatible features on older version of the
+ * A {@link AutoCompleteTextView} which supports compatible features on older versions of the
  * platform, including:
  * <ul>
- *     <li>Supports {@link R.attr#textAllCaps} style attribute which works back to
- *     {@link android.os.Build.VERSION_CODES#GINGERBREAD Gingerbread}.</li>
  *     <li>Allows dynamic tint of its background via the background tint methods in
  *     {@link android.support.v4.view.ViewCompat}.</li>
  *     <li>Allows setting of the background tint using {@link R.attr#backgroundTint} and
  *     {@link R.attr#backgroundTintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link AutoCompleteTextView} in your layouts.
+ * <p>This will automatically be used when you use {@link AutoCompleteTextView} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatAutoCompleteTextView extends AutoCompleteTextView implements
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatButton.java b/v7/appcompat/src/android/support/v7/widget/AppCompatButton.java
index 6fb6223..04698e2 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatButton.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatButton.java
@@ -34,19 +34,19 @@
 import android.widget.Button;
 
 /**
- * A {@link Button} which supports compatible features on older version of the platform,
+ * A {@link Button} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
- *     <li>Supports {@link R.attr#textAllCaps} style attribute which works back to
- *     {@link android.os.Build.VERSION_CODES#GINGERBREAD Gingerbread}.</li>
  *     <li>Allows dynamic tint of its background via the background tint methods in
  *     {@link android.support.v4.view.ViewCompat}.</li>
  *     <li>Allows setting of the background tint using {@link R.attr#backgroundTint} and
  *     {@link R.attr#backgroundTintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link android.widget.Button} in your
- * layouts. You should only need to manually use this class when writing custom views.</p>
+ * <p>This will automatically be used when you use {@link Button} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
+ * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatButton extends Button implements TintableBackgroundView {
 
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatCheckBox.java b/v7/appcompat/src/android/support/v7/widget/AppCompatCheckBox.java
index 5809d25..0d4f4cb 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatCheckBox.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatCheckBox.java
@@ -32,7 +32,7 @@
 import android.widget.CheckBox;
 
 /**
- * A {@link CheckBox} which supports compatible features on older version of the platform,
+ * A {@link CheckBox} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
  *     <li>Allows dynamic tint of its background via the background tint methods in
@@ -41,7 +41,9 @@
  *     {@link R.attr#buttonTintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link CheckBox} in your layouts.
+ * <p>This will automatically be used when you use {@link CheckBox} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatCheckBox extends CheckBox implements TintableCompoundButton {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatCheckedTextView.java b/v7/appcompat/src/android/support/v7/widget/AppCompatCheckedTextView.java
index 1725c24..921f0a2 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatCheckedTextView.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatCheckedTextView.java
@@ -23,9 +23,11 @@
 import android.widget.CheckedTextView;
 
 /**
- * A {@link CheckedTextView} which supports compatible features on older version of the platform.
+ * A {@link CheckedTextView} which supports compatible features on older versions of the platform.
  *
- * <p>This will automatically be used when you use {@link CheckedTextView} in your layouts.
+ * <p>This will automatically be used when you use {@link CheckedTextView} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatCheckedTextView extends CheckedTextView {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatEditText.java b/v7/appcompat/src/android/support/v7/widget/AppCompatEditText.java
index d93f399..406e364 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatEditText.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatEditText.java
@@ -31,19 +31,19 @@
 import android.widget.EditText;
 
 /**
- * A {@link EditText} which supports compatible features on older version of the platform,
+ * A {@link EditText} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
- *     <li>Supports {@link R.attr#textAllCaps} style attribute which works back to
- *     {@link android.os.Build.VERSION_CODES#GINGERBREAD Gingerbread}.</li>
  *     <li>Allows dynamic tint of its background via the background tint methods in
  *     {@link android.support.v4.view.ViewCompat}.</li>
  *     <li>Allows setting of the background tint using {@link R.attr#backgroundTint} and
  *     {@link R.attr#backgroundTintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link android.widget.EditText} in your
- * layouts. You should only need to manually use this class when writing custom views.</p>
+ * <p>This will automatically be used when you use {@link EditText} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
+ * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatEditText extends EditText implements TintableBackgroundView {
 
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatImageButton.java b/v7/appcompat/src/android/support/v7/widget/AppCompatImageButton.java
index ff09c08..90e6aa9 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatImageButton.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatImageButton.java
@@ -37,7 +37,7 @@
 import android.widget.ImageView;
 
 /**
- * A {@link ImageButton} which supports compatible features on older version of the platform,
+ * A {@link ImageButton} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
  *     <li>Allows dynamic tint of its background via the background tint methods in
@@ -50,8 +50,10 @@
  *     {@link R.attr#tintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link android.widget.ImageButton} in your
- * layouts. You should only need to manually use this class when writing custom views.</p>
+ * <p>This will automatically be used when you use {@link ImageButton} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
+ * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatImageButton extends ImageButton implements TintableBackgroundView,
         TintableImageSourceView {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatImageView.java b/v7/appcompat/src/android/support/v7/widget/AppCompatImageView.java
index a0eb9ee..0844f9a 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatImageView.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatImageView.java
@@ -36,7 +36,7 @@
 import android.widget.ImageView;
 
 /**
- * A {@link ImageView} which supports compatible features on older version of the platform,
+ * A {@link ImageView} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
  *     <li>Allows dynamic tint of its background via the background tint methods in
@@ -49,8 +49,10 @@
  *     {@link R.attr#tintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link android.widget.ImageView} in your
- * layouts. You should only need to manually use this class when writing custom views.</p>
+ * <p>This will automatically be used when you use {@link ImageView} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
+ * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatImageView extends ImageView implements TintableBackgroundView,
         TintableImageSourceView {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatRadioButton.java b/v7/appcompat/src/android/support/v7/widget/AppCompatRadioButton.java
index 8aa22f3..2a6bac0 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatRadioButton.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatRadioButton.java
@@ -32,7 +32,7 @@
 import android.widget.RadioButton;
 
 /**
- * A {@link RadioButton} which supports compatible features on older version of the platform,
+ * A {@link RadioButton} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
  *     <li>Allows dynamic tint of its background via the background tint methods in
@@ -41,7 +41,9 @@
  *     {@link R.attr#buttonTintMode}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link RadioButton} in your layouts.
+ * <p>This will automatically be used when you use {@link RadioButton} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatRadioButton extends RadioButton implements TintableCompoundButton {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatRatingBar.java b/v7/appcompat/src/android/support/v7/widget/AppCompatRatingBar.java
index d8bac12..b03b842 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatRatingBar.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatRatingBar.java
@@ -24,9 +24,11 @@
 import android.widget.RatingBar;
 
 /**
- * A {@link RatingBar} which supports compatible features on older version of the platform.
+ * A {@link RatingBar} which supports compatible features on older versions of the platform.
  *
- * <p>This will automatically be used when you use {@link RatingBar} in your layouts.
+ * <p>This will automatically be used when you use {@link RatingBar} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatRatingBar extends RatingBar {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java b/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
index bf05f4d..674e46b 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
@@ -24,9 +24,11 @@
 import android.widget.SeekBar;
 
 /**
- * A {@link SeekBar} which supports compatible features on older version of the platform.
+ * A {@link SeekBar} which supports compatible features on older versions of the platform.
  *
- * <p>This will automatically be used when you use {@link SeekBar} in your layouts.
+ * <p>This will automatically be used when you use {@link SeekBar} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatSeekBar extends SeekBar {
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatTextView.java b/v7/appcompat/src/android/support/v7/widget/AppCompatTextView.java
index 39f8c1f..12d0ff9 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatTextView.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatTextView.java
@@ -35,11 +35,9 @@
 import android.widget.TextView;
 
 /**
- * A {@link TextView} which supports compatible features on older version of the platform,
+ * A {@link TextView} which supports compatible features on older versions of the platform,
  * including:
  * <ul>
- *     <li>Supports {@link R.attr#textAllCaps} style attribute which works back to
- *     {@link android.os.Build.VERSION_CODES#GINGERBREAD Gingerbread}.</li>
  *     <li>Allows dynamic tint of its background via the background tint methods in
  *     {@link android.support.v4.view.ViewCompat}.</li>
  *     <li>Allows setting of the background tint using {@link R.attr#backgroundTint} and
@@ -54,7 +52,9 @@
  *     {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH Ice Cream Sandwich}.</li>
  * </ul>
  *
- * <p>This will automatically be used when you use {@link TextView} in your layouts.
+ * <p>This will automatically be used when you use {@link TextView} in your layouts
+ * and the top-level activity / dialog is provided by
+ * <a href="{@docRoot}topic/libraries/support-library/packages.html#v7-appcompat">appcompat</a>.
  * You should only need to manually use this class when writing custom views.</p>
  */
 public class AppCompatTextView extends TextView implements TintableBackgroundView,
diff --git a/v7/appcompat/tests/res/values/styles.xml b/v7/appcompat/tests/res/values/styles.xml
index c08930a..bdbedb8 100644
--- a/v7/appcompat/tests/res/values/styles.xml
+++ b/v7/appcompat/tests/res/values/styles.xml
@@ -72,10 +72,10 @@
     </style>
 
     <style name="TextView_SansSerif">
-        <item name="android:fontFamily">@string/font_sans_serif</item>
+        <item name="fontFamily">@string/font_sans_serif</item>
     </style>
 
     <style name="TextView_Serif">
-        <item name="android:fontFamily">@string/font_serif</item>
+        <item name="fontFamily">@string/font_serif</item>
     </style>
 </resources>
diff --git a/v7/appcompat/tests/src/android/support/v7/app/AlertDialogTest.java b/v7/appcompat/tests/src/android/support/v7/app/AlertDialogTest.java
index 53cc4b5..a990a57 100644
--- a/v7/appcompat/tests/src/android/support/v7/app/AlertDialogTest.java
+++ b/v7/appcompat/tests/src/android/support/v7/app/AlertDialogTest.java
@@ -40,8 +40,8 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
@@ -1014,7 +1014,7 @@
         // Verify that a Message with expected 'what' field has been posted on our mock handler
         ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
         verify(messageHandler, times(1)).sendMessageDelayed(
-                messageArgumentCaptor.capture(), anyInt());
+                messageArgumentCaptor.capture(), anyLong());
         assertEquals("Button clicked", whichButtonClicked, messageArgumentCaptor.getValue().what);
         // Verify that the dialog is no longer showing
         assertFalse("Dialog is not showing", mAlertDialog.isShowing());
diff --git a/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java b/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
index 5470329..dd0c146 100644
--- a/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
+++ b/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
@@ -256,6 +256,8 @@
 
         TextViewCompat.setTextAppearance(textView, R.style.TextView_Serif);
         Typeface secondTypeface = textView.getTypeface();
+        assertNotNull(firstTypeface);
+        assertNotNull(secondTypeface);
         assertNotEquals(firstTypeface, secondTypeface);
     }
 }