diff --git a/collection/src/main/java/androidx/collection/ContainerHelpers.java b/collection/src/main/java/androidx/collection/ContainerHelpers.java
index 4c969d4..f385f9b 100644
--- a/collection/src/main/java/androidx/collection/ContainerHelpers.java
+++ b/collection/src/main/java/androidx/collection/ContainerHelpers.java
@@ -79,4 +79,7 @@
         }
         return ~lo;  // value not present
     }
+
+    private ContainerHelpers() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/app/BundleCompat.java b/compat/src/main/java/androidx/core/app/BundleCompat.java
index c1bb802..7b6968d 100644
--- a/compat/src/main/java/androidx/core/app/BundleCompat.java
+++ b/compat/src/main/java/androidx/core/app/BundleCompat.java
@@ -41,6 +41,9 @@
         private static Method sPutIBinderMethod;
         private static boolean sPutIBinderMethodFetched;
 
+        private BundleCompatBaseImpl() {
+        }
+
         public static IBinder getBinder(Bundle bundle, String key) {
             if (!sGetIBinderMethodFetched) {
                 try {
diff --git a/compat/src/main/java/androidx/core/app/NotificationCompatJellybean.java b/compat/src/main/java/androidx/core/app/NotificationCompatJellybean.java
index 3157aad..f334fc1 100644
--- a/compat/src/main/java/androidx/core/app/NotificationCompatJellybean.java
+++ b/compat/src/main/java/androidx/core/app/NotificationCompatJellybean.java
@@ -338,4 +338,7 @@
         bundle.putParcelableArray(key, typedArray);
         return typedArray;
     }
+
+    private NotificationCompatJellybean() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/content/res/FontResourcesParserCompat.java b/compat/src/main/java/androidx/core/content/res/FontResourcesParserCompat.java
index d2f2f22..dd8d933 100644
--- a/compat/src/main/java/androidx/core/content/res/FontResourcesParserCompat.java
+++ b/compat/src/main/java/androidx/core/content/res/FontResourcesParserCompat.java
@@ -308,4 +308,7 @@
             }
         }
     }
+
+    private FontResourcesParserCompat() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/content/res/TypedArrayUtils.java b/compat/src/main/java/androidx/core/content/res/TypedArrayUtils.java
index 2aa8449..0bb2498 100644
--- a/compat/src/main/java/androidx/core/content/res/TypedArrayUtils.java
+++ b/compat/src/main/java/androidx/core/content/res/TypedArrayUtils.java
@@ -294,4 +294,7 @@
         }
         return fallbackAttr;
     }
+
+    private TypedArrayUtils() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/graphics/PathParser.java b/compat/src/main/java/androidx/core/graphics/PathParser.java
index 6f9d83d..2d0282c 100644
--- a/compat/src/main/java/androidx/core/graphics/PathParser.java
+++ b/compat/src/main/java/androidx/core/graphics/PathParser.java
@@ -758,4 +758,7 @@
             }
         }
     }
+
+    private PathParser() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/os/LocaleHelper.java b/compat/src/main/java/androidx/core/os/LocaleHelper.java
index f8fa5c7..001d657 100644
--- a/compat/src/main/java/androidx/core/os/LocaleHelper.java
+++ b/compat/src/main/java/androidx/core/os/LocaleHelper.java
@@ -69,4 +69,7 @@
 
         return buf.toString();
     }
+
+    private LocaleHelper() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/text/util/FindAddress.java b/compat/src/main/java/androidx/core/text/util/FindAddress.java
index b0523db..d66fa05 100644
--- a/compat/src/main/java/androidx/core/text/util/FindAddress.java
+++ b/compat/src/main/java/androidx/core/text/util/FindAddress.java
@@ -513,4 +513,7 @@
         }
         return null;
     }
+
+    private FindAddress() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/util/DebugUtils.java b/compat/src/main/java/androidx/core/util/DebugUtils.java
index f8767b9..20486f2 100644
--- a/compat/src/main/java/androidx/core/util/DebugUtils.java
+++ b/compat/src/main/java/androidx/core/util/DebugUtils.java
@@ -45,4 +45,7 @@
             out.append(Integer.toHexString(System.identityHashCode(cls)));
         }
     }
+
+    private DebugUtils() {
+    }
 }
diff --git a/compat/src/main/java/androidx/core/util/Preconditions.java b/compat/src/main/java/androidx/core/util/Preconditions.java
index eb5bdd6..612a93e 100644
--- a/compat/src/main/java/androidx/core/util/Preconditions.java
+++ b/compat/src/main/java/androidx/core/util/Preconditions.java
@@ -462,4 +462,7 @@
 
         return value;
     }
+
+    private Preconditions() {
+    }
 }
diff --git a/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/ViewGroupUtils.java b/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/ViewGroupUtils.java
index 8f13761..fc87dd2 100644
--- a/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/ViewGroupUtils.java
+++ b/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/ViewGroupUtils.java
@@ -92,4 +92,7 @@
             m.preConcat(view.getMatrix());
         }
     }
+
+    private ViewGroupUtils() {
+    }
 }
diff --git a/customview/src/main/java/androidx/customview/widget/FocusStrategy.java b/customview/src/main/java/androidx/customview/widget/FocusStrategy.java
index 6c3f860..02e6ea4 100644
--- a/customview/src/main/java/androidx/customview/widget/FocusStrategy.java
+++ b/customview/src/main/java/androidx/customview/widget/FocusStrategy.java
@@ -450,4 +450,7 @@
         V get(T collection, int index);
         int size(T collection);
     }
+
+    private FocusStrategy() {
+    }
 }
diff --git a/documentfile/src/main/java/androidx/documentfile/provider/DocumentsContractApi19.java b/documentfile/src/main/java/androidx/documentfile/provider/DocumentsContractApi19.java
index a39f504..45338e5 100644
--- a/documentfile/src/main/java/androidx/documentfile/provider/DocumentsContractApi19.java
+++ b/documentfile/src/main/java/androidx/documentfile/provider/DocumentsContractApi19.java
@@ -209,4 +209,7 @@
             }
         }
     }
+
+    private DocumentsContractApi19() {
+    }
 }
diff --git a/emoji/core/src/main/java/androidx/emoji/text/MetadataListReader.java b/emoji/core/src/main/java/androidx/emoji/text/MetadataListReader.java
index 28a35f0..039bb6b 100644
--- a/emoji/core/src/main/java/androidx/emoji/text/MetadataListReader.java
+++ b/emoji/core/src/main/java/androidx/emoji/text/MetadataListReader.java
@@ -341,4 +341,7 @@
             return mByteBuffer.position();
         }
     }
+
+    private MetadataListReader() {
+    }
 }
diff --git a/fragment/src/main/java/androidx/fragment/app/FragmentManager.java b/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
index 37c480d..f6fc2b8 100644
--- a/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
+++ b/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
@@ -3812,6 +3812,9 @@
         public static final int Fragment_id = 1;
         public static final int Fragment_name = 0;
         public static final int Fragment_tag = 2;
