Fix and suppress an assortment of ErrorProne warnings.

Test: ./gradlew assembleErrorProne now has fewer warnings
Change-Id: I445c7dfd36b33243771eb7821562ca468851ad8a
diff --git a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
index 8976080..77a58f8 100644
--- a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
@@ -17,7 +17,6 @@
 package android.support
 
 import com.android.build.gradle.LibraryExtension
-import com.android.build.gradle.api.AndroidSourceSet
 import com.android.build.gradle.api.LibraryVariant
 import com.android.builder.core.BuilderConstants
 import com.google.common.collect.ImmutableMap
@@ -184,12 +183,13 @@
                 if (libraryVariant.getBuildType().getName().equals("errorProne")) {
                     libraryVariant.getJavaCompile().setToolChain(toolChain);
 
-                    // TODO(aurimas): remove this once all these warnings are fixed.
                     libraryVariant.getJavaCompile().options.compilerArgs += [
-                            '-Xep:ArrayToString:WARN',
+                            // TODO(aurimas): remove this once all these warnings are fixed.
                             '-Xep:RectIntersectReturnValueIgnored:WARN',
-                            '-Xep:FallThrough:WARN',
-                            '-XDcompilePolicy=simple' // Workaround for b/36098770
+                            '-XDcompilePolicy=simple', // Workaround for b/36098770
+
+                            // Enforce the following checks.
+                            '-Xep:MissingOverride:ERROR',
                     ]
                 }
             }
diff --git a/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java b/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java
index dd40b45..ffc57a1 100644
--- a/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java
+++ b/compat/java/android/support/v4/graphics/TypefaceCompatBaseImpl.java
@@ -165,6 +165,7 @@
     }
 
     @Nullable