+
+        private FragmentTag() {
+        }
     }
 
     /**
diff --git a/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java b/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java
index 8466bb9..f7b3cac 100644
--- a/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java
+++ b/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java
@@ -1254,4 +1254,7 @@
          */
         public BackStackRecord firstOutTransaction;
     }
+
+    private FragmentTransition() {
+    }
 }
diff --git a/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimationUtilsCompat.java b/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimationUtilsCompat.java
index 2782eca..2110f3c 100644
--- a/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimationUtilsCompat.java
+++ b/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimationUtilsCompat.java
@@ -145,4 +145,7 @@
         }
         return interpolator;
     }
+
+    private AnimationUtilsCompat() {
+    }
 }
diff --git a/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimatorInflaterCompat.java b/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimatorInflaterCompat.java
index 62e87a0..8c71634 100644
--- a/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimatorInflaterCompat.java
+++ b/graphics/drawable/animated/src/main/java/androidx/vectordrawable/graphics/drawable/AnimatorInflaterCompat.java
@@ -917,5 +917,8 @@
         return (type >= TypedValue.TYPE_FIRST_COLOR_INT) && (type
                 <= TypedValue.TYPE_LAST_COLOR_INT);
     }
+
+    private AnimatorInflaterCompat() {
+    }
 }
 
diff --git a/graphics/drawable/static/src/main/java/androidx/vectordrawable/graphics/drawable/AndroidResources.java b/graphics/drawable/static/src/main/java/androidx/vectordrawable/graphics/drawable/AndroidResources.java
index f63f569..409813f 100644
--- a/graphics/drawable/static/src/main/java/androidx/vectordrawable/graphics/drawable/AndroidResources.java
+++ b/graphics/drawable/static/src/main/java/androidx/vectordrawable/graphics/drawable/AndroidResources.java
@@ -146,4 +146,7 @@
     public static final int FAST_OUT_LINEAR_IN = 0x010c000f;
     public static final int FAST_OUT_SLOW_IN = 0x010c000d;
     public static final int LINEAR_OUT_SLOW_IN = 0x010c000e;
+
+    private AndroidResources() {
+    }
 }
diff --git a/leanback-preference/api21/androidx/leanback/preference/LeanbackPreferenceFragmentTransitionHelperApi21.java b/leanback-preference/api21/androidx/leanback/preference/LeanbackPreferenceFragmentTransitionHelperApi21.java
index ebcad93..0f74626 100644
--- a/leanback-preference/api21/androidx/leanback/preference/LeanbackPreferenceFragmentTransitionHelperApi21.java
+++ b/leanback-preference/api21/androidx/leanback/preference/LeanbackPreferenceFragmentTransitionHelperApi21.java
@@ -44,4 +44,6 @@
     }
 
 
+    private LeanbackPreferenceFragmentTransitionHelperApi21() {
+    }
 }
diff --git a/leanback/api21/androidx/leanback/transition/TranslationAnimationCreator.java b/leanback/api21/androidx/leanback/transition/TranslationAnimationCreator.java
index 7ad7faa..455a60d 100644
--- a/leanback/api21/androidx/leanback/transition/TranslationAnimationCreator.java
+++ b/leanback/api21/androidx/leanback/transition/TranslationAnimationCreator.java
@@ -154,4 +154,6 @@
         }
     }
 
+    private TranslationAnimationCreator() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/app/FragmentUtil.java b/leanback/src/main/java/androidx/leanback/app/FragmentUtil.java
index 8d042e8..9ff380e 100644
--- a/leanback/src/main/java/androidx/leanback/app/FragmentUtil.java
+++ b/leanback/src/main/java/androidx/leanback/app/FragmentUtil.java
@@ -26,4 +26,7 @@
         }
         return fragment.getActivity();
     }
+
+    private FragmentUtil() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/app/PermissionHelper.java b/leanback/src/main/java/androidx/leanback/app/PermissionHelper.java
index 73d1a05..a7e56bb 100644
--- a/leanback/src/main/java/androidx/leanback/app/PermissionHelper.java
+++ b/leanback/src/main/java/androidx/leanback/app/PermissionHelper.java
@@ -32,4 +32,6 @@
         }
     }
 
+    private PermissionHelper() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/transition/LeanbackTransitionHelper.java b/leanback/src/main/java/androidx/leanback/transition/LeanbackTransitionHelper.java
index a259050..9693013 100644
--- a/leanback/src/main/java/androidx/leanback/transition/LeanbackTransitionHelper.java
+++ b/leanback/src/main/java/androidx/leanback/transition/LeanbackTransitionHelper.java
@@ -55,4 +55,7 @@
         slide.addTarget(R.id.browse_title_group);
         return slide;
     }
+
+    private LeanbackTransitionHelper() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/transition/TransitionHelper.java b/leanback/src/main/java/androidx/leanback/transition/TransitionHelper.java
index 084e1e7..4d8c877 100644
--- a/leanback/src/main/java/androidx/leanback/transition/TransitionHelper.java
+++ b/leanback/src/main/java/androidx/leanback/transition/TransitionHelper.java
@@ -464,4 +464,7 @@
             }
         }
     }
+
+    private TransitionHelper() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/widget/BackgroundHelper.java b/leanback/src/main/java/androidx/leanback/widget/BackgroundHelper.java
index c50399a..f72ff44 100644
--- a/leanback/src/main/java/androidx/leanback/widget/BackgroundHelper.java
+++ b/leanback/src/main/java/androidx/leanback/widget/BackgroundHelper.java
@@ -40,4 +40,7 @@
             view.setBackground(drawable);
         }
     }
+
+    private BackgroundHelper() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/widget/ForegroundHelper.java b/leanback/src/main/java/androidx/leanback/widget/ForegroundHelper.java
index 3742c63..57c2741 100644
--- a/leanback/src/main/java/androidx/leanback/widget/ForegroundHelper.java
+++ b/leanback/src/main/java/androidx/leanback/widget/ForegroundHelper.java
@@ -25,4 +25,7 @@
             view.setForeground(drawable);
         }
     }
+
+    private ForegroundHelper() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/widget/ItemAlignmentFacetHelper.java b/leanback/src/main/java/androidx/leanback/widget/ItemAlignmentFacetHelper.java
index 6e80100..5ca7458 100644
--- a/leanback/src/main/java/androidx/leanback/widget/ItemAlignmentFacetHelper.java
+++ b/leanback/src/main/java/androidx/leanback/widget/ItemAlignmentFacetHelper.java
@@ -105,4 +105,6 @@
         return alignPos;
     }
 
+    private ItemAlignmentFacetHelper() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/widget/RoundedRectHelperApi21.java b/leanback/src/main/java/androidx/leanback/widget/RoundedRectHelperApi21.java
index 031b980..470f645 100644
--- a/leanback/src/main/java/androidx/leanback/widget/RoundedRectHelperApi21.java
+++ b/leanback/src/main/java/androidx/leanback/widget/RoundedRectHelperApi21.java
@@ -59,4 +59,7 @@
         }
         view.setClipToOutline(clip);
     }
+
+    private RoundedRectHelperApi21() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/widget/ShadowHelperApi21.java b/leanback/src/main/java/androidx/leanback/widget/ShadowHelperApi21.java
index 0d97cf9..e32d165 100644
--- a/leanback/src/main/java/androidx/leanback/widget/ShadowHelperApi21.java
+++ b/leanback/src/main/java/androidx/leanback/widget/ShadowHelperApi21.java
@@ -58,4 +58,7 @@
         ShadowImpl impl = (ShadowImpl) object;
         impl.mShadowContainer.setZ(impl.mNormalZ + level * (impl.mFocusedZ - impl.mNormalZ));
     }
+
+    private ShadowHelperApi21() {
+    }
 }
diff --git a/leanback/src/main/java/androidx/leanback/widget/Util.java b/leanback/src/main/java/androidx/leanback/widget/Util.java
index aa81715..bda8ac6 100644
--- a/leanback/src/main/java/androidx/leanback/widget/Util.java
+++ b/leanback/src/main/java/androidx/leanback/widget/Util.java
@@ -43,4 +43,7 @@
         }
         return false;
     }
-}
\ No newline at end of file
+
+    private Util() {
+    }
+}
diff --git a/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java b/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java
index 5347971..c520646 100644
--- a/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java
+++ b/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java
@@ -95,4 +95,7 @@
             return newCalendar;
         }
     }
+
+    private PickerUtility() {
+    }
 }
diff --git a/media/api21/android/support/v4/media/MediaBrowserCompatApi21.java b/media/api21/android/support/v4/media/MediaBrowserCompatApi21.java
index 4f040df..acd8bf8 100644
--- a/media/api21/android/support/v4/media/MediaBrowserCompatApi21.java
+++ b/media/api21/android/support/v4/media/MediaBrowserCompatApi21.java
@@ -148,5 +148,11 @@
         public static Object getDescription(Object itemObj) {
             return ((MediaBrowser.MediaItem) itemObj).getDescription();
         }
+
+        private MediaItem() {
+        }
+    }
+
+    private MediaBrowserCompatApi21() {
     }
 }
diff --git a/media/api21/android/support/v4/media/MediaDescriptionCompatApi21.java b/media/api21/android/support/v4/media/MediaDescriptionCompatApi21.java
index 4179518..bed7f01 100644
--- a/media/api21/android/support/v4/media/MediaDescriptionCompatApi21.java
+++ b/media/api21/android/support/v4/media/MediaDescriptionCompatApi21.java
@@ -99,5 +99,11 @@
         public static Object build(Object builderObj) {
             return ((MediaDescription.Builder) builderObj).build();
         }
+
+        private Builder() {
+        }
+    }
+
+    private MediaDescriptionCompatApi21() {
     }
 }
diff --git a/media/api21/android/support/v4/media/MediaMetadataCompatApi21.java b/media/api21/android/support/v4/media/MediaMetadataCompatApi21.java
index 4095a39..5ce873a 100644
--- a/media/api21/android/support/v4/media/MediaMetadataCompatApi21.java
+++ b/media/api21/android/support/v4/media/MediaMetadataCompatApi21.java
@@ -83,5 +83,11 @@
         public static Object build(Object builderObj) {
             return ((MediaMetadata.Builder)builderObj).build();
         }
+
+        private Builder() {
+        }
+    }
+
+    private MediaMetadataCompatApi21() {
     }
 }
diff --git a/media/api21/android/support/v4/media/ParceledListSliceAdapterApi21.java b/media/api21/android/support/v4/media/ParceledListSliceAdapterApi21.java
index d1d81eb..30d0225 100644
--- a/media/api21/android/support/v4/media/ParceledListSliceAdapterApi21.java
+++ b/media/api21/android/support/v4/media/ParceledListSliceAdapterApi21.java
@@ -48,4 +48,7 @@
         }
         return result;
     }
+
+    private ParceledListSliceAdapterApi21() {
+    }
 }
diff --git a/media/api21/android/support/v4/media/session/MediaControllerCompatApi21.java b/media/api21/android/support/v4/media/session/MediaControllerCompatApi21.java
index 6c5f860..0cd1cd9 100644
--- a/media/api21/android/support/v4/media/session/MediaControllerCompatApi21.java
+++ b/media/api21/android/support/v4/media/session/MediaControllerCompatApi21.java
@@ -186,6 +186,9 @@
         public static void sendCustomAction(Object controlsObj, String action, Bundle args) {
             ((MediaController.TransportControls) controlsObj).sendCustomAction(action, args);
         }
+
+        private TransportControls() {
+        }
     }
 
     public static class PlaybackInfo {
@@ -258,6 +261,9 @@
                     return AudioManager.STREAM_MUSIC;
             }
         }
+
+        private PlaybackInfo() {
+        }
     }
 
     public static interface Callback {
@@ -320,4 +326,7 @@
                     info.getMaxVolume(), info.getCurrentVolume());
         }
     }
+
+    private MediaControllerCompatApi21() {
+    }
 }
diff --git a/media/api21/android/support/v4/media/session/MediaSessionCompatApi21.java b/media/api21/android/support/v4/media/session/MediaSessionCompatApi21.java
index f0c542b..a359704 100644
--- a/media/api21/android/support/v4/media/session/MediaSessionCompatApi21.java
+++ b/media/api21/android/support/v4/media/session/MediaSessionCompatApi21.java
@@ -269,5 +269,11 @@
         public static long getQueueId(Object queueItem) {
             return ((MediaSession.QueueItem) queueItem).getQueueId();
         }
+
+        private QueueItem() {
+        }
+    }
+
+    private MediaSessionCompatApi21() {
     }
 }
diff --git a/media/api21/android/support/v4/media/session/PlaybackStateCompatApi21.java b/media/api21/android/support/v4/media/session/PlaybackStateCompatApi21.java
index 85cd8d0..f4aa9fc 100644
--- a/media/api21/android/support/v4/media/session/PlaybackStateCompatApi21.java
+++ b/media/api21/android/support/v4/media/session/PlaybackStateCompatApi21.java
@@ -100,5 +100,11 @@
             customActionObj.setExtras(extras);
             return customActionObj.build();
         }
+
+        private CustomAction() {
+        }
+    }
+
+    private PlaybackStateCompatApi21() {
     }
 }
diff --git a/media/api21/androidx/media/AudioAttributesCompatApi21.java b/media/api21/androidx/media/AudioAttributesCompatApi21.java
index 19144c1..ba3d37c 100644
--- a/media/api21/androidx/media/AudioAttributesCompatApi21.java
+++ b/media/api21/androidx/media/AudioAttributesCompatApi21.java
@@ -65,4 +65,7 @@
             return mWrapped;
         }
     }
+
+    private AudioAttributesCompatApi21() {
+    }
 }