+    @Override
     public Typeface createFromFontFamilyFilesResourceEntry(
             FontFamilyFilesResourceEntry filesEntry, Resources resources, int id, int style) {
         Typeface typeface = createFromResources(filesEntry, resources, id, style);
diff --git a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
index 53f43ef..d6ee9bc 100644
--- a/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
+++ b/compat/java/android/support/v4/graphics/drawable/DrawableCompat.java
@@ -544,6 +544,7 @@
      *
      * @see #wrap(Drawable)
      */
+    @SuppressWarnings("TypeParameterUnusedInFormals")
     public static <T extends Drawable> T unwrap(@NonNull Drawable drawable) {
         if (drawable instanceof DrawableWrapper) {
             return (T) ((DrawableWrapper) drawable).getWrappedDrawable();
diff --git a/compat/java/android/support/v4/os/LocaleListInterface.java b/compat/java/android/support/v4/os/LocaleListInterface.java
index 9332d51..ce310e6 100644
--- a/compat/java/android/support/v4/os/LocaleListInterface.java
+++ b/compat/java/android/support/v4/os/LocaleListInterface.java
@@ -46,10 +46,13 @@
     @IntRange(from = -1)
     int indexOf(Locale locale);
 
-    boolean     equals(Object other);
+    @Override
+    boolean equals(Object other);
 
+    @Override
     int hashCode();
 
+    @Override
     String toString();
 
     String toLanguageTags();
diff --git a/compat/java/android/support/v4/provider/FontsContractCompat.java b/compat/java/android/support/v4/provider/FontsContractCompat.java
index b2ca184..c465a4c 100644
--- a/compat/java/android/support/v4/provider/FontsContractCompat.java
+++ b/compat/java/android/support/v4/provider/FontsContractCompat.java
@@ -184,6 +184,7 @@
 
         try {
             return sBackgroundThread.postAndWait(new Callable<Typeface>() {
+                @Override
                 public Typeface call() throws Exception {
                     FontFamilyResult result = fetchFonts(context, null, request);
                     if (result.getStatusCode() == FontFamilyResult.STATUS_OK) {
diff --git a/compat/java/android/support/v4/util/ArraySet.java b/compat/java/android/support/v4/util/ArraySet.java
index ae6c3e6..ab080fa 100644
--- a/compat/java/android/support/v4/util/ArraySet.java
+++ b/compat/java/android/support/v4/util/ArraySet.java
@@ -156,6 +156,7 @@
         return ~end;
     }
 
+    @SuppressWarnings("ArrayToString")
     private void allocArrays(final int size) {
         if (size == (BASE_SIZE * 2)) {
             synchronized (ArraySet.class) {
@@ -195,6 +196,7 @@
         mArray = new Object[size];
     }
 
+    @SuppressWarnings("ArrayToString")
     private static void freeArrays(final int[] hashes, final Object[] array, final int size) {
         if (hashes.length == (BASE_SIZE * 2)) {
             synchronized (ArraySet.class) {
diff --git a/compat/java/android/support/v4/util/SimpleArrayMap.java b/compat/java/android/support/v4/util/SimpleArrayMap.java
index aab757b..06e68f0 100644
--- a/compat/java/android/support/v4/util/SimpleArrayMap.java
+++ b/compat/java/android/support/v4/util/SimpleArrayMap.java
@@ -159,6 +159,7 @@
         return ~end;
     }
 
+    @SuppressWarnings("ArrayToString")
     private void allocArrays(final int size) {
         if (size == (BASE_SIZE*2)) {
             synchronized (ArrayMap.class) {
@@ -194,6 +195,7 @@
         mArray = new Object[size<<1];
     }
 
+    @SuppressWarnings("ArrayToString")
     private static void freeArrays(final int[] hashes, final Object[] array, final int size) {
         if (hashes.length == (BASE_SIZE*2)) {
             synchronized (ArrayMap.class) {
diff --git a/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java b/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java
index 709e3d4..bf313a0 100644
--- a/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java
+++ b/compat/jellybean/android/support/v4/app/NotificationCompatJellybean.java
@@ -347,6 +347,7 @@
         }
     }
 
+    @SuppressWarnings("LiteralClassName")
     private static boolean ensureActionReflectionReadyLocked() {
         if (sActionsAccessFailed) {
             return false;
diff --git a/core-ui/java/android/support/v4/widget/DrawerLayout.java b/core-ui/java/android/support/v4/widget/DrawerLayout.java
index 8b1ce1e..fe35212 100644
--- a/core-ui/java/android/support/v4/widget/DrawerLayout.java
+++ b/core-ui/java/android/support/v4/widget/DrawerLayout.java
@@ -1273,8 +1273,9 @@
         }
         mScrimOpacity = scrimOpacity;
 
-        // "|" used on purpose; both need to run.
-        if (mLeftDragger.continueSettling(true) | mRightDragger.continueSettling(true)) {
+        boolean leftDraggerSettling = mLeftDragger.continueSettling(true);
+        boolean rightDraggerSettling = mRightDragger.continueSettling(true);
+        if (leftDraggerSettling || rightDraggerSettling) {
             ViewCompat.postInvalidateOnAnimation(this);
         }
     }
@@ -1430,6 +1431,7 @@
         return false;
     }
 
+    @SuppressWarnings("ShortCircuitBoolean")
     @Override
     public boolean onInterceptTouchEvent(MotionEvent ev) {
         final int action = ev.getActionMasked();
diff --git a/design/src/android/support/design/widget/CollapsingTextHelper.java b/design/src/android/support/design/widget/CollapsingTextHelper.java
index f2b1a7f..a33cabc 100644
--- a/design/src/android/support/design/widget/CollapsingTextHelper.java
+++ b/design/src/android/support/design/widget/CollapsingTextHelper.java
@@ -271,14 +271,14 @@
     }
 
     void setCollapsedTypeface(Typeface typeface) {
-        if (mCollapsedTypeface != typeface) {
+        if (areTypefacesDifferent(mCollapsedTypeface, typeface)) {
             mCollapsedTypeface = typeface;
             recalculate();
         }
     }
 
     void setExpandedTypeface(Typeface typeface) {
-        if (mExpandedTypeface != typeface) {
+        if (areTypefacesDifferent(mExpandedTypeface, typeface)) {
             mExpandedTypeface = typeface;
             recalculate();
         }
@@ -542,6 +542,10 @@
         ViewCompat.postInvalidateOnAnimation(mView);
     }
 
+    private boolean areTypefacesDifferent(Typeface first, Typeface second) {
+        return (first != null && !first.equals(second)) || (first == null && second != null);
+    }
+
     private void calculateUsingTextSize(final float textSize) {
         if (mText == null) return;
 
@@ -555,14 +559,14 @@
         if (isClose(textSize, mCollapsedTextSize)) {
             newTextSize = mCollapsedTextSize;
             mScale = 1f;
-            if (mCurrentTypeface != mCollapsedTypeface) {
+            if (areTypefacesDifferent(mCurrentTypeface, mCollapsedTypeface)) {
                 mCurrentTypeface = mCollapsedTypeface;
                 updateDrawText = true;
             }
             availableWidth = collapsedWidth;
         } else {
             newTextSize = mExpandedTextSize;
-            if (mCurrentTypeface != mExpandedTypeface) {
+            if (areTypefacesDifferent(mCurrentTypeface, mExpandedTypeface)) {
                 mCurrentTypeface = mExpandedTypeface;
                 updateDrawText = true;
             }
diff --git a/design/src/android/support/design/widget/CoordinatorLayout.java b/design/src/android/support/design/widget/CoordinatorLayout.java
index 6528592..5ee3b32 100644
--- a/design/src/android/support/design/widget/CoordinatorLayout.java
+++ b/design/src/android/support/design/widget/CoordinatorLayout.java
@@ -1781,6 +1781,7 @@
         mNestedScrollingTarget = null;
     }
 
+    @Override
     public void onNestedScroll(View target, int dxConsumed, int dyConsumed,
             int dxUnconsumed, int dyUnconsumed) {
         onNestedScroll(target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed,
diff --git a/design/src/android/support/design/widget/TextInputLayout.java b/design/src/android/support/design/widget/TextInputLayout.java
index 3993efe..bd02bc3 100644
--- a/design/src/android/support/design/widget/TextInputLayout.java
+++ b/design/src/android/support/design/widget/TextInputLayout.java
@@ -291,7 +291,8 @@
      * @param typeface typeface to use, or {@code null} to use the default.
      */
     public void setTypeface(@Nullable Typeface typeface) {
-        if (typeface != mTypeface) {
+        if ((mTypeface != null && !mTypeface.equals(typeface))
+                || (mTypeface == null && typeface != null)) {
             mTypeface = typeface;
 
             mCollapsingTextHelper.setTypefaces(typeface);
diff --git a/v13/java/android/support/v13/app/FragmentPagerAdapter.java b/v13/java/android/support/v13/app/FragmentPagerAdapter.java
index a62d14c..082f883 100644
--- a/v13/java/android/support/v13/app/FragmentPagerAdapter.java
+++ b/v13/java/android/support/v13/app/FragmentPagerAdapter.java
@@ -87,6 +87,7 @@
         }
     }
 
+    @SuppressWarnings("ReferenceEquality")
     @Override
     public Object instantiateItem(ViewGroup container, int position) {
         if (mCurTransaction == null) {
@@ -125,6 +126,7 @@
         mCurTransaction.detach((Fragment)object);
     }
 
+    @SuppressWarnings("ReferenceEquality")
     @Override
     public void setPrimaryItem(ViewGroup container, int position, Object object) {
         Fragment fragment = (Fragment)object;
diff --git a/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java b/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java
index 2f51156..8907fec 100644
--- a/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java
+++ b/v13/java/android/support/v13/app/FragmentStatePagerAdapter.java
@@ -148,6 +148,7 @@
         mCurTransaction.remove(fragment);
     }
 
+    @SuppressWarnings("ReferenceEquality")
     @Override
     public void setPrimaryItem(ViewGroup container, int position, Object object) {
         Fragment fragment = (Fragment)object;
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java b/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
index 51b3c34..3d9647a 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatActivity.java
@@ -185,6 +185,7 @@
         getDelegate().onStop();
     }
 
+    @SuppressWarnings("TypeParameterUnusedInFormals")
     @Override
     public <T extends View> T findViewById(@IdRes int id) {
         return getDelegate().findViewById(id);
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java b/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
index b5144cd..a2fac6f 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDelegate.java
@@ -292,6 +292,7 @@
      *
      * @return The view if found or null otherwise.
      */
+    @SuppressWarnings("TypeParameterUnusedInFormals")
     @Nullable
     public abstract <T extends View> T findViewById(@IdRes int id);
 
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java b/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java
index 1b9dd79..1daee3d 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDelegateImplV9.java
@@ -226,6 +226,7 @@
         invalidateOptionsMenu();
     }
 
+    @SuppressWarnings("TypeParameterUnusedInFormals")
     @Nullable
     @Override
     public <T extends View> T findViewById(@IdRes int id) {
diff --git a/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java b/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java
index f41e4b0..076b1ef 100644
--- a/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java
+++ b/v7/appcompat/src/android/support/v7/app/AppCompatDialog.java
@@ -93,6 +93,7 @@
         getDelegate().setContentView(view, params);
     }
 
+    @SuppressWarnings("TypeParameterUnusedInFormals")
     @Nullable
     @Override
     public <T extends View> T findViewById(@IdRes int id) {
diff --git a/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java b/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java
index 57ba846..79059c7 100644
--- a/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java
+++ b/v7/appcompat/src/android/support/v7/app/ToolbarActionBar.java
@@ -257,7 +257,7 @@
     @Override
     public void setDisplayOptions(@DisplayOptions int options, @DisplayOptions int mask) {
         final int currentOptions = mDecorToolbar.getDisplayOptions();
-        mDecorToolbar.setDisplayOptions(options & mask | currentOptions & ~mask);
+        mDecorToolbar.setDisplayOptions((options & mask) | (currentOptions & ~mask));
     }
 
     @Override
diff --git a/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java b/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java
index f048e55..02fe5e8 100644
--- a/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java
+++ b/v7/appcompat/src/android/support/v7/app/TwilightCalculator.java
@@ -46,6 +46,7 @@
     private static final float J0 = 0.0009f;
 
     // correction for civil twilight
+    @SuppressWarnings("FloatingPointLiteralPrecision")
     private static final float ALTIDUTE_CORRECTION_CIVIL_TWILIGHT = -0.104719755f;
 
     // coefficients for calculating Equation of Center.
@@ -53,6 +54,7 @@
     private static final float C2 = 0.000349066f;
     private static final float C3 = 0.000005236f;
 
+    @SuppressWarnings("FloatingPointLiteralPrecision")
     private static final float OBLIQUITY = 0.40927971f;
 
     // Java time on Jan 1, 2000 12:00 UTC.
@@ -82,6 +84,7 @@
      * @param latitude latitude in degrees.
      * @param longitude latitude in degrees.
      */
+    @SuppressWarnings("FloatingPointLiteralPrecision")
     public void calculateTwilight(long time, double latitude, double longitude) {
         final float daysSince2000 = (float) (time - UTC_2000) / DateUtils.DAY_IN_MILLIS;
 
diff --git a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
index 5f4cf95..5142224 100644
--- a/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
+++ b/v7/appcompat/src/android/support/v7/graphics/drawable/DrawerArrowDrawable.java
@@ -386,7 +386,7 @@
         final float barThickness = mPaint.getStrokeWidth();
         final int remainingSpace = (int) (bounds.height() - barThickness * 3 - mBarGap * 2);
         float yOffset = (remainingSpace / 4) * 2; // making sure it is a multiple of 2.
-        yOffset += barThickness * 1.5 + mBarGap;
+        yOffset += barThickness * 1.5f + mBarGap;
 
         canvas.translate(bounds.centerX(), yOffset);
         if (mSpin) {
diff --git a/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java b/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java
index 40db06f..0cc5722 100644
--- a/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java
+++ b/v7/appcompat/src/android/support/v7/view/SupportMenuInflater.java
@@ -539,7 +539,7 @@
             return itemAdded;
         }
 
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"})
         private <T> T newInstance(String className, Class<?>[] constructorSignature,
                 Object[] arguments) {
             try {
diff --git a/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java b/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java
index 67aa1b8..cc20211 100644
--- a/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java
+++ b/v7/appcompat/src/android/support/v7/view/menu/ActionMenuItemView.java
@@ -218,12 +218,12 @@
             if (width > mMaxIconSize) {
                 final float scale = (float) mMaxIconSize / width;
                 width = mMaxIconSize;
-                height *= scale;
+                height = (int) (width * scale);
             }
             if (height > mMaxIconSize) {
                 final float scale = (float) mMaxIconSize / height;
                 height = mMaxIconSize;
-                width *= scale;
+                width = (int) (width * scale);
             }
             icon.setBounds(0, 0, width, height);
         }
diff --git a/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java b/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java
index 517771b..76e06da 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActionMenuView.java
@@ -788,7 +788,7 @@
         }
     }
 
-    private class ActionMenuPresenterCallback implements ActionMenuPresenter.Callback {
+    private static class ActionMenuPresenterCallback implements ActionMenuPresenter.Callback {
         ActionMenuPresenterCallback() {
         }
 
diff --git a/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java b/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java
index 2aa4cb5..698f1a3 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActivityChooserModel.java
@@ -849,7 +849,7 @@
     /**
      * Represents an activity.
      */
-    public final class ActivityResolveInfo implements Comparable<ActivityResolveInfo> {
+    public static final class ActivityResolveInfo implements Comparable<ActivityResolveInfo> {
 
         /**
          * The {@link ResolveInfo} of the activity.
@@ -912,7 +912,7 @@
     /**
      * Default activity sorter implementation.
      */
-    private final class DefaultSorter implements ActivitySorter {
+    private static final class DefaultSorter implements ActivitySorter {
         private static final float WEIGHT_DECAY_COEFFICIENT = 0.95f;
 
         private final Map<ComponentName, ActivityResolveInfo> mPackageNameToActivityMap =
diff --git a/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java b/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java
index c9e2e1b..94624ad 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActivityChooserView.java
@@ -539,7 +539,7 @@
         // Default activity button.
         final int activityCount = mAdapter.getActivityCount();
         final int historySize = mAdapter.getHistorySize();
-        if (activityCount==1 || activityCount > 1 && historySize > 0) {
+        if (activityCount == 1 || (activityCount > 1 && historySize > 0)) {
             mDefaultActivityButton.setVisibility(VISIBLE);
             ResolveInfo activity = mAdapter.getDefaultActivity();
             PackageManager packageManager = getContext().getPackageManager();
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java b/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
index 0b8895c..bf05f4d 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatSeekBar.java
@@ -49,7 +49,7 @@
     }
 
     @Override
-    protected void onDraw(Canvas canvas) {
+    protected synchronized void onDraw(Canvas canvas) {
         super.onDraw(canvas);
         mAppCompatSeekBarHelper.drawTickMarks(canvas);
     }
diff --git a/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java b/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java
index cc68d11..b47a568 100644
--- a/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java
+++ b/v7/appcompat/src/android/support/v7/widget/ButtonBarLayout.java
@@ -129,7 +129,7 @@
                 final int secondVisible = getNextVisibleChildIndex(firstVisible + 1);
                 if (secondVisible >= 0) {
                     minHeight += getChildAt(secondVisible).getPaddingTop()
-                            + PEEK_BUTTON_DP * getResources().getDisplayMetrics().density;
+                            + (int) (PEEK_BUTTON_DP * getResources().getDisplayMetrics().density);
                 }
             } else {
                 minHeight += getPaddingBottom();
diff --git a/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java b/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java
index c7a3aee..6abdb75 100644
--- a/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java
+++ b/v7/appcompat/src/android/support/v7/widget/LinearLayoutCompat.java
@@ -771,7 +771,7 @@
         // shrink them if they extend beyond our current bounds. If we skipped
         // measurement on any children, we need to measure them now.
         int delta = heightSize - mTotalLength;
-        if (skippedMeasure || delta != 0 && totalWeight > 0.0f) {
+        if (skippedMeasure || (delta != 0 && totalWeight > 0.0f)) {
             float weightSum = mWeightSum > 0.0f ? mWeightSum : totalWeight;
 
             mTotalLength = 0;
@@ -1155,7 +1155,7 @@
         // shrink them if they extend beyond our current bounds. If we skipped
         // measurement on any children, we need to measure them now.
         int delta = widthSize - mTotalLength;
-        if (skippedMeasure || delta != 0 && totalWeight > 0.0f) {
+        if (skippedMeasure || (delta != 0 && totalWeight > 0.0f)) {
             float weightSum = mWeightSum > 0.0f ? mWeightSum : totalWeight;
 
             maxAscent[0] = maxAscent[1] = maxAscent[2] = maxAscent[3] = -1;
diff --git a/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java b/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java
index 72c20b5..44916ca 100644
--- a/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java
+++ b/v7/appcompat/src/android/support/v7/widget/SwitchCompat.java
@@ -168,7 +168,7 @@
     /** Bottom bound for drawing the switch track and thumb. */
     private int mSwitchBottom;
 
-    private TextPaint mTextPaint;
+    private final TextPaint mTextPaint;
     private ColorStateList mTextColors;
     private Layout mOnLayout;
     private Layout mOffLayout;
@@ -386,9 +386,10 @@
      * {@link #setSwitchTypeface(Typeface, int)} to get the appearance
      * that you actually want.
      */
-    public void setSwitchTypeface(Typeface tf) {
-        if (mTextPaint.getTypeface() != tf) {
-            mTextPaint.setTypeface(tf);
+    public void setSwitchTypeface(Typeface typeface) {
+        if ((mTextPaint.getTypeface() != null && !mTextPaint.getTypeface().equals(typeface))
+                || (mTextPaint.getTypeface() == null && typeface != null)) {
+            mTextPaint.setTypeface(typeface);
 
             requestLayout();
             invalidate();
diff --git a/v7/appcompat/src/android/support/v7/widget/Toolbar.java b/v7/appcompat/src/android/support/v7/widget/Toolbar.java
index bd770c2..45e2583 100644
--- a/v7/appcompat/src/android/support/v7/widget/Toolbar.java
+++ b/v7/appcompat/src/android/support/v7/widget/Toolbar.java
@@ -1792,8 +1792,8 @@
             final View bottomChild = layoutSubtitle ? mSubtitleTextView : mTitleTextView;
             final LayoutParams toplp = (LayoutParams) topChild.getLayoutParams();
             final LayoutParams bottomlp = (LayoutParams) bottomChild.getLayoutParams();
-            final boolean titleHasWidth = layoutTitle && mTitleTextView.getMeasuredWidth() > 0
-                    || layoutSubtitle && mSubtitleTextView.getMeasuredWidth() > 0;
+            final boolean titleHasWidth = (layoutTitle && (mTitleTextView.getMeasuredWidth() > 0))
+                    || (layoutSubtitle && mSubtitleTextView.getMeasuredWidth() > 0);
 
             switch (mGravity & Gravity.VERTICAL_GRAVITY_MASK) {
                 case Gravity.TOP:
diff --git a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
index cb8c141..057d575 100644
--- a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
+++ b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
@@ -11758,6 +11758,7 @@
          *                   to
          *                   preserve cross functionality and avoid conflicts.
          */
+        @SuppressWarnings("TypeParameterUnusedInFormals")
         public <T> T get(int resourceId) {
             if (mData == null) {
                 return null;