diff --git a/media/api21/androidx/media/MediaBrowserServiceCompatApi21.java b/media/api21/androidx/media/MediaBrowserServiceCompatApi21.java
index ca80e08..79c591b 100644
--- a/media/api21/androidx/media/MediaBrowserServiceCompatApi21.java
+++ b/media/api21/androidx/media/MediaBrowserServiceCompatApi21.java
@@ -129,4 +129,7 @@
             mServiceProxy.onLoadChildren(parentId, new ResultWrapper<List<Parcel>>(result));
         }
     }
+
+    private MediaBrowserServiceCompatApi21() {
+    }
 }
diff --git a/media/api21/androidx/media/VolumeProviderCompatApi21.java b/media/api21/androidx/media/VolumeProviderCompatApi21.java
index 6df87d0..6d540b3 100644
--- a/media/api21/androidx/media/VolumeProviderCompatApi21.java
+++ b/media/api21/androidx/media/VolumeProviderCompatApi21.java
@@ -45,4 +45,7 @@
         void onSetVolumeTo(int volume);
         void onAdjustVolume(int delta);
     }
+
+    private VolumeProviderCompatApi21() {
+    }
 }
diff --git a/media/api22/android/support/v4/media/session/MediaSessionCompatApi22.java b/media/api22/android/support/v4/media/session/MediaSessionCompatApi22.java
index 8650400..9a44d8c 100644
--- a/media/api22/android/support/v4/media/session/MediaSessionCompatApi22.java
+++ b/media/api22/android/support/v4/media/session/MediaSessionCompatApi22.java
@@ -25,4 +25,7 @@
     public static void setRatingType(Object sessionObj, int type) {
         ((MediaSession) sessionObj).setRatingType(type);
     }
+
+    private MediaSessionCompatApi22() {
+    }
 }
diff --git a/media/api22/android/support/v4/media/session/PlaybackStateCompatApi22.java b/media/api22/android/support/v4/media/session/PlaybackStateCompatApi22.java
index 53b76ce..1be825f 100644
--- a/media/api22/android/support/v4/media/session/PlaybackStateCompatApi22.java
+++ b/media/api22/android/support/v4/media/session/PlaybackStateCompatApi22.java
@@ -45,4 +45,7 @@
         stateObj.setExtras(extras);
         return stateObj.build();
     }
+
+    private PlaybackStateCompatApi22() {
+    }
 }
diff --git a/media/api23/android/support/v4/media/MediaBrowserCompatApi23.java b/media/api23/android/support/v4/media/MediaBrowserCompatApi23.java
index 6f94d5d..514b1e9 100644
--- a/media/api23/android/support/v4/media/MediaBrowserCompatApi23.java
+++ b/media/api23/android/support/v4/media/MediaBrowserCompatApi23.java
@@ -61,4 +61,7 @@
             mItemCallback.onError(itemId);
         }
     }
+
+    private MediaBrowserCompatApi23() {
+    }
 }
diff --git a/media/api23/android/support/v4/media/MediaDescriptionCompatApi23.java b/media/api23/android/support/v4/media/MediaDescriptionCompatApi23.java
index b702617..ee1b1a1 100644
--- a/media/api23/android/support/v4/media/MediaDescriptionCompatApi23.java
+++ b/media/api23/android/support/v4/media/MediaDescriptionCompatApi23.java
@@ -21,14 +21,20 @@
 import androidx.annotation.RequiresApi;
 
 @RequiresApi(23)
-class MediaDescriptionCompatApi23 extends MediaDescriptionCompatApi21 {
+class MediaDescriptionCompatApi23 {
     public static Uri getMediaUri(Object descriptionObj) {
         return ((MediaDescription) descriptionObj).getMediaUri();
     }
 
-    static class Builder extends MediaDescriptionCompatApi21.Builder {
+    static class Builder {
         public static void setMediaUri(Object builderObj, Uri mediaUri) {
             ((MediaDescription.Builder)builderObj).setMediaUri(mediaUri);
         }
+
+        private Builder() {
+        }
+    }
+
+    private MediaDescriptionCompatApi23() {
     }
 }
diff --git a/media/api23/android/support/v4/media/session/MediaControllerCompatApi23.java b/media/api23/android/support/v4/media/session/MediaControllerCompatApi23.java
index ca424d1..c5137b5 100644
--- a/media/api23/android/support/v4/media/session/MediaControllerCompatApi23.java
+++ b/media/api23/android/support/v4/media/session/MediaControllerCompatApi23.java
@@ -25,9 +25,15 @@
 @RequiresApi(23)
 class MediaControllerCompatApi23 {
 
-    public static class TransportControls extends MediaControllerCompatApi21.TransportControls {
+    public static class TransportControls {
         public static void playFromUri(Object controlsObj, Uri uri, Bundle extras) {
             ((MediaController.TransportControls) controlsObj).playFromUri(uri, extras);
         }
+
+        private TransportControls() {
+        }
+    }
+
+    private MediaControllerCompatApi23() {
     }
 }
diff --git a/media/api23/android/support/v4/media/session/MediaSessionCompatApi23.java b/media/api23/android/support/v4/media/session/MediaSessionCompatApi23.java
index de55764..586ffda 100644
--- a/media/api23/android/support/v4/media/session/MediaSessionCompatApi23.java
+++ b/media/api23/android/support/v4/media/session/MediaSessionCompatApi23.java
@@ -42,4 +42,7 @@
             mCallback.onPlayFromUri(uri, extras);
         }
     }
+
+    private MediaSessionCompatApi23() {
+    }
 }
diff --git a/media/api23/androidx/media/MediaBrowserServiceCompatApi23.java b/media/api23/androidx/media/MediaBrowserServiceCompatApi23.java
index 624b98a..0292fb9 100644
--- a/media/api23/androidx/media/MediaBrowserServiceCompatApi23.java
+++ b/media/api23/androidx/media/MediaBrowserServiceCompatApi23.java
@@ -45,4 +45,7 @@
                     new MediaBrowserServiceCompatApi21.ResultWrapper<Parcel>(result));
         }
     }
+
+    private MediaBrowserServiceCompatApi23() {
+    }
 }
diff --git a/media/api24/android/support/v4/media/session/MediaControllerCompatApi24.java b/media/api24/android/support/v4/media/session/MediaControllerCompatApi24.java
index 9faeff6..f130ed0 100644
--- a/media/api24/android/support/v4/media/session/MediaControllerCompatApi24.java
+++ b/media/api24/android/support/v4/media/session/MediaControllerCompatApi24.java
@@ -25,7 +25,7 @@
 @RequiresApi(24)
 class MediaControllerCompatApi24 {
 
-    public static class TransportControls extends MediaControllerCompatApi23.TransportControls {
+    public static class TransportControls {
         public static void prepare(Object controlsObj) {
             ((MediaController.TransportControls) controlsObj).prepare();
         }
@@ -41,5 +41,11 @@
         public static void prepareFromUri(Object controlsObj, Uri uri, Bundle extras) {
             ((MediaController.TransportControls) controlsObj).prepareFromUri(uri, extras);
         }
+
+        private TransportControls() {
+        }
+    }
+
+    private MediaControllerCompatApi24() {
     }
 }
diff --git a/media/api24/android/support/v4/media/session/MediaSessionCompatApi24.java b/media/api24/android/support/v4/media/session/MediaSessionCompatApi24.java
index 2522e5b..818277f 100644
--- a/media/api24/android/support/v4/media/session/MediaSessionCompatApi24.java
+++ b/media/api24/android/support/v4/media/session/MediaSessionCompatApi24.java
@@ -78,4 +78,7 @@
             mCallback.onPrepareFromUri(uri, extras);
         }
     }
+
+    private MediaSessionCompatApi24() {
+    }
 }
diff --git a/media/api26/android/support/v4/media/MediaBrowserCompatApi26.java b/media/api26/android/support/v4/media/MediaBrowserCompatApi26.java
index 5d556d3..e156c06 100644
--- a/media/api26/android/support/v4/media/MediaBrowserCompatApi26.java
+++ b/media/api26/android/support/v4/media/MediaBrowserCompatApi26.java
@@ -64,4 +64,7 @@
             mSubscriptionCallback.onError(parentId, options);
         }
     }
+
+    private MediaBrowserCompatApi26() {
+    }
 }
diff --git a/media/api26/androidx/media/MediaBrowserServiceCompatApi26.java b/media/api26/androidx/media/MediaBrowserServiceCompatApi26.java
index 0f250dd..99b13a3 100644
--- a/media/api26/androidx/media/MediaBrowserServiceCompatApi26.java
+++ b/media/api26/androidx/media/MediaBrowserServiceCompatApi26.java
@@ -106,4 +106,7 @@
                     parentId, new ResultWrapper(result), options);
         }
     }
+
+    private MediaBrowserServiceCompatApi26() {
+    }
 }
diff --git a/media/src/main/java/androidx/media/MediaBrowserCompatUtils.java b/media/src/main/java/androidx/media/MediaBrowserCompatUtils.java
index d3f8bbb..c553256 100644
--- a/media/src/main/java/androidx/media/MediaBrowserCompatUtils.java
+++ b/media/src/main/java/androidx/media/MediaBrowserCompatUtils.java
@@ -77,4 +77,7 @@
         }
         return false;
     }
+
+    private MediaBrowserCompatUtils() {
+    }
 }
diff --git a/media/src/main/java/androidx/media/MediaBrowserProtocol.java b/media/src/main/java/androidx/media/MediaBrowserProtocol.java
index 251158f..5c85880 100644
--- a/media/src/main/java/androidx/media/MediaBrowserProtocol.java
+++ b/media/src/main/java/androidx/media/MediaBrowserProtocol.java
@@ -200,4 +200,7 @@
      * - replyTo : Callback messenger
      */
     public static final int CLIENT_MSG_SEND_CUSTOM_ACTION = 9;
+
+    private MediaBrowserProtocol() {
+    }
 }
diff --git a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaBrowserConstants.java b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaBrowserConstants.java
index f961308..b4bea4e 100644
--- a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaBrowserConstants.java
+++ b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaBrowserConstants.java
@@ -63,4 +63,7 @@
             "test_media_id_children_2", "test_media_id_children_3",
             MEDIA_ID_CHILDREN_DELAYED
     };
+
+    private MediaBrowserConstants() {
+    }
 }
diff --git a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaControllerConstants.java b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaControllerConstants.java
index 4978888..e81f7d9 100644
--- a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaControllerConstants.java
+++ b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaControllerConstants.java
@@ -52,4 +52,7 @@
     public static final int SET_CAPTIONING_ENABLED = 320;
     public static final int SET_REPEAT_MODE = 321;
     public static final int SET_SHUFFLE_MODE = 322;
+
+    private MediaControllerConstants() {
+    }
 }
diff --git a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaSessionConstants.java b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaSessionConstants.java
index c0a64d4..ffc24a6 100644
--- a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaSessionConstants.java
+++ b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/MediaSessionConstants.java
@@ -57,4 +57,7 @@
 
     public static final int TEST_ERROR_CODE = 0x3;
     public static final String TEST_ERROR_MSG = "test-error-msg";
+
+    private MediaSessionConstants() {
+    }
 }
diff --git a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/VersionConstants.java b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/VersionConstants.java
index 4b217b1..5d877f2 100644
--- a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/VersionConstants.java
+++ b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/VersionConstants.java
@@ -25,4 +25,7 @@
 
     public static final String VERSION_TOT = "tot";
     public static final String VERSION_PREVIOUS = "previous";
+
+    private VersionConstants() {
+    }
 }
diff --git a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/IntentUtil.java b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/IntentUtil.java
index 8d58a6f..14ba14c 100644
--- a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/IntentUtil.java
+++ b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/IntentUtil.java
@@ -129,4 +129,7 @@
         }
         return intent;
     }
+
+    private IntentUtil() {
+    }
 }
diff --git a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/TestUtil.java b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/TestUtil.java
index 21fd223..b06b219 100644
--- a/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/TestUtil.java
+++ b/media/version-compat-tests/lib/src/main/java/android/support/mediacompat/testlib/util/TestUtil.java
@@ -38,4 +38,7 @@
             assertEquals(expected.get(key), observed.get(key));
         }
     }
+
+    private TestUtil() {
+    }
 }
diff --git a/mediarouter/api24/androidx/mediarouter/media/MediaRouterApi24.java b/mediarouter/api24/androidx/mediarouter/media/MediaRouterApi24.java
index f47b873..800ea22 100644
--- a/mediarouter/api24/androidx/mediarouter/media/MediaRouterApi24.java
+++ b/mediarouter/api24/androidx/mediarouter/media/MediaRouterApi24.java
@@ -24,5 +24,11 @@
         public static int getDeviceType(Object routeObj) {
             return ((android.media.MediaRouter.RouteInfo)routeObj).getDeviceType();
         }
+
+        private RouteInfo() {
+        }
+    }
+
+    private MediaRouterApi24() {
     }
 }
diff --git a/mediarouter/jellybean-mr1/androidx/mediarouter/media/MediaRouterJellybeanMr1.java b/mediarouter/jellybean-mr1/androidx/mediarouter/media/MediaRouterJellybeanMr1.java
index c08f79e..9ca6313 100644
--- a/mediarouter/jellybean-mr1/androidx/mediarouter/media/MediaRouterJellybeanMr1.java
+++ b/mediarouter/jellybean-mr1/androidx/mediarouter/media/MediaRouterJellybeanMr1.java
@@ -52,6 +52,9 @@
             }
             return null;
         }
+
+        private RouteInfo() {
+        }
     }
 
     public static interface Callback extends MediaRouterJellybean.Callback {
@@ -183,4 +186,7 @@
             mCallback.onRoutePresentationDisplayChanged(route);
         }
     }
+
+    private MediaRouterJellybeanMr1() {
+    }
 }
diff --git a/mediarouter/jellybean-mr2/androidx/mediarouter/media/MediaRouterJellybeanMr2.java b/mediarouter/jellybean-mr2/androidx/mediarouter/media/MediaRouterJellybeanMr2.java
index be796ac..bbb5f64 100644
--- a/mediarouter/jellybean-mr2/androidx/mediarouter/media/MediaRouterJellybeanMr2.java
+++ b/mediarouter/jellybean-mr2/androidx/mediarouter/media/MediaRouterJellybeanMr2.java
@@ -37,11 +37,20 @@
         public static boolean isConnecting(Object routeObj) {
             return ((android.media.MediaRouter.RouteInfo)routeObj).isConnecting();
         }
+
+        private RouteInfo() {
+        }
     }
 
     public static final class UserRouteInfo {
         public static void setDescription(Object routeObj, CharSequence description) {
             ((android.media.MediaRouter.UserRouteInfo)routeObj).setDescription(description);
         }
+
+        private UserRouteInfo() {
+        }
+    }
+
+    private MediaRouterJellybeanMr2() {
     }
 }
diff --git a/mediarouter/jellybean/androidx/mediarouter/media/MediaRouterJellybean.java b/mediarouter/jellybean/androidx/mediarouter/media/MediaRouterJellybean.java
index c3f79e8..d73edb7 100644
--- a/mediarouter/jellybean/androidx/mediarouter/media/MediaRouterJellybean.java
+++ b/mediarouter/jellybean/androidx/mediarouter/media/MediaRouterJellybean.java
@@ -197,6 +197,9 @@
         public static boolean isGroup(Object routeObj) {
             return routeObj instanceof android.media.MediaRouter.RouteGroup;
         }
+
+        private RouteInfo() {
+        }
     }
 
     public static final class RouteGroup {
@@ -211,6 +214,9 @@
             }
             return out;
         }
+
+        private RouteGroup() {
+        }
     }
 
     public static final class UserRouteInfo {
@@ -255,6 +261,9 @@
             ((android.media.MediaRouter.UserRouteInfo)routeObj).setRemoteControlClient(
                     (android.media.RemoteControlClient)rccObj);
         }
+
+        private UserRouteInfo() {
+        }
     }
 
     public static final class RouteCategory {
@@ -276,6 +285,9 @@
         public static boolean isGroupable(Object categoryObj) {
             return ((android.media.MediaRouter.RouteCategory)categoryObj).isGroupable();
         }
+
+        private RouteCategory() {
+        }
     }
 
     public static interface Callback {
@@ -461,4 +473,7 @@
             mCallback.onVolumeUpdateRequest(route, direction);
         }
     }
+
+    private MediaRouterJellybean() {
+    }
 }
diff --git a/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDialogHelper.java b/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDialogHelper.java
index a418d5b..c5e53ee 100644
--- a/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDialogHelper.java
+++ b/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDialogHelper.java
@@ -149,4 +149,7 @@
         view.draw(canvas);
         return new BitmapDrawable(context.getResources(), bitmap);
     }
+
+    private MediaRouteDialogHelper() {
+    }
 }
diff --git a/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java b/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
index 805e9f4..fcf4ba5 100644
--- a/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
+++ b/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
@@ -227,4 +227,7 @@
             return false;
         }
     }
+
+    private MediaRouteProviderProtocol() {
+    }
 }
diff --git a/preference/src/main/java/androidx/preference/AndroidResources.java b/preference/src/main/java/androidx/preference/AndroidResources.java
index 00b14f4..ec12596 100644
--- a/preference/src/main/java/androidx/preference/AndroidResources.java
+++ b/preference/src/main/java/androidx/preference/AndroidResources.java
@@ -34,4 +34,6 @@
     public static final int ANDROID_R_EDITTEXT_PREFERENCE_STYLE
             = android.R.attr.editTextPreferenceStyle;
 
+    private AndroidResources() {
+    }
 }
diff --git a/recyclerview-selection/src/main/java/androidx/recyclerview/selection/EventBridge.java b/recyclerview-selection/src/main/java/androidx/recyclerview/selection/EventBridge.java
index 6089ec6..e117944 100644
--- a/recyclerview-selection/src/main/java/androidx/recyclerview/selection/EventBridge.java
+++ b/recyclerview-selection/src/main/java/androidx/recyclerview/selection/EventBridge.java
@@ -139,4 +139,7 @@
             mAdapter.notifyItemChanged(position, SelectionTracker.SELECTION_CHANGED_MARKER);
         }
     }
+
+    private EventBridge() {
+    }
 }
diff --git a/slices/core/src/main/java/androidx/slice/ArrayUtils.java b/slices/core/src/main/java/androidx/slice/ArrayUtils.java
index f485c22..f7921c5 100644
--- a/slices/core/src/main/java/androidx/slice/ArrayUtils.java
+++ b/slices/core/src/main/java/androidx/slice/ArrayUtils.java
@@ -72,4 +72,7 @@
         }
         return array;
     }
+
+    private ArrayUtils() {
+    }
 }
diff --git a/slices/core/src/main/java/androidx/slice/SliceSpecs.java b/slices/core/src/main/java/androidx/slice/SliceSpecs.java
index f91dec2..760d828 100644
--- a/slices/core/src/main/java/androidx/slice/SliceSpecs.java
+++ b/slices/core/src/main/java/androidx/slice/SliceSpecs.java
@@ -41,4 +41,7 @@
      * a source of where the message came from.
      */
     public static final SliceSpec MESSAGING = new SliceSpec("androidx.slice.MESSAGING", 1);
+
+    private SliceSpecs() {
+    }
 }
diff --git a/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java b/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
index 65505f7..4db52f0 100644
--- a/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
+++ b/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
@@ -82,4 +82,7 @@
             return mSliceProvider.onMapIntentToUri(intent);
         }
     }
+
+    private SliceProviderWrapperContainer() {
+    }
 }
diff --git a/slices/core/src/main/java/androidx/slice/core/SliceHints.java b/slices/core/src/main/java/androidx/slice/core/SliceHints.java
index 3fb9ada..e35ae35 100644
--- a/slices/core/src/main/java/androidx/slice/core/SliceHints.java
+++ b/slices/core/src/main/java/androidx/slice/core/SliceHints.java
@@ -106,4 +106,7 @@
      * Constant representing infinity.
      */
     public static final long INFINITY = -1;
+
+    private SliceHints() {
+    }
 }
diff --git a/slices/core/src/main/java/androidx/slice/core/SliceQuery.java b/slices/core/src/main/java/androidx/slice/core/SliceQuery.java
index 1dadb82..626a1dc 100644
--- a/slices/core/src/main/java/androidx/slice/core/SliceQuery.java
+++ b/slices/core/src/main/java/androidx/slice/core/SliceQuery.java
@@ -307,4 +307,7 @@
     private interface Filter<T> {
         boolean filter(T input);
     }
+
+    private SliceQuery() {
+    }
 }
diff --git a/slices/view/src/main/java/androidx/slice/SliceXml.java b/slices/view/src/main/java/androidx/slice/SliceXml.java
index e8747be..65f1e7d 100644
--- a/slices/view/src/main/java/androidx/slice/SliceXml.java
+++ b/slices/view/src/main/java/androidx/slice/SliceXml.java
@@ -242,4 +242,7 @@
     private static String hintStr(List<String> hints) {
         return TextUtils.join(",", hints);
     }
+
+    private SliceXml() {
+    }
 }
diff --git a/slices/view/src/main/java/androidx/slice/widget/SliceViewUtil.java b/slices/view/src/main/java/androidx/slice/widget/SliceViewUtil.java
index 311feaf..78ac154 100644
--- a/slices/view/src/main/java/androidx/slice/widget/SliceViewUtil.java
+++ b/slices/view/src/main/java/androidx/slice/widget/SliceViewUtil.java
@@ -198,4 +198,7 @@
         return DateUtils.getRelativeTimeSpanString(time, Calendar.getInstance().getTimeInMillis(),
                 DateUtils.MINUTE_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE);
     }
+
+    private SliceViewUtil() {
+    }
 }
diff --git a/testutils/src/main/java/androidx/testutils/AppCompatActivityUtils.java b/testutils/src/main/java/androidx/testutils/AppCompatActivityUtils.java
index e36a2ec..104fb44 100644
--- a/testutils/src/main/java/androidx/testutils/AppCompatActivityUtils.java
+++ b/testutils/src/main/java/androidx/testutils/AppCompatActivityUtils.java
@@ -92,4 +92,7 @@
         RecreatedAppCompatActivity.clearState();
         return newActivity;
     }
+
+    private AppCompatActivityUtils() {
+    }
 }
diff --git a/testutils/src/main/java/androidx/testutils/FragmentActivityUtils.java b/testutils/src/main/java/androidx/testutils/FragmentActivityUtils.java
index 136cc31..43404f0 100644
--- a/testutils/src/main/java/androidx/testutils/FragmentActivityUtils.java
+++ b/testutils/src/main/java/androidx/testutils/FragmentActivityUtils.java
@@ -89,4 +89,7 @@
         RecreatedActivity.clearState();
         return newActivity;
     }
+
+    private FragmentActivityUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/AnimatorUtils.java b/transition/src/main/java/androidx/transition/AnimatorUtils.java
index 452bc66..6772a60 100644
--- a/transition/src/main/java/androidx/transition/AnimatorUtils.java
+++ b/transition/src/main/java/androidx/transition/AnimatorUtils.java
@@ -77,4 +77,7 @@
         void onAnimationResume(Animator animation);
 
     }
+
+    private AnimatorUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/GhostViewUtils.java b/transition/src/main/java/androidx/transition/GhostViewUtils.java
index 447f728..9e460ca 100644
--- a/transition/src/main/java/androidx/transition/GhostViewUtils.java
+++ b/transition/src/main/java/androidx/transition/GhostViewUtils.java
@@ -38,4 +38,6 @@
         }
     }
 
+    private GhostViewUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ImageViewUtils.java b/transition/src/main/java/androidx/transition/ImageViewUtils.java
index a7c947c..9d73e9e 100644
--- a/transition/src/main/java/androidx/transition/ImageViewUtils.java
+++ b/transition/src/main/java/androidx/transition/ImageViewUtils.java
@@ -105,4 +105,6 @@
         }
     }
 
+    private ImageViewUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/MatrixUtils.java b/transition/src/main/java/androidx/transition/MatrixUtils.java
index a04ebe2..9a13796 100644
--- a/transition/src/main/java/androidx/transition/MatrixUtils.java
+++ b/transition/src/main/java/androidx/transition/MatrixUtils.java
@@ -204,4 +204,6 @@
 
     };
 
+    private MatrixUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ObjectAnimatorUtils.java b/transition/src/main/java/androidx/transition/ObjectAnimatorUtils.java
index a7fb97d..bd73b58 100644
--- a/transition/src/main/java/androidx/transition/ObjectAnimatorUtils.java
+++ b/transition/src/main/java/androidx/transition/ObjectAnimatorUtils.java
@@ -31,4 +31,6 @@
         return ObjectAnimator.ofFloat(target, new PathProperty<>(property, path), 0f, 1f);
     }
 
+    private ObjectAnimatorUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/PropertyValuesHolderUtils.java b/transition/src/main/java/androidx/transition/PropertyValuesHolderUtils.java
index 2ea657c..42527c4 100644
--- a/transition/src/main/java/androidx/transition/PropertyValuesHolderUtils.java
+++ b/transition/src/main/java/androidx/transition/PropertyValuesHolderUtils.java
@@ -41,4 +41,6 @@
         return PropertyValuesHolder.ofFloat(new PathProperty<>(property, path), 0f, 1f);
     }
 
+    private PropertyValuesHolderUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/Styleable.java b/transition/src/main/java/androidx/transition/Styleable.java
index cdfb9ec..40f3cca 100644
--- a/transition/src/main/java/androidx/transition/Styleable.java
+++ b/transition/src/main/java/androidx/transition/Styleable.java
@@ -175,4 +175,6 @@
         int PATTERN_PATH_DATA = 0;
     }
 
+    private Styleable() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/TransitionUtils.java b/transition/src/main/java/androidx/transition/TransitionUtils.java
index 7a1b7ec..39de677 100644
--- a/transition/src/main/java/androidx/transition/TransitionUtils.java
+++ b/transition/src/main/java/androidx/transition/TransitionUtils.java
@@ -130,4 +130,6 @@
 
     }
 
+    private TransitionUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/TranslationAnimationCreator.java b/transition/src/main/java/androidx/transition/TranslationAnimationCreator.java
index 004c1a4..c3e30e8 100644
--- a/transition/src/main/java/androidx/transition/TranslationAnimationCreator.java
+++ b/transition/src/main/java/androidx/transition/TranslationAnimationCreator.java
@@ -133,4 +133,6 @@
         }
     }
 
+    private TranslationAnimationCreator() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ViewGroupUtils.java b/transition/src/main/java/androidx/transition/ViewGroupUtils.java
index 55ab3ff..dee0fa9 100644
--- a/transition/src/main/java/androidx/transition/ViewGroupUtils.java
+++ b/transition/src/main/java/androidx/transition/ViewGroupUtils.java
@@ -47,4 +47,6 @@
         }
     }
 
+    private ViewGroupUtils() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ViewGroupUtilsApi14.java b/transition/src/main/java/androidx/transition/ViewGroupUtilsApi14.java
index 70af497..32d546a 100644
--- a/transition/src/main/java/androidx/transition/ViewGroupUtilsApi14.java
+++ b/transition/src/main/java/androidx/transition/ViewGroupUtilsApi14.java
@@ -126,4 +126,6 @@
         }
     }
 
+    private ViewGroupUtilsApi14() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ViewGroupUtilsApi18.java b/transition/src/main/java/androidx/transition/ViewGroupUtilsApi18.java
index bd0938a..e4d4ffa 100644
--- a/transition/src/main/java/androidx/transition/ViewGroupUtilsApi18.java
+++ b/transition/src/main/java/androidx/transition/ViewGroupUtilsApi18.java
@@ -59,4 +59,6 @@
         }
     }
 
+    private ViewGroupUtilsApi18() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ViewOverlayApi14.java b/transition/src/main/java/androidx/transition/ViewOverlayApi14.java
index 12ebf77..049e685 100644
--- a/transition/src/main/java/androidx/transition/ViewOverlayApi14.java
+++ b/transition/src/main/java/androidx/transition/ViewOverlayApi14.java
@@ -351,5 +351,6 @@
         }
     }
 
-
+    private ViewOverlayApi14() {
+    }
 }
diff --git a/transition/src/main/java/androidx/transition/ViewUtils.java b/transition/src/main/java/androidx/transition/ViewUtils.java
index 89eaadd..d770ab6 100644
--- a/transition/src/main/java/androidx/transition/ViewUtils.java
+++ b/transition/src/main/java/androidx/transition/ViewUtils.java
@@ -222,4 +222,6 @@
         }
     }
 
+    private ViewUtils() {
+    }
 }
diff --git a/tv-provider/src/main/java/androidx/tvprovider/media/tv/CollectionUtils.java b/tv-provider/src/main/java/androidx/tvprovider/media/tv/CollectionUtils.java
index 14fbc77..595e451 100644
--- a/tv-provider/src/main/java/androidx/tvprovider/media/tv/CollectionUtils.java
+++ b/tv-provider/src/main/java/androidx/tvprovider/media/tv/CollectionUtils.java
@@ -46,4 +46,7 @@
         }
         return result;
     }
+
+    private CollectionUtils() {
+    }
 }
diff --git a/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannel.java b/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannel.java
index 9bdc108..d976798 100644
--- a/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannel.java
+++ b/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannel.java
@@ -331,6 +331,9 @@
         public static final int COL_INTERNAL_PROVIDER_FLAG2 = 9;
         public static final int COL_INTERNAL_PROVIDER_FLAG3 = 10;
         public static final int COL_INTERNAL_PROVIDER_FLAG4 = 11;
+
+        private Columns() {
+        }
     }
 
     /**
diff --git a/v7/appcompat/src/main/java/androidx/appcompat/app/ActionBarDrawerToggleHoneycomb.java b/v7/appcompat/src/main/java/androidx/appcompat/app/ActionBarDrawerToggleHoneycomb.java
index ac02d1b..f4102c3 100644
--- a/v7/appcompat/src/main/java/androidx/appcompat/app/ActionBarDrawerToggleHoneycomb.java
+++ b/v7/appcompat/src/main/java/androidx/appcompat/app/ActionBarDrawerToggleHoneycomb.java
@@ -136,4 +136,7 @@
             }
         }
     }
+
+    private ActionBarDrawerToggleHoneycomb() {
+    }
 }
diff --git a/v7/appcompat/src/main/java/androidx/appcompat/app/ResourcesFlusher.java b/v7/appcompat/src/main/java/androidx/appcompat/app/ResourcesFlusher.java
index 8e1d113..2cd12d2 100644
--- a/v7/appcompat/src/main/java/androidx/appcompat/app/ResourcesFlusher.java
+++ b/v7/appcompat/src/main/java/androidx/appcompat/app/ResourcesFlusher.java
@@ -205,4 +205,7 @@
         }
         return false;
     }
+
+    private ResourcesFlusher() {
+    }
 }
diff --git a/v7/appcompat/src/main/java/androidx/appcompat/widget/AppCompatHintHelper.java b/v7/appcompat/src/main/java/androidx/appcompat/widget/AppCompatHintHelper.java
index ed28d99..bacff63 100644
--- a/v7/appcompat/src/main/java/androidx/appcompat/widget/AppCompatHintHelper.java
+++ b/v7/appcompat/src/main/java/androidx/appcompat/widget/AppCompatHintHelper.java
@@ -40,4 +40,6 @@
         return ic;
     }
 
+    private AppCompatHintHelper() {
+    }
 }
diff --git a/v7/appcompat/src/main/java/androidx/appcompat/widget/ThemeUtils.java b/v7/appcompat/src/main/java/androidx/appcompat/widget/ThemeUtils.java
index a972ca6..ee00ded 100644
--- a/v7/appcompat/src/main/java/androidx/appcompat/widget/ThemeUtils.java
+++ b/v7/appcompat/src/main/java/androidx/appcompat/widget/ThemeUtils.java
@@ -111,4 +111,6 @@
         return ColorUtils.setAlphaComponent(color, Math.round(originalAlpha * alpha));
     }
 
+    private ThemeUtils() {
+    }
 }
diff --git a/v7/recyclerview/src/main/java/androidx/recyclerview/widget/ScrollbarHelper.java b/v7/recyclerview/src/main/java/androidx/recyclerview/widget/ScrollbarHelper.java
index 683f877..8cc24ae 100644
--- a/v7/recyclerview/src/main/java/androidx/recyclerview/widget/ScrollbarHelper.java
+++ b/v7/recyclerview/src/main/java/androidx/recyclerview/widget/ScrollbarHelper.java
@@ -95,4 +95,7 @@
         // estimate a size for full list.
         return (int) ((float) laidOutArea / laidOutRange * state.getItemCount());
     }
+
+    private ScrollbarHelper() {
+    }
 }
diff --git a/wear/src/main/java/androidx/wear/ambient/SharedLibraryVersion.java b/wear/src/main/java/androidx/wear/ambient/SharedLibraryVersion.java
index 228956a..2c7f14d 100644
--- a/wear/src/main/java/androidx/wear/ambient/SharedLibraryVersion.java
+++ b/wear/src/main/java/androidx/wear/ambient/SharedLibraryVersion.java
@@ -73,6 +73,9 @@
             }
             return WearableSharedLib.version();
         }
+
+        private VersionHolder() {
+        }
     }
 
     // Lazy initialization holder class (see Effective Java item 71)
@@ -90,5 +93,8 @@
             }
             return true;
         }
+
+        private PresenceHolder() {
+        }
     }
 }
diff --git a/webkit/src/main/java/androidx/webkit/internal/WebViewGlueCommunicator.java b/webkit/src/main/java/androidx/webkit/internal/WebViewGlueCommunicator.java
index 5bb0666..22cc1f4 100644
--- a/webkit/src/main/java/androidx/webkit/internal/WebViewGlueCommunicator.java
+++ b/webkit/src/main/java/androidx/webkit/internal/WebViewGlueCommunicator.java
@@ -104,4 +104,7 @@
             throw new RuntimeException(e);
         }
     }
+
+    private WebViewGlueCommunicator() {
+    }
 }
