Remove JELLY_BEAN* mentions from *.java and *.kt code

Relnote: N/A
Test: refactoring
Change-Id: I094dfcc5d5a579af9c10e1770ee4adf3fdb1f137
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatAutoCompleteTextView.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatAutoCompleteTextView.java
index 07727c8..d184fc2 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatAutoCompleteTextView.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatAutoCompleteTextView.java
@@ -22,7 +22,6 @@
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.text.method.KeyListener;
 import android.util.AttributeSet;
 import android.view.ActionMode;
@@ -34,7 +33,6 @@
 import androidx.annotation.DrawableRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.appcompat.R;
 import androidx.appcompat.content.res.AppCompatResources;
@@ -291,7 +289,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatCheckBox.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatCheckBox.java
index c7d4f79..79d3921 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatCheckBox.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatCheckBox.java
@@ -22,7 +22,6 @@
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.text.InputFilter;
 import android.util.AttributeSet;
 import android.view.View;
@@ -32,7 +31,6 @@
 import androidx.annotation.DrawableRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.appcompat.R;
 import androidx.appcompat.content.res.AppCompatResources;
@@ -271,7 +269,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatEditText.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatEditText.java
index 770f713..fcb6eda 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatEditText.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatEditText.java
@@ -430,7 +430,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatMultiAutoCompleteTextView.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatMultiAutoCompleteTextView.java
index 1e60c1d..9ad2193 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatMultiAutoCompleteTextView.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatMultiAutoCompleteTextView.java
@@ -22,7 +22,6 @@
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.text.method.KeyListener;
 import android.util.AttributeSet;
 import android.view.inputmethod.EditorInfo;
@@ -33,7 +32,6 @@
 import androidx.annotation.DrawableRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.appcompat.R;
 import androidx.appcompat.content.res.AppCompatResources;
@@ -273,7 +271,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatRadioButton.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatRadioButton.java
index dee338b..e0eb8e0 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatRadioButton.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatRadioButton.java
@@ -22,7 +22,6 @@
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.text.InputFilter;
 import android.util.AttributeSet;
 import android.view.View;
@@ -32,7 +31,6 @@
 import androidx.annotation.DrawableRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.appcompat.R;
 import androidx.appcompat.content.res.AppCompatResources;
@@ -270,7 +268,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatSpinner.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatSpinner.java
index 3827c6d..5d5782e 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatSpinner.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatSpinner.java
@@ -320,7 +320,7 @@
     public void setPopupBackgroundDrawable(Drawable background) {
         if (mPopup != null) {
             mPopup.setBackgroundDrawable(background);
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             super.setPopupBackgroundDrawable(background);
         }
     }
@@ -334,17 +334,16 @@
     public Drawable getPopupBackground() {
         if (mPopup != null) {
             return mPopup.getBackground();
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             return super.getPopupBackground();
         }
-        return null;
     }
 
     @Override
     public void setDropDownVerticalOffset(int pixels) {
         if (mPopup != null) {
             mPopup.setVerticalOffset(pixels);
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             super.setDropDownVerticalOffset(pixels);
         }
     }
@@ -353,10 +352,9 @@
     public int getDropDownVerticalOffset() {
         if (mPopup != null) {
             return mPopup.getVerticalOffset();
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             return super.getDropDownVerticalOffset();
         }
-        return 0;
     }
 
     @Override
@@ -364,7 +362,7 @@
         if (mPopup != null) {
             mPopup.setHorizontalOriginalOffset(pixels);
             mPopup.setHorizontalOffset(pixels);
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             super.setDropDownHorizontalOffset(pixels);
         }
     }
@@ -379,17 +377,16 @@
     public int getDropDownHorizontalOffset() {
         if (mPopup != null) {
             return mPopup.getHorizontalOffset();
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             return super.getDropDownHorizontalOffset();
         }
-        return 0;
     }
 
     @Override
     public void setDropDownWidth(int pixels) {
         if (mPopup != null) {
             mDropDownWidth = pixels;
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             super.setDropDownWidth(pixels);
         }
     }
@@ -398,10 +395,9 @@
     public int getDropDownWidth() {
         if (mPopup != null) {
             return mDropDownWidth;
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+        } else {
             return super.getDropDownWidth();
         }
-        return 0;
     }
 
     @Override
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextView.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextView.java
index 1f0e15a..0b7c10b 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextView.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextView.java
@@ -623,7 +623,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
@@ -655,7 +654,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelativeWithIntrinsicBounds(@Nullable Drawable start,
             @Nullable Drawable top, @Nullable Drawable end, @Nullable Drawable bottom) {
@@ -665,7 +663,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelativeWithIntrinsicBounds(
             int start, int top, int end, int bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatToggleButton.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatToggleButton.java
index df00f20..a55a8b2 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatToggleButton.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatToggleButton.java
@@ -22,7 +22,6 @@
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.text.InputFilter;
 import android.util.AttributeSet;
 import android.widget.TextView;
@@ -31,7 +30,6 @@
 import androidx.annotation.DrawableRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.core.view.TintableBackgroundView;
 import androidx.core.view.ViewCompat;
@@ -207,7 +205,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void setCompoundDrawablesRelative(@Nullable Drawable start, @Nullable Drawable top,
             @Nullable Drawable end, @Nullable Drawable bottom) {
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ViewUtils.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ViewUtils.java
index f5119a0..4e70f9d 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ViewUtils.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ViewUtils.java
@@ -19,6 +19,7 @@
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
+import android.annotation.SuppressLint;
 import android.graphics.Rect;
 import android.os.Build;
 import android.util.Log;
@@ -46,16 +47,14 @@
     static final boolean SDK_LEVEL_SUPPORTS_AUTOSIZE = Build.VERSION.SDK_INT >= 27;
 
     static {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-            try {
-                sComputeFitSystemWindowsMethod = View.class.getDeclaredMethod(
-                        "computeFitSystemWindows", Rect.class, Rect.class);
-                if (!sComputeFitSystemWindowsMethod.isAccessible()) {
-                    sComputeFitSystemWindowsMethod.setAccessible(true);
-                }
-            } catch (NoSuchMethodException e) {
-                Log.d(TAG, "Could not find method computeFitSystemWindows. Oh well.");
+        try {
+            sComputeFitSystemWindowsMethod = View.class.getDeclaredMethod(
+                    "computeFitSystemWindows", Rect.class, Rect.class);
+            if (!sComputeFitSystemWindowsMethod.isAccessible()) {
+                sComputeFitSystemWindowsMethod.setAccessible(true);
             }
+        } catch (NoSuchMethodException e) {
+            Log.d(TAG, "Could not find method computeFitSystemWindows. Oh well.");
         }
     }
 
@@ -69,6 +68,7 @@
      * Allow calling the hidden method {@code computeFitSystemWindows(Rect, Rect)} through
      * reflection on {@code view}.
      */
+    @SuppressLint("BanUncheckedReflection")
     public static void computeFitSystemWindows(View view, Rect inoutInsets, Rect outLocalInsets) {
         if (sComputeFitSystemWindowsMethod != null) {
             try {
@@ -83,23 +83,22 @@
      * Allow calling the hidden method {@code makeOptionalFitsSystem()} through reflection on
      * {@code view}.
      */
+    @SuppressLint("BanUncheckedReflection")
     public static void makeOptionalFitsSystemWindows(View view) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            try {
-                // We need to use getMethod() for makeOptionalFitsSystemWindows since both View
-                // and ViewGroup implement the method
-                Method method = view.getClass().getMethod("makeOptionalFitsSystemWindows");
-                if (!method.isAccessible()) {
-                    method.setAccessible(true);
-                }
-                method.invoke(view);
-            } catch (NoSuchMethodException e) {
-                Log.d(TAG, "Could not find method makeOptionalFitsSystemWindows. Oh well...");
-            } catch (InvocationTargetException e) {
-                Log.d(TAG, "Could not invoke makeOptionalFitsSystemWindows", e);
-            } catch (IllegalAccessException e) {
-                Log.d(TAG, "Could not invoke makeOptionalFitsSystemWindows", e);
+        try {
+            // We need to use getMethod() for makeOptionalFitsSystemWindows since both View
+            // and ViewGroup implement the method
+            Method method = view.getClass().getMethod("makeOptionalFitsSystemWindows");
+            if (!method.isAccessible()) {
+                method.setAccessible(true);
             }
+            method.invoke(view);
+        } catch (NoSuchMethodException e) {
+            Log.d(TAG, "Could not find method makeOptionalFitsSystemWindows. Oh well...");
+        } catch (InvocationTargetException e) {
+            Log.d(TAG, "Could not invoke makeOptionalFitsSystemWindows", e);
+        } catch (IllegalAccessException e) {
+            Log.d(TAG, "Could not invoke makeOptionalFitsSystemWindows", e);
         }
     }
 }
diff --git a/appsearch/appsearch-builtin-types/api/current.txt b/appsearch/appsearch-builtin-types/api/current.txt
index 8390da2..3255d7d 100644
--- a/appsearch/appsearch-builtin-types/api/current.txt
+++ b/appsearch/appsearch-builtin-types/api/current.txt
@@ -223,8 +223,8 @@
   }
 
   @androidx.appsearch.annotation.Document(name="builtin:Stopwatch") public class Stopwatch extends androidx.appsearch.builtintypes.Thing {
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateBaseTimeMillis(android.content.Context);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateCurrentAccumulatedDurationMillis(android.content.Context);
+    method public long calculateBaseTimeMillis(android.content.Context);
+    method public long calculateCurrentAccumulatedDurationMillis(android.content.Context);
     method public long getAccumulatedDurationMillis();
     method public long getBaseTimeMillis();
     method public long getBaseTimeMillisInElapsedRealtime();
@@ -247,7 +247,7 @@
     method public androidx.appsearch.builtintypes.Stopwatch.Builder clearPotentialActions();
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setAccumulatedDurationMillis(long);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setAlternateNames(java.util.List<java.lang.String!>?);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public androidx.appsearch.builtintypes.Stopwatch.Builder setBaseTimeMillis(android.content.Context, long, long);
+    method public androidx.appsearch.builtintypes.Stopwatch.Builder setBaseTimeMillis(android.content.Context, long, long);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setBaseTimeMillis(long, long, int);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setCreationTimestampMillis(long);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setDescription(String?);
@@ -323,9 +323,9 @@
   }
 
   @androidx.appsearch.annotation.Document(name="builtin:Timer") public class Timer extends androidx.appsearch.builtintypes.Thing {
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateBaseTimeMillis(android.content.Context);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateCurrentRemainingDurationMillis(android.content.Context);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateExpirationTimeMillis(android.content.Context);
+    method public long calculateBaseTimeMillis(android.content.Context);
+    method public long calculateCurrentRemainingDurationMillis(android.content.Context);
+    method public long calculateExpirationTimeMillis(android.content.Context);
     method public long getBaseTimeMillis();
     method public long getBaseTimeMillisInElapsedRealtime();
     method public int getBootCount();
@@ -353,7 +353,7 @@
     method public androidx.appsearch.builtintypes.Timer.Builder clearAlternateNames();
     method public androidx.appsearch.builtintypes.Timer.Builder clearPotentialActions();
     method public androidx.appsearch.builtintypes.Timer.Builder setAlternateNames(java.util.List<java.lang.String!>?);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public androidx.appsearch.builtintypes.Timer.Builder setBaseTimeMillis(android.content.Context, long, long);
+    method public androidx.appsearch.builtintypes.Timer.Builder setBaseTimeMillis(android.content.Context, long, long);
     method public androidx.appsearch.builtintypes.Timer.Builder setBaseTimeMillis(long, long, int);
     method public androidx.appsearch.builtintypes.Timer.Builder setCreationTimestampMillis(long);
     method public androidx.appsearch.builtintypes.Timer.Builder setDescription(String?);
diff --git a/appsearch/appsearch-builtin-types/api/restricted_current.txt b/appsearch/appsearch-builtin-types/api/restricted_current.txt
index 422ae19..1fdbab2 100644
--- a/appsearch/appsearch-builtin-types/api/restricted_current.txt
+++ b/appsearch/appsearch-builtin-types/api/restricted_current.txt
@@ -225,8 +225,8 @@
   }
 
   @androidx.appsearch.annotation.Document(name="builtin:Stopwatch") public class Stopwatch extends androidx.appsearch.builtintypes.Thing {
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateBaseTimeMillis(android.content.Context);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateCurrentAccumulatedDurationMillis(android.content.Context);
+    method public long calculateBaseTimeMillis(android.content.Context);
+    method public long calculateCurrentAccumulatedDurationMillis(android.content.Context);
     method public long getAccumulatedDurationMillis();
     method public long getBaseTimeMillis();
     method public long getBaseTimeMillisInElapsedRealtime();
@@ -249,7 +249,7 @@
     method public androidx.appsearch.builtintypes.Stopwatch.Builder clearPotentialActions();
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setAccumulatedDurationMillis(long);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setAlternateNames(java.util.List<java.lang.String!>?);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public androidx.appsearch.builtintypes.Stopwatch.Builder setBaseTimeMillis(android.content.Context, long, long);
+    method public androidx.appsearch.builtintypes.Stopwatch.Builder setBaseTimeMillis(android.content.Context, long, long);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setBaseTimeMillis(long, long, int);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setCreationTimestampMillis(long);
     method public androidx.appsearch.builtintypes.Stopwatch.Builder setDescription(String?);
@@ -325,9 +325,9 @@
   }
 
   @androidx.appsearch.annotation.Document(name="builtin:Timer") public class Timer extends androidx.appsearch.builtintypes.Thing {
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateBaseTimeMillis(android.content.Context);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateCurrentRemainingDurationMillis(android.content.Context);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public long calculateExpirationTimeMillis(android.content.Context);
+    method public long calculateBaseTimeMillis(android.content.Context);
+    method public long calculateCurrentRemainingDurationMillis(android.content.Context);
+    method public long calculateExpirationTimeMillis(android.content.Context);
     method public long getBaseTimeMillis();
     method public long getBaseTimeMillisInElapsedRealtime();
     method public int getBootCount();
@@ -355,7 +355,7 @@
     method public androidx.appsearch.builtintypes.Timer.Builder clearAlternateNames();
     method public androidx.appsearch.builtintypes.Timer.Builder clearPotentialActions();
     method public androidx.appsearch.builtintypes.Timer.Builder setAlternateNames(java.util.List<java.lang.String!>?);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public androidx.appsearch.builtintypes.Timer.Builder setBaseTimeMillis(android.content.Context, long, long);
+    method public androidx.appsearch.builtintypes.Timer.Builder setBaseTimeMillis(android.content.Context, long, long);
     method public androidx.appsearch.builtintypes.Timer.Builder setBaseTimeMillis(long, long, int);
     method public androidx.appsearch.builtintypes.Timer.Builder setCreationTimestampMillis(long);
     method public androidx.appsearch.builtintypes.Timer.Builder setDescription(String?);
diff --git a/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Stopwatch.java b/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Stopwatch.java
index 7d0cc6f..c69c9d5 100644
--- a/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Stopwatch.java
+++ b/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Stopwatch.java
@@ -17,13 +17,11 @@
 package androidx.appsearch.builtintypes;
 
 import android.content.Context;
-import android.os.Build;
 import android.os.SystemClock;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.appsearch.annotation.Document;
 import androidx.appsearch.utils.BootCountUtil;
@@ -162,7 +160,6 @@
      * in the {@link System#currentTimeMillis()} time base. Otherwise return
      * {@link #getBaseTimeMillis()}.
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public long calculateBaseTimeMillis(@NonNull Context context) {
         int currentBootCount = BootCountUtil.getCurrentBootCount(context);
         if (currentBootCount == -1 || currentBootCount != mBootCount) {
@@ -184,7 +181,6 @@
      * {@link #getAccumulatedDurationMillis()} to get the static accumulated time stored in the
      * document.
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public long calculateCurrentAccumulatedDurationMillis(@NonNull Context context) {
         if (mStatus == STATUS_PAUSED || mStatus == STATUS_RESET) {
             return mAccumulatedDurationMillis;
@@ -276,7 +272,6 @@
          * @param baseTimeMillisInElapsedRealtime The base time in milliseconds using the
          * {@link android.os.SystemClock#elapsedRealtime()} time base.
          */
-        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
         @NonNull
         public T setBaseTimeMillis(@NonNull Context context, long baseTimeMillis,
                 long baseTimeMillisInElapsedRealtime) {
diff --git a/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Timer.java b/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Timer.java
index 60c9030..16b31f2 100644
--- a/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Timer.java
+++ b/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/builtintypes/Timer.java
@@ -17,13 +17,11 @@
 package androidx.appsearch.builtintypes;
 
 import android.content.Context;
-import android.os.Build;
 import android.os.SystemClock;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.appsearch.annotation.Document;
 import androidx.appsearch.utils.BootCountUtil;
@@ -237,7 +235,6 @@
      * in the {@link System#currentTimeMillis()} time base. Otherwise return
      * {@link #getBaseTimeMillis()}.
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public long calculateBaseTimeMillis(@NonNull Context context) {
         int currentBootCount = BootCountUtil.getCurrentBootCount(context);
         if (currentBootCount == -1 || currentBootCount != mBootCount) {
@@ -264,7 +261,6 @@
      *
      * @param context The app context
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public long calculateExpirationTimeMillis(@NonNull Context context) {
         if (mStatus == STATUS_PAUSED || mStatus == STATUS_RESET) {
             return Long.MAX_VALUE;
@@ -284,7 +280,6 @@
      *
      * @param context The app context
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public long calculateCurrentRemainingDurationMillis(@NonNull Context context) {
         if (mStatus == STATUS_PAUSED || mStatus == STATUS_RESET) {
             // The timer has not started, so the remaining time is the same as the last updated one.
@@ -421,7 +416,6 @@
          * @param baseTimeMillisInElapsedRealtime The base time in milliseconds using the
          * {@link android.os.SystemClock#elapsedRealtime()} time base.
          */
-        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
         @NonNull
         public T setBaseTimeMillis(@NonNull Context context, long baseTimeMillis,
                 long baseTimeMillisInElapsedRealtime) {
diff --git a/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/utils/BootCountUtil.java b/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/utils/BootCountUtil.java
index b1c7e1a..2370a3a 100644
--- a/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/utils/BootCountUtil.java
+++ b/appsearch/appsearch-builtin-types/src/main/java/androidx/appsearch/utils/BootCountUtil.java
@@ -19,12 +19,9 @@
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
 import android.content.Context;
-import android.os.Build;
 import android.provider.Settings;
 
-import androidx.annotation.DoNotInline;
 import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 
 /**
@@ -40,21 +37,7 @@
      * Returns the current boot count of the device if available. Otherwise return -1.
      */
     public static int getCurrentBootCount(@NonNull Context context) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            return Api17Impl.getCurrentBootCount(context);
-        }
-
-        return -1;
-    }
-
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
-    private static final class Api17Impl {
-        @DoNotInline
-        static int getCurrentBootCount(@NonNull Context context) {
-            return Settings.Global.getInt(context.getContentResolver(),
-                    Settings.Global.BOOT_COUNT, -1);
-        }
-
-        private Api17Impl() {}
+        return Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.BOOT_COUNT, -1);
     }
 }
diff --git a/biometric/biometric/src/main/java/androidx/biometric/CancellationSignalProvider.java b/biometric/biometric/src/main/java/androidx/biometric/CancellationSignalProvider.java
index fd43575..be7c431 100644
--- a/biometric/biometric/src/main/java/androidx/biometric/CancellationSignalProvider.java
+++ b/biometric/biometric/src/main/java/androidx/biometric/CancellationSignalProvider.java
@@ -16,13 +16,11 @@
 
 package androidx.biometric;
 
-import android.os.Build;
 import android.os.CancellationSignal;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.VisibleForTesting;
 
 /**
@@ -45,7 +43,6 @@
          *
          * @return An instance of {@link android.os.CancellationSignal}.
          */
-        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
         @NonNull
         android.os.CancellationSignal getBiometricCancellationSignal();
 
@@ -82,10 +79,9 @@
     CancellationSignalProvider() {
         mInjector = new Injector() {
             @Override
-            @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
             @NonNull
             public CancellationSignal getBiometricCancellationSignal() {
-                return Api16Impl.create();
+                return new CancellationSignal();
             }
 
             @Override
@@ -116,7 +112,6 @@
      * @return A cancellation signal that can be passed to
      *  {@link android.hardware.biometrics.BiometricPrompt}.
      */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
     @NonNull
     android.os.CancellationSignal getBiometricCancellationSignal() {
         if (mBiometricCancellationSignal == null) {
@@ -147,10 +142,9 @@
      * Invokes cancel for all cached cancellation signal objects and clears any references to them.
      */
     void cancel() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
-                && mBiometricCancellationSignal != null) {
+        if (mBiometricCancellationSignal != null) {
             try {
-                Api16Impl.cancel(mBiometricCancellationSignal);
+                mBiometricCancellationSignal.cancel();
             } catch (NullPointerException e) {
                 // Catch and handle NPE if thrown by framework call to cancel() (b/151316421).
                 Log.e(TAG, "Got NPE while canceling biometric authentication.", e);
@@ -167,29 +161,4 @@
             mFingerprintCancellationSignal = null;
         }
     }
-
-    /**
-     * Nested class to avoid verification errors for methods introduced in Android 4.1 (API 16).
-     */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
-    private static class Api16Impl {
-        // Prevent instantiation.
-        private Api16Impl() {}
-
-        /**
-         * Creates a new instance of the platform class {@link android.os.CancellationSignal}.
-         *
-         * @return An instance of {@link android.os.CancellationSignal}.
-         */
-        static android.os.CancellationSignal create() {
-            return new android.os.CancellationSignal();
-        }
-
-        /**
-         * Calls {@link android.os.CancellationSignal#cancel()} for the given cancellation signal.
-         */
-        static void cancel(android.os.CancellationSignal cancellationSignal) {
-            cancellationSignal.cancel();
-        }
-    }
 }
diff --git a/biometric/biometric/src/main/java/androidx/biometric/KeyguardUtils.java b/biometric/biometric/src/main/java/androidx/biometric/KeyguardUtils.java
index a5d482e..40cea3e 100644
--- a/biometric/biometric/src/main/java/androidx/biometric/KeyguardUtils.java
+++ b/biometric/biometric/src/main/java/androidx/biometric/KeyguardUtils.java
@@ -60,10 +60,7 @@
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             return Api23Impl.isDeviceSecure(keyguardManager);
         }
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            return Api16Impl.isKeyguardSecure(keyguardManager);
-        }
-        return false;
+        return keyguardManager.isKeyguardSecure();
     }
 
     /**
@@ -95,23 +92,4 @@
             return keyguardManager.isDeviceSecure();
         }
     }
-
-    /**
-     * Nested class to avoid verification errors for methods introduced in Android 4.1 (API 16).
-     */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
-    private static class Api16Impl {
-        // Prevent instantiation.
-        private Api16Impl() {}
-
-        /**
-         * Calls {@link KeyguardManager#isKeyguardSecure()} for the given keyguard manager.
-         *
-         * @param keyguardManager An instance of {@link KeyguardManager}.
-         * @return The result of {@link KeyguardManager#isKeyguardSecure()}.
-         */
-        static boolean isKeyguardSecure(@NonNull KeyguardManager keyguardManager) {
-            return keyguardManager.isKeyguardSecure();
-        }
-    }
 }
diff --git a/browser/browser/src/test/java/androidx/browser/customtabs/TestUtil.java b/browser/browser/src/test/java/androidx/browser/customtabs/TestUtil.java
index 79e40a0..e660751 100644
--- a/browser/browser/src/test/java/androidx/browser/customtabs/TestUtil.java
+++ b/browser/browser/src/test/java/androidx/browser/customtabs/TestUtil.java
@@ -23,18 +23,15 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build;
 import android.support.customtabs.ICustomTabsCallback;
 import android.support.customtabs.ICustomTabsService;
 
 import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
 
 /**
  * Utilities for unit testing Custom Tabs.
  */
 // minSdk For Bundle#getBinder
-@RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
 public class TestUtil {
 
     @NonNull
diff --git a/constraintlayout/constraintlayout/api/current.txt b/constraintlayout/constraintlayout/api/current.txt
index 518823e..2d187a8 100644
--- a/constraintlayout/constraintlayout/api/current.txt
+++ b/constraintlayout/constraintlayout/api/current.txt
@@ -563,7 +563,7 @@
     method @Deprecated public void rebuildMotion();
     method public void rebuildScene();
     method public boolean removeTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public void rotateTo(int, int);
+    method public void rotateTo(int, int);
     method public void scheduleTransitionTo(int);
     method public void setDebugMode(int);
     method public void setDelayedApplicationOfInitialState(boolean);
diff --git a/constraintlayout/constraintlayout/api/restricted_current.txt b/constraintlayout/constraintlayout/api/restricted_current.txt
index 518823e..2d187a8 100644
--- a/constraintlayout/constraintlayout/api/restricted_current.txt
+++ b/constraintlayout/constraintlayout/api/restricted_current.txt
@@ -563,7 +563,7 @@
     method @Deprecated public void rebuildMotion();
     method public void rebuildScene();
     method public boolean removeTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) public void rotateTo(int, int);
+    method public void rotateTo(int, int);
     method public void scheduleTransitionTo(int);
     method public void setDebugMode(int);
     method public void setDelayedApplicationOfInitialState(boolean);
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Carousel.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Carousel.java
index 1a6a26d..c6590b5 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Carousel.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Carousel.java
@@ -18,12 +18,10 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
 
-import androidx.annotation.RequiresApi;
 import androidx.constraintlayout.motion.widget.MotionHelper;
 import androidx.constraintlayout.motion.widget.MotionLayout;
 import androidx.constraintlayout.motion.widget.MotionScene;
@@ -325,7 +323,6 @@
         mList.clear();
     }
 
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Flow.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Flow.java
index 81f611a..d3110e9 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Flow.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Flow.java
@@ -18,7 +18,6 @@
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.os.Build;
 import android.util.AttributeSet;
 import android.util.SparseArray;
 
@@ -234,13 +233,9 @@
                 } else if (attr == R.styleable.ConstraintLayout_Layout_android_padding) {
                     mFlow.setPadding(a.getDimensionPixelSize(attr, 0));
                 } else if (attr == R.styleable.ConstraintLayout_Layout_android_paddingStart) {
-                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                        mFlow.setPaddingStart(a.getDimensionPixelSize(attr, 0));
-                    }
+                    mFlow.setPaddingStart(a.getDimensionPixelSize(attr, 0));
                 } else if (attr == R.styleable.ConstraintLayout_Layout_android_paddingEnd) {
-                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                        mFlow.setPaddingEnd(a.getDimensionPixelSize(attr, 0));
-                    }
+                    mFlow.setPaddingEnd(a.getDimensionPixelSize(attr, 0));
                 } else if (attr == R.styleable.ConstraintLayout_Layout_android_paddingLeft) {
                     mFlow.setPaddingLeft(a.getDimensionPixelSize(attr, 0));
                 } else if (attr == R.styleable.ConstraintLayout_Layout_android_paddingTop) {
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
index 1ce3995..5d23e12 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
@@ -21,7 +21,6 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
-import android.os.Build;
 import android.util.AttributeSet;
 import android.view.View;
 
@@ -715,9 +714,7 @@
      */
     private View makeNewView() {
         View v = new View(getContext());
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            v.setId(View.generateViewId());
-        }
+        v.setId(View.generateViewId());
         v.setVisibility(INVISIBLE);
         if (DEBUG_BOXES) {
             v.setVisibility(VISIBLE);
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java
index 1c10668..ef888ce 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java
@@ -51,7 +51,6 @@
 import androidx.annotation.IdRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.constraintlayout.core.motion.utils.KeyCache;
 import androidx.constraintlayout.core.widgets.ConstraintAnchor;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
@@ -68,7 +67,6 @@
 import androidx.constraintlayout.widget.Constraints;
 import androidx.constraintlayout.widget.R;
 import androidx.core.view.NestedScrollingParent3;
-import androidx.core.view.ViewCompat;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -2284,7 +2282,6 @@
      * @param id constraintSet
      * @param duration time to take to rotate
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public void rotateTo(int id, int duration) {
         mInRotation = true;
         mPreRotateWidth = getWidth();
@@ -2727,11 +2724,7 @@
                 if (DEBUG) {
                     debugLayoutParam(">>>>>>>  " + Debug.getName(view), layoutParams);
                 }
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                    layoutParams.resolveLayoutDirection(getLayoutDirection());
-                } else {
-                    layoutParams.resolveLayoutDirection(ViewCompat.LAYOUT_DIRECTION_LTR);
-                }
+                layoutParams.resolveLayoutDirection(getLayoutDirection());
                 applyConstraintsFromLayoutParams(false, view, child, layoutParams, mapIdToWidget);
                 if (cSet.getVisibilityMode(view.getId()) == ConstraintSet.VISIBILITY_MODE_IGNORE) {
                     child.setVisibility(view.getVisibility());
@@ -4333,11 +4326,9 @@
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            Display display = getDisplay();
-            if (display != null) {
-                mPreviouseRotation = display.getRotation();
-            }
+        Display display = getDisplay();
+        if (display != null) {
+            mPreviouseRotation = display.getRotation();
         }
         if (mScene != null && mCurrentState != UNSET) {
             ConstraintSet cSet = mScene.getConstraintSet(mCurrentState);
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java
index bfc5c8b..559636af 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java
@@ -1614,17 +1614,13 @@
         mMeasurer.captureLayoutInfo(widthMeasureSpec, heightMeasureSpec, paddingY, paddingBottom,
                 paddingWidth, paddingHeight);
 
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            int paddingStart = Math.max(0, getPaddingStart());
-            int paddingEnd = Math.max(0, getPaddingEnd());
-            if (paddingStart > 0 || paddingEnd > 0) {
-                if (isRtl()) {
-                    paddingX = paddingEnd;
-                } else {
-                    paddingX = paddingStart;
-                }
+        int paddingStart = Math.max(0, getPaddingStart());
+        int paddingEnd = Math.max(0, getPaddingEnd());
+        if (paddingStart > 0 || paddingEnd > 0) {
+            if (isRtl()) {
+                paddingX = paddingEnd;
             } else {
-                paddingX = Math.max(0, getPaddingLeft());
+                paddingX = paddingStart;
             }
         } else {
             paddingX = Math.max(0, getPaddingLeft());
@@ -1798,12 +1794,9 @@
     }
 
     protected boolean isRtl() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            boolean isRtlSupported = (getContext().getApplicationInfo().flags
-                    & ApplicationInfo.FLAG_SUPPORTS_RTL) != 0;
-            return isRtlSupported && (View.LAYOUT_DIRECTION_RTL == getLayoutDirection());
-        }
-        return false;
+        boolean isRtlSupported = (getContext().getApplicationInfo().flags
+                & ApplicationInfo.FLAG_SUPPORTS_RTL) != 0;
+        return isRtlSupported && (View.LAYOUT_DIRECTION_RTL == getLayoutDirection());
     }
 
     /**
@@ -1812,11 +1805,7 @@
      */
     private int getPaddingWidth() {
         int widthPadding = Math.max(0, getPaddingLeft()) + Math.max(0, getPaddingRight());
-        int rtlPadding = 0;
-
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            rtlPadding = Math.max(0, getPaddingStart()) + Math.max(0, getPaddingEnd());
-        }
+        int rtlPadding = Math.max(0, getPaddingStart()) + Math.max(0, getPaddingEnd());
         if (rtlPadding > 0) {
             widthPadding = rtlPadding;
         }
@@ -2800,10 +2789,8 @@
                 this.rightMargin = marginSource.rightMargin;
                 this.topMargin = marginSource.topMargin;
                 this.bottomMargin = marginSource.bottomMargin;
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                    this.setMarginStart(marginSource.getMarginStart());
-                    this.setMarginEnd(marginSource.getMarginEnd());
-                }
+                this.setMarginStart(marginSource.getMarginStart());
+                this.setMarginEnd(marginSource.getMarginEnd());
             }
 
             if (!(params instanceof LayoutParams)) {
@@ -3690,7 +3677,6 @@
          * {@inheritDoc}
          */
         @Override
-        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         public void resolveLayoutDirection(int layoutDirection) {
             ///////////////////////////////////////////////////////////////////////////////////////
             // Layout margins handling TODO: re-activate in 3.0
@@ -3727,11 +3713,8 @@
             int originalLeftMargin = leftMargin;
             int originalRightMargin = rightMargin;
 
-            boolean isRtl = false;
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                super.resolveLayoutDirection(layoutDirection);
-                isRtl = (View.LAYOUT_DIRECTION_RTL == getLayoutDirection());
-            }
+            super.resolveLayoutDirection(layoutDirection);
+            boolean isRtl = (View.LAYOUT_DIRECTION_RTL == getLayoutDirection());
             ///////////////////////////////////////////////////////////////////////////////////////
 
             mResolvedRightToLeft = UNSET;
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintProperties.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintProperties.java
index d2c94b9..5d1a897 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintProperties.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintProperties.java
@@ -1043,9 +1043,7 @@
                     throw new IllegalArgumentException("right to "
                             + sideToString(endSide) + " undefined");
                 }
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                    mParams.setMarginStart(margin);
-                }
+                mParams.setMarginStart(margin);
                 break;
             case END:
                 if (endSide == END) {
@@ -1058,10 +1056,7 @@
                     throw new IllegalArgumentException("right to "
                             + sideToString(endSide) + " undefined");
                 }
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-
-                    mParams.setMarginEnd(margin);
-                }
+                mParams.setMarginEnd(margin);
 
                 break;
             default:
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java
index 000c9c2..9847916 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java
@@ -812,31 +812,28 @@
                 constraint.propertySet.alpha = view.getAlpha();
                 constraint.propertySet.mApply = true;
             }
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            if (!constraint.transform.mApply) {
+                constraint.transform.mApply = true;
+                constraint.transform.rotation = view.getRotation();
+                constraint.transform.rotationX = view.getRotationX();
+                constraint.transform.rotationY = view.getRotationY();
+                constraint.transform.scaleX = view.getScaleX();
+                constraint.transform.scaleY = view.getScaleY();
 
-                if (!constraint.transform.mApply) {
-                    constraint.transform.mApply = true;
-                    constraint.transform.rotation = view.getRotation();
-                    constraint.transform.rotationX = view.getRotationX();
-                    constraint.transform.rotationY = view.getRotationY();
-                    constraint.transform.scaleX = view.getScaleX();
-                    constraint.transform.scaleY = view.getScaleY();
+                float pivotX = view.getPivotX(); // we assume it is not set if set to 0.0
+                float pivotY = view.getPivotY(); // we assume it is not set if set to 0.0
 
-                    float pivotX = view.getPivotX(); // we assume it is not set if set to 0.0
-                    float pivotY = view.getPivotY(); // we assume it is not set if set to 0.0
+                if (pivotX != 0.0 || pivotY != 0.0) {
+                    constraint.transform.transformPivotX = pivotX;
+                    constraint.transform.transformPivotY = pivotY;
+                }
 
-                    if (pivotX != 0.0 || pivotY != 0.0) {
-                        constraint.transform.transformPivotX = pivotX;
-                        constraint.transform.transformPivotY = pivotY;
-                    }
-
-                    constraint.transform.translationX = view.getTranslationX();
-                    constraint.transform.translationY = view.getTranslationY();
-                    if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
-                        constraint.transform.translationZ = view.getTranslationZ();
-                        if (constraint.transform.applyElevation) {
-                            constraint.transform.elevation = view.getElevation();
-                        }
+                constraint.transform.translationX = view.getTranslationX();
+                constraint.transform.translationY = view.getTranslationY();
+                if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
+                    constraint.transform.translationZ = view.getTranslationZ();
+                    if (constraint.transform.applyElevation) {
+                        constraint.transform.elevation = view.getElevation();
                     }
                 }
             }
@@ -1657,14 +1654,10 @@
                         rightMargin = a.getDimensionPixelSize(attr, rightMargin);
                         break;
                     case START_MARGIN:
-                        if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
-                            startMargin = a.getDimensionPixelSize(attr, startMargin);
-                        }
+                        startMargin = a.getDimensionPixelSize(attr, startMargin);
                         break;
                     case END_MARGIN:
-                        if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
-                            endMargin = a.getDimensionPixelSize(attr, endMargin);
-                        }
+                        endMargin = a.getDimensionPixelSize(attr, endMargin);
                         break;
                     case TOP_MARGIN:
                         topMargin = a.getDimensionPixelSize(attr, topMargin);
@@ -2391,12 +2384,8 @@
             layout.goneEndMargin = param.goneEndMargin;
             layout.goneBaselineMargin = param.goneBaselineMargin;
             layout.mWrapBehavior = param.wrapBehaviorInParent;
-
-            int currentApiVersion = android.os.Build.VERSION.SDK_INT;
-            if (currentApiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                layout.endMargin = param.getMarginEnd();
-                layout.startMargin = param.getMarginStart();
-            }
+            layout.endMargin = param.getMarginEnd();
+            layout.startMargin = param.getMarginStart();
         }
 
         /**
@@ -2467,10 +2456,8 @@
             }
             param.wrapBehaviorInParent = layout.mWrapBehavior;
 
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                param.setMarginStart(layout.startMargin);
-                param.setMarginEnd(layout.endMargin);
-            }
+            param.setMarginStart(layout.startMargin);
+            param.setMarginEnd(layout.endMargin);
 
             param.validate();
         }
@@ -2532,29 +2519,27 @@
                     ConstraintAttribute.extractAttributes(mSavedAttributes, view);
             constraint.fillFrom(id, param);
             constraint.propertySet.visibility = view.getVisibility();
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                constraint.propertySet.alpha = view.getAlpha();
-                constraint.transform.rotation = view.getRotation();
-                constraint.transform.rotationX = view.getRotationX();
-                constraint.transform.rotationY = view.getRotationY();
-                constraint.transform.scaleX = view.getScaleX();
-                constraint.transform.scaleY = view.getScaleY();
+            constraint.propertySet.alpha = view.getAlpha();
+            constraint.transform.rotation = view.getRotation();
+            constraint.transform.rotationX = view.getRotationX();
+            constraint.transform.rotationY = view.getRotationY();
+            constraint.transform.scaleX = view.getScaleX();
+            constraint.transform.scaleY = view.getScaleY();
 
-                float pivotX = view.getPivotX(); // we assume it is not set if set to 0.0
-                float pivotY = view.getPivotY(); // we assume it is not set if set to 0.0
+            float pivotX = view.getPivotX(); // we assume it is not set if set to 0.0
+            float pivotY = view.getPivotY(); // we assume it is not set if set to 0.0
 
-                if (pivotX != 0.0 || pivotY != 0.0) {
-                    constraint.transform.transformPivotX = pivotX;
-                    constraint.transform.transformPivotY = pivotY;
-                }
+            if (pivotX != 0.0 || pivotY != 0.0) {
+                constraint.transform.transformPivotX = pivotX;
+                constraint.transform.transformPivotY = pivotY;
+            }
 
-                constraint.transform.translationX = view.getTranslationX();
-                constraint.transform.translationY = view.getTranslationY();
-                if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
-                    constraint.transform.translationZ = view.getTranslationZ();
-                    if (constraint.transform.applyElevation) {
-                        constraint.transform.elevation = view.getElevation();
-                    }
+            constraint.transform.translationX = view.getTranslationX();
+            constraint.transform.translationY = view.getTranslationY();
+            if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
+                constraint.transform.translationZ = view.getTranslationZ();
+                if (constraint.transform.applyElevation) {
+                    constraint.transform.elevation = view.getElevation();
                 }
             }
             if (view instanceof Barrier) {
@@ -2742,43 +2727,41 @@
                 if (constraint.propertySet.mVisibilityMode == VISIBILITY_MODE_NORMAL) {
                     view.setVisibility(constraint.propertySet.visibility);
                 }
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                    view.setAlpha(constraint.propertySet.alpha);
-                    view.setRotation(constraint.transform.rotation);
-                    view.setRotationX(constraint.transform.rotationX);
-                    view.setRotationY(constraint.transform.rotationY);
-                    view.setScaleX(constraint.transform.scaleX);
-                    view.setScaleY(constraint.transform.scaleY);
-                    if (constraint.transform.transformPivotTarget != UNSET) {
-                        View layout = (View) view.getParent();
-                        View center = layout.findViewById(
-                                constraint.transform.transformPivotTarget);
-                        if (center != null) {
-                            float cy = (center.getTop() + center.getBottom()) / 2.0f;
-                            float cx = (center.getLeft() + center.getRight()) / 2.0f;
-                            if (view.getRight() - view.getLeft() > 0
-                                    && view.getBottom() - view.getTop() > 0) {
-                                float px = (cx - view.getLeft());
-                                float py = (cy - view.getTop());
-                                view.setPivotX(px);
-                                view.setPivotY(py);
-                            }
-                        }
-                    } else {
-                        if (!Float.isNaN(constraint.transform.transformPivotX)) {
-                            view.setPivotX(constraint.transform.transformPivotX);
-                        }
-                        if (!Float.isNaN(constraint.transform.transformPivotY)) {
-                            view.setPivotY(constraint.transform.transformPivotY);
+                view.setAlpha(constraint.propertySet.alpha);
+                view.setRotation(constraint.transform.rotation);
+                view.setRotationX(constraint.transform.rotationX);
+                view.setRotationY(constraint.transform.rotationY);
+                view.setScaleX(constraint.transform.scaleX);
+                view.setScaleY(constraint.transform.scaleY);
+                if (constraint.transform.transformPivotTarget != UNSET) {
+                    View layout = (View) view.getParent();
+                    View center = layout.findViewById(
+                            constraint.transform.transformPivotTarget);
+                    if (center != null) {
+                        float cy = (center.getTop() + center.getBottom()) / 2.0f;
+                        float cx = (center.getLeft() + center.getRight()) / 2.0f;
+                        if (view.getRight() - view.getLeft() > 0
+                                && view.getBottom() - view.getTop() > 0) {
+                            float px = (cx - view.getLeft());
+                            float py = (cy - view.getTop());
+                            view.setPivotX(px);
+                            view.setPivotY(py);
                         }
                     }
-                    view.setTranslationX(constraint.transform.translationX);
-                    view.setTranslationY(constraint.transform.translationY);
-                    if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
-                        view.setTranslationZ(constraint.transform.translationZ);
-                        if (constraint.transform.applyElevation) {
-                            view.setElevation(constraint.transform.elevation);
-                        }
+                } else {
+                    if (!Float.isNaN(constraint.transform.transformPivotX)) {
+                        view.setPivotX(constraint.transform.transformPivotX);
+                    }
+                    if (!Float.isNaN(constraint.transform.transformPivotY)) {
+                        view.setPivotY(constraint.transform.transformPivotY);
+                    }
+                }
+                view.setTranslationX(constraint.transform.translationX);
+                view.setTranslationY(constraint.transform.translationY);
+                if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
+                    view.setTranslationZ(constraint.transform.translationZ);
+                    if (constraint.transform.applyElevation) {
+                        view.setElevation(constraint.transform.elevation);
                     }
                 }
             } else {
@@ -4817,15 +4800,11 @@
                     delta.add(RIGHT_MARGIN, a.getDimensionPixelSize(attr, c.layout.rightMargin));
                     break;
                 case START_MARGIN:
-                    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
-                        delta.add(START_MARGIN,
-                                a.getDimensionPixelSize(attr, c.layout.startMargin));
-                    }
+                    delta.add(START_MARGIN,
+                            a.getDimensionPixelSize(attr, c.layout.startMargin));
                     break;
                 case END_MARGIN:
-                    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
-                        delta.add(END_MARGIN, a.getDimensionPixelSize(attr, c.layout.endMargin));
-                    }
+                    delta.add(END_MARGIN, a.getDimensionPixelSize(attr, c.layout.endMargin));
                     break;
                 case TOP_MARGIN:
                     delta.add(TOP_MARGIN, a.getDimensionPixelSize(attr, c.layout.topMargin));
@@ -5533,14 +5512,10 @@
                     c.layout.rightMargin = a.getDimensionPixelSize(attr, c.layout.rightMargin);
                     break;
                 case START_MARGIN:
-                    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
-                        c.layout.startMargin = a.getDimensionPixelSize(attr, c.layout.startMargin);
-                    }
+                    c.layout.startMargin = a.getDimensionPixelSize(attr, c.layout.startMargin);
                     break;
                 case END_MARGIN:
-                    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
-                        c.layout.endMargin = a.getDimensionPixelSize(attr, c.layout.endMargin);
-                    }
+                    c.layout.endMargin = a.getDimensionPixelSize(attr, c.layout.endMargin);
                     break;
                 case TOP_MARGIN:
                     c.layout.topMargin = a.getDimensionPixelSize(attr, c.layout.topMargin);
diff --git a/contentpager/contentpager/src/main/java/androidx/contentpager/content/Query.java b/contentpager/contentpager/src/main/java/androidx/contentpager/content/Query.java
index 5e82ac1..a48c380 100644
--- a/contentpager/contentpager/src/main/java/androidx/contentpager/content/Query.java
+++ b/contentpager/contentpager/src/main/java/androidx/contentpager/content/Query.java
@@ -120,34 +120,22 @@
                     mCancellationSignal);
         }
 
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            if (DEBUG) Log.d(TAG, "Falling back to pre-O query method.");
-            return resolver.query(
-                    mUri,
-                    mProjection,
-                    null,
-                    null,
-                    null,
-                    mCancellationSignal);
-        }
-
-        if (DEBUG) Log.d(TAG, "Falling back to pre-jellybean query method.");
+        if (DEBUG) Log.d(TAG, "Falling back to pre-O query method.");
         return resolver.query(
                 mUri,
                 mProjection,
                 null,
                 null,
-                null);
+                null,
+                mCancellationSignal);
     }
 
     void cancel() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            if (mCancellationSignal != null && !mCancellationSignal.isCanceled()) {
-                if (DEBUG) {
-                    Log.d(TAG, "Attemping to cancel query provider processings: " + this);
-                }
-                mCancellationSignal.cancel();
+        if (mCancellationSignal != null && !mCancellationSignal.isCanceled()) {
+            if (DEBUG) {
+                Log.d(TAG, "Attemping to cancel query provider processings: " + this);
             }
+            mCancellationSignal.cancel();
         }
     }
 
diff --git a/core/core-animation/src/main/java/androidx/core/animation/AnimationHandler.java b/core/core-animation/src/main/java/androidx/core/animation/AnimationHandler.java
index a6fd897..0d1ff1a 100644
--- a/core/core-animation/src/main/java/androidx/core/animation/AnimationHandler.java
+++ b/core/core-animation/src/main/java/androidx/core/animation/AnimationHandler.java
@@ -16,14 +16,8 @@
 
 package androidx.core.animation;
 
-import android.os.Build;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.SystemClock;
 import android.view.Choreographer;
 
-import androidx.annotation.RequiresApi;
-
 import java.util.ArrayList;
 
 /**
@@ -71,11 +65,7 @@
 
     AnimationHandler(AnimationFrameCallbackProvider provider) {
         if (provider == null) {
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-                mProvider = new FrameCallbackProvider16();
-            } else {
-                mProvider = new FrameCallbackProvider14(this);
-            }
+            mProvider = new FrameCallbackProvider16();
         } else {
             mProvider = provider;
         }
@@ -187,7 +177,6 @@
     /**
      * Default provider of timing pulse that uses Choreographer for frame callbacks.
      */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
     private class FrameCallbackProvider16 implements AnimationFrameCallbackProvider,
             Choreographer.FrameCallback {
 
@@ -219,58 +208,6 @@
     }
 
     /**
-     * Frame provider for ICS and ICS-MR1 releases. The frame callback is achieved via posting
-     * a Runnable to the main thread Handler with a delay.
-     */
-    private static class FrameCallbackProvider14 implements AnimationFrameCallbackProvider,
-            Runnable {
-
-        private static final ThreadLocal<Handler> sHandler = new ThreadLocal<>();
-        private long mLastFrameTime = -1;
-        private long mFrameDelay = 16;
-        AnimationHandler mAnimationHandler;
-
-        FrameCallbackProvider14(AnimationHandler animationHandler) {
-            mAnimationHandler = animationHandler;
-        }
-
-        Handler getHandler() {
-            if (sHandler.get() == null) {
-                sHandler.set(new Handler(Looper.myLooper()));
-            }
-            return sHandler.get();
-        }
-
-        @Override
-        public void run() {
-            mLastFrameTime = SystemClock.uptimeMillis();
-            mAnimationHandler.onAnimationFrame(mLastFrameTime);
-        }
-
-        @Override
-        public void onNewCallbackAdded(AnimationFrameCallback callback) {}
-
-        @Override
-        public void postFrameCallback() {
-            long delay = mFrameDelay - (SystemClock.uptimeMillis()
-                    - mLastFrameTime);
-            delay = Math.max(delay, 0);
-            getHandler().postDelayed(this, delay);
-        }
-
-        // TODO: consider removing frame delay setter/getter from ValueAnimator
-        @Override
-        public void setFrameDelay(long delay) {
-            mFrameDelay = delay > 0 ? delay : 0;
-        }
-
-        @Override
-        public long getFrameDelay() {
-            return mFrameDelay;
-        }
-    }
-
-    /**
      * The intention for having this interface is to increase the testability of ValueAnimator.
      * Specifically, we can have a custom implementation of the interface below and provide
      * timing pulse without using Choreographer. That way we could use any arbitrary interval for
diff --git a/core/core/src/androidTest/java/androidx/core/widget/TextViewCompatTest.java b/core/core/src/androidTest/java/androidx/core/widget/TextViewCompatTest.java
index 5c9b46a..d0edce2 100644
--- a/core/core/src/androidTest/java/androidx/core/widget/TextViewCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/widget/TextViewCompatTest.java
@@ -47,7 +47,6 @@
 import android.graphics.Paint;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.os.Looper;
 import android.support.v4.BaseInstrumentationTestCase;
 import android.support.v4.testutils.TestUtils;
@@ -681,19 +680,15 @@
 
         TextViewCompat.setLineHeight(mTextView, 100);
         assertEquals(100, mTextView.getLineHeight());
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            assertNotEquals(lineSpacingExtra, mTextView.getLineSpacingExtra(), 0);
-            assertNotEquals(lineSpacingMultiplier, mTextView.getLineSpacingMultiplier(), 0);
-        }
+        assertNotEquals(lineSpacingExtra, mTextView.getLineSpacingExtra(), 0);
+        assertNotEquals(lineSpacingMultiplier, mTextView.getLineSpacingMultiplier(), 0);
 
         TextViewCompat.setLineHeight(mTextView, 200);
         assertEquals(200, mTextView.getLineHeight());
 
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            mTextView.setLineSpacing(lineSpacingExtra, lineSpacingMultiplier);
-            assertEquals(lineSpacingExtra, mTextView.getLineSpacingExtra(), 0);
-            assertEquals(lineSpacingMultiplier, mTextView.getLineSpacingMultiplier(), 0);
-        }
+        mTextView.setLineSpacing(lineSpacingExtra, lineSpacingMultiplier);
+        assertEquals(lineSpacingExtra, mTextView.getLineSpacingExtra(), 0);
+        assertEquals(lineSpacingMultiplier, mTextView.getLineSpacingMultiplier(), 0);
     }
 
     @UiThreadTest
diff --git a/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java b/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java
index 9752076..916d2ea 100644
--- a/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java
+++ b/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java
@@ -122,11 +122,7 @@
                 } else {
                     mBreakStrategy = mHyphenationFrequency = 0;
                 }
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-                    mTextDir = TextDirectionHeuristics.FIRSTSTRONG_LTR;
-                } else {
-                    mTextDir = null;
-                }
+                mTextDir = TextDirectionHeuristics.FIRSTSTRONG_LTR;
             }
 
             /**
@@ -303,7 +299,7 @@
                 if (!mPaint.getTextLocales().equals(other.getTextPaint().getTextLocales())) {
                     return false;
                 }
-            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            } else {
                 if (!mPaint.getTextLocale().equals(other.getTextPaint().getTextLocale())) {
                     return false;
                 }
@@ -336,12 +332,7 @@
             if (!equalsWithoutTextDirection(other)) {
                 return false;
             }
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-                if (mTextDir != other.getTextDirection()) {
-                    return false;
-                }
-            }
-            return true;
+            return mTextDir == other.getTextDirection();
         }
 
         @Override
@@ -356,18 +347,10 @@
                         mPaint.getTextSkewX(), mPaint.getLetterSpacing(), mPaint.getFlags(),
                         mPaint.getTextLocale(), mPaint.getTypeface(), mPaint.isElegantTextHeight(),
                         mTextDir, mBreakStrategy, mHyphenationFrequency);
-            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-                return ObjectsCompat.hash(mPaint.getTextSize(), mPaint.getTextScaleX(),
-                        mPaint.getTextSkewX(), mPaint.getFlags(), mPaint.getTextLocale(),
-                        mPaint.getTypeface(), mTextDir, mBreakStrategy, mHyphenationFrequency);
-            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                return ObjectsCompat.hash(mPaint.getTextSize(), mPaint.getTextScaleX(),
-                        mPaint.getTextSkewX(), mPaint.getFlags(), mPaint.getTextLocale(),
-                        mPaint.getTypeface(), mTextDir, mBreakStrategy, mHyphenationFrequency);
             } else {
                 return ObjectsCompat.hash(mPaint.getTextSize(), mPaint.getTextScaleX(),
-                        mPaint.getTextSkewX(), mPaint.getFlags(), mPaint.getTypeface(), mTextDir,
-                        mBreakStrategy, mHyphenationFrequency);
+                        mPaint.getTextSkewX(), mPaint.getFlags(), mPaint.getTextLocale(),
+                        mPaint.getTypeface(), mTextDir, mBreakStrategy, mHyphenationFrequency);
             }
         }
 
@@ -383,7 +366,7 @@
             }
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                 sb.append(", textLocale=" + mPaint.getTextLocales());
-            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            } else {
                 sb.append(", textLocale=" + mPaint.getTextLocale());
             }
             sb.append(", typeface=" + mPaint.getTypeface());
diff --git a/core/core/src/main/java/androidx/core/view/DisplayCompat.java b/core/core/src/main/java/androidx/core/view/DisplayCompat.java
index 816d397..64a170e 100644
--- a/core/core/src/main/java/androidx/core/view/DisplayCompat.java
+++ b/core/core/src/main/java/androidx/core/view/DisplayCompat.java
@@ -75,11 +75,7 @@
         }
 
         displaySize = new Point();
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            Api17Impl.getRealSize(display, displaySize);
-        } else {
-            display.getSize(displaySize);
-        }
+        display.getRealSize(displaySize);
         return displaySize;
     }
 
@@ -304,15 +300,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
-    static class Api17Impl {
-        private Api17Impl() {}
-
-        static void getRealSize(Display display, Point displaySize) {
-            display.getRealSize(displaySize);
-        }
-    }
-
     /**
      * Compat class which provides access to the underlying display mode, if there is one, and
      * a more reliable display mode size.
diff --git a/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/AnimationHandler.java b/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/AnimationHandler.java
index ad78b7a..45f6d93 100644
--- a/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/AnimationHandler.java
+++ b/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/AnimationHandler.java
@@ -18,7 +18,6 @@
 
 import android.animation.ValueAnimator;
 import android.os.Build;
-import android.os.Handler;
 import android.os.Looper;
 import android.os.SystemClock;
 import android.view.Choreographer;
@@ -74,7 +73,6 @@
         }
     }
 
-    private static final long FRAME_DELAY_MS = 10;
     private static final ThreadLocal<AnimationHandler> sAnimatorHandler = new ThreadLocal<>();
 
     /**
@@ -103,9 +101,7 @@
     static AnimationHandler getInstance() {
         if (sAnimatorHandler.get() == null) {
             AnimationHandler handler = new AnimationHandler(
-                    Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
-                            ? new FrameCallbackScheduler16()
-                            : new FrameCallbackScheduler14());
+                    new FrameCallbackScheduler16());
             sAnimatorHandler.set(handler);
         }
         return sAnimatorHandler.get();
@@ -229,7 +225,6 @@
     /**
      * Default provider of timing pulse that uses Choreographer for frame callbacks.
      */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
     static final class FrameCallbackScheduler16 implements FrameCallbackScheduler {
 
         private final Choreographer mChoreographer = Choreographer.getInstance();
@@ -247,31 +242,6 @@
     }
 
     /**
-     * Frame provider for ICS and ICS-MR1 releases. The frame callback is achieved via posting
-     * a Runnable to the main thread Handler with a delay.
-     */
-    static class FrameCallbackScheduler14 implements FrameCallbackScheduler {
-
-        private final Handler mHandler = new Handler(Looper.myLooper());
-        private long mLastFrameTime;
-
-        @Override
-        public void postFrameCallback(@NonNull Runnable frameCallback) {
-            long delay = FRAME_DELAY_MS - (SystemClock.uptimeMillis() - mLastFrameTime);
-            delay = Math.max(delay, 0);
-            mHandler.postDelayed(() -> {
-                mLastFrameTime = SystemClock.uptimeMillis();
-                frameCallback.run();
-            }, delay);
-        }
-
-        @Override
-        public boolean isCurrentThread() {
-            return Thread.currentThread() == mHandler.getLooper().getThread();
-        }
-    }
-
-    /**
      * Returns the system-wide scaling factor for animations.
      */
     @VisibleForTesting
diff --git a/leanback/leanback/src/main/java/androidx/leanback/widget/picker/DatePicker.java b/leanback/leanback/src/main/java/androidx/leanback/widget/picker/DatePicker.java
index c9cc934..b1013f5 100644
--- a/leanback/leanback/src/main/java/androidx/leanback/widget/picker/DatePicker.java
+++ b/leanback/leanback/src/main/java/androidx/leanback/widget/picker/DatePicker.java
@@ -139,19 +139,8 @@
      */
     @VisibleForTesting
     String getBestYearMonthDayPattern(String datePickerFormat) {
-        final String yearPattern;
-        if (PickerUtility.SUPPORTS_BEST_DATE_TIME_PATTERN) {
-            yearPattern = android.text.format.DateFormat.getBestDateTimePattern(mConstant.locale,
-                    datePickerFormat);
-        } else {
-            final java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(
-                    getContext());
-            if (dateFormat instanceof SimpleDateFormat) {
-                yearPattern = ((SimpleDateFormat) dateFormat).toLocalizedPattern();
-            } else {
-                yearPattern = DATE_FORMAT;
-            }
-        }
+        final String yearPattern = android.text.format.DateFormat.getBestDateTimePattern(
+                mConstant.locale, datePickerFormat);
         return TextUtils.isEmpty(yearPattern) ? DATE_FORMAT : yearPattern;
     }
 
diff --git a/leanback/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java b/leanback/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java
index 707bf2f..425d029 100644
--- a/leanback/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java
+++ b/leanback/leanback/src/main/java/androidx/leanback/widget/picker/PickerUtility.java
@@ -17,7 +17,6 @@
 package androidx.leanback.widget.picker;
 
 import android.content.res.Resources;
-import android.os.Build;
 
 import java.text.DateFormatSymbols;
 import java.util.Calendar;
@@ -29,9 +28,6 @@
  */
 class PickerUtility {
 
-    // Whether the API version supports the use of {@link DateFormat#getBestDateTimePattern()}
-    static final boolean SUPPORTS_BEST_DATE_TIME_PATTERN =
-            Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2;
     public static class DateConstant {
         public final Locale locale;
         public final String[] months;
diff --git a/leanback/leanback/src/main/java/androidx/leanback/widget/picker/TimePicker.java b/leanback/leanback/src/main/java/androidx/leanback/widget/picker/TimePicker.java
index 3cc9f88..32e6a81 100644
--- a/leanback/leanback/src/main/java/androidx/leanback/widget/picker/TimePicker.java
+++ b/leanback/leanback/src/main/java/androidx/leanback/widget/picker/TimePicker.java
@@ -28,7 +28,6 @@
 import androidx.core.view.ViewCompat;
 import androidx.leanback.R;
 
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
@@ -154,26 +153,8 @@
      * @return The best localized representation of time for the current locale
      */
     String getBestHourMinutePattern() {
-        final String hourPattern;
-        if (PickerUtility.SUPPORTS_BEST_DATE_TIME_PATTERN) {
-            hourPattern = DateFormat.getBestDateTimePattern(mConstant.locale, mIs24hFormat ? "Hma"
-                    : "hma");
-        } else {
-            // Using short style to avoid picking extra fields e.g. time zone in the returned time
-            // format.
-            final java.text.DateFormat dateFormat =
-                    SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT, mConstant.locale);
-            if (dateFormat instanceof SimpleDateFormat) {
-                String defaultPattern = ((SimpleDateFormat) dateFormat).toPattern();
-                defaultPattern = defaultPattern.replace("s", "");
-                if (mIs24hFormat) {
-                    defaultPattern = defaultPattern.replace('h', 'H').replace("a", "");
-                }
-                hourPattern = defaultPattern;
-            } else {
-                hourPattern = mIs24hFormat ? "H:mma" : "h:mma";
-            }
-        }
+        final String hourPattern = DateFormat.getBestDateTimePattern(mConstant.locale,
+                mIs24hFormat ? "Hma" : "hma");
         return TextUtils.isEmpty(hourPattern) ? "h:mma" : hourPattern;
     }
 
diff --git a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterInitializationTest.java b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterInitializationTest.java
index f455714..0c17a4e 100644
--- a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterInitializationTest.java
+++ b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterInitializationTest.java
@@ -22,11 +22,9 @@
 import static org.junit.Assert.assertTrue;
 
 import android.content.Context;
-import android.os.Build;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
-import androidx.test.filters.SdkSuppress;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -39,7 +37,6 @@
     /**
      * This test checks weather MediaRouter is initialized well if an empty route exists
      */
-    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     @Test
     @MediumTest
     public void testEmptyUserRoute() throws Exception {
diff --git a/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/endtoend/TestUtil.java b/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/endtoend/TestUtil.java
index 33988c1..4900663 100644
--- a/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/endtoend/TestUtil.java
+++ b/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/endtoend/TestUtil.java
@@ -44,10 +44,8 @@
     }
     // Run shell command.
     private void runShellCommand(String command) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                mInstrumentation.getUiAutomation().executeShellCommand(command);
-            }
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            mInstrumentation.getUiAutomation().executeShellCommand(command);
         }
     }
     public void overrideKillSwitches(boolean override) {
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/FocusSearchNavigationTest.java b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/FocusSearchNavigationTest.java
index c6526a4..bd3d853 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/FocusSearchNavigationTest.java
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/FocusSearchNavigationTest.java
@@ -29,7 +29,6 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.os.Build;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -77,19 +76,11 @@
 
     @Parameterized.Parameters(name = "orientation:{0},layoutDir:{1}")
     public static List<Object[]> params() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            return Arrays.asList(
-                    new Object[]{VERTICAL, ViewCompat.LAYOUT_DIRECTION_LTR},
-                    new Object[]{HORIZONTAL, ViewCompat.LAYOUT_DIRECTION_LTR},
-                    new Object[]{HORIZONTAL, ViewCompat.LAYOUT_DIRECTION_RTL}
-            );
-        } else {
-            // Do not test RTL before API 17
-            return Arrays.asList(
-                    new Object[]{VERTICAL, ViewCompat.LAYOUT_DIRECTION_LTR},
-                    new Object[]{HORIZONTAL, ViewCompat.LAYOUT_DIRECTION_LTR}
-            );
-        }
+        return Arrays.asList(
+                new Object[]{VERTICAL, ViewCompat.LAYOUT_DIRECTION_LTR},
+                new Object[]{HORIZONTAL, ViewCompat.LAYOUT_DIRECTION_LTR},
+                new Object[]{HORIZONTAL, ViewCompat.LAYOUT_DIRECTION_RTL}
+        );
     }
 
     private Activity mActivity;
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/GridLayoutManagerUiAutomationTests.java b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/GridLayoutManagerUiAutomationTests.java
index 09ce118..dfa91ae 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/GridLayoutManagerUiAutomationTests.java
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/GridLayoutManagerUiAutomationTests.java
@@ -891,7 +891,6 @@
     }
 
     @NonNull
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
     private UiAutomation setUpAndReturnUiAutomation() {
         UiAutomation uiAutomation = getInstrumentation().getUiAutomation();
         final AccessibilityServiceInfo info = uiAutomation.getServiceInfo();
diff --git a/room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/test/MailDaoTest.java b/room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/test/MailDaoTest.java
index cee8987..334c191 100644
--- a/room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/test/MailDaoTest.java
+++ b/room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/test/MailDaoTest.java
@@ -20,14 +20,12 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import android.content.Context;
-import android.os.Build;
 
 import androidx.room.Room;
 import androidx.room.integration.autovaluetestapp.FtsTestDatabase;
 import androidx.room.integration.autovaluetestapp.vo.Mail;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.filters.SmallTest;
 
 import org.junit.Before;
@@ -39,7 +37,6 @@
 
 @RunWith(AndroidJUnit4.class)
 @SmallTest
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
 public class MailDaoTest {
 
     private FtsTestDatabase mDatabase;
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/AutoMigrationTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/AutoMigrationTest.java
index fb06e90..5ab9762 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/AutoMigrationTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/AutoMigrationTest.java
@@ -21,7 +21,6 @@
 
 import android.database.sqlite.SQLiteConstraintException;
 import android.database.sqlite.SQLiteException;
-import android.os.Build;
 
 import androidx.annotation.NonNull;
 import androidx.room.DatabaseConfiguration;
@@ -31,7 +30,6 @@
 import androidx.sqlite.db.SupportSQLiteDatabase;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.platform.app.InstrumentationRegistry;
 
 import org.junit.Rule;
@@ -45,7 +43,6 @@
  */
 @RunWith(AndroidJUnit4.class)
 @LargeTest
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN) // Due to FTS table migrations
 public class AutoMigrationTest {
     private static final String TEST_DB = "auto-migration-test";
     @Rule
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/FtsMigrationTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/FtsMigrationTest.java
index 2ba57a6..80fb02e7 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/FtsMigrationTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/migration/FtsMigrationTest.java
@@ -22,7 +22,6 @@
 import static org.junit.Assert.fail;
 
 import android.content.Context;
-import android.os.Build;
 
 import androidx.annotation.NonNull;
 import androidx.room.ColumnInfo;
@@ -43,7 +42,6 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.platform.app.InstrumentationRegistry;
 
 import org.junit.Rule;
@@ -54,7 +52,6 @@
 
 @RunWith(AndroidJUnit4.class)
 @MediumTest
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
 public class FtsMigrationTest {
     private static final String TEST_DB = "migration-test";
     @Rule
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/EntityUpsertionAdapterTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/EntityUpsertionAdapterTest.java
index 8e7343a..6e607d1 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/EntityUpsertionAdapterTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/EntityUpsertionAdapterTest.java
@@ -19,7 +19,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.database.sqlite.SQLiteConstraintException;
-import android.os.Build;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -36,7 +35,6 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
-import androidx.test.filters.SdkSuppress;
 
 import org.junit.After;
 import org.junit.Before;
@@ -49,7 +47,6 @@
 
 @RunWith(AndroidJUnit4.class)
 @MediumTest
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
 public class EntityUpsertionAdapterTest{
     private TestDatabase mTestDatabase;
     private PetDao mPetDao;
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/FtsTableTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/FtsTableTest.java
index ea13845..90a2d19 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/FtsTableTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/FtsTableTest.java
@@ -20,7 +20,6 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import android.content.Context;
-import android.os.Build;
 
 import androidx.room.Room;
 import androidx.room.integration.testapp.FtsTestDatabase;
@@ -31,7 +30,6 @@
 import androidx.room.integration.testapp.vo.SongDescription;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.filters.SmallTest;
 
 import com.google.common.collect.Lists;
@@ -44,7 +42,6 @@
 
 @RunWith(AndroidJUnit4.class)
 @SmallTest
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
 public class FtsTableTest {
 
     private FtsTestDatabase mDatabase;
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/InvalidationTrackerBehavioralTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/InvalidationTrackerBehavioralTest.java
index 2aca929..de1c514 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/InvalidationTrackerBehavioralTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/InvalidationTrackerBehavioralTest.java
@@ -19,8 +19,6 @@
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-import android.os.Build;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.room.Dao;
@@ -35,7 +33,6 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.FlakyTest;
 import androidx.test.filters.LargeTest;
-import androidx.test.filters.SdkSuppress;
 
 import org.junit.After;
 import org.junit.Before;
@@ -80,7 +77,6 @@
     }
 
     @Test
-    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     public void testInserts_JournalModeWAL() throws ExecutionException, InterruptedException {
         testInserts(RoomDatabase.JournalMode.WRITE_AHEAD_LOGGING);
     }
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/LiveDataQueryTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/LiveDataQueryTest.java
index 2cfafdef..87155d8 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/LiveDataQueryTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/LiveDataQueryTest.java
@@ -361,7 +361,6 @@
     }
 
     @Test
-    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     public void withFtsTable() throws ExecutionException, InterruptedException, TimeoutException {
         final Context context = ApplicationProvider.getApplicationContext();
         final FtsTestDatabase db = Room.inMemoryDatabaseBuilder(context, FtsTestDatabase.class)
@@ -383,7 +382,6 @@
     }
 
     @Test
-    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     public void withExternalContentFtsTable()
             throws ExecutionException, InterruptedException, TimeoutException {
         final Context context = ApplicationProvider.getApplicationContext();
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
index 54c83ac..3d98913c 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
@@ -25,7 +25,6 @@
 import static org.junit.Assert.assertTrue;
 
 import android.content.Context;
-import android.os.Build;
 import android.os.SystemClock;
 
 import androidx.annotation.NonNull;
@@ -47,7 +46,6 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.rule.ServiceTestRule;
 
@@ -69,7 +67,6 @@
 
 @LargeTest
 @RunWith(AndroidJUnit4.class)
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
 public class MultiInstanceInvalidationTest {
 
     @Rule
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
index 7e63be9..b72dc55 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
@@ -21,7 +21,6 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import android.content.Context;
-import android.os.Build;
 
 import androidx.arch.core.executor.ArchTaskExecutor;
 import androidx.arch.core.executor.TaskExecutor;
@@ -37,7 +36,6 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.filters.SmallTest;
 
 import com.google.common.collect.Lists;
@@ -585,7 +583,6 @@
     }
 
     @Test
-    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     public void withFtsTable_Flowable() throws InterruptedException {
         final Context context = ApplicationProvider.getApplicationContext();
         final FtsTestDatabase db = Room.inMemoryDatabaseBuilder(context, FtsTestDatabase.class)
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java
index b3ef41e..5f7efd6 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java
@@ -21,7 +21,6 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import android.content.Context;
-import android.os.Build;
 
 import androidx.arch.core.executor.ArchTaskExecutor;
 import androidx.arch.core.executor.TaskExecutor;
@@ -37,7 +36,6 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
-import androidx.test.filters.SdkSuppress;
 import androidx.test.filters.SmallTest;
 
 import com.google.common.collect.Lists;
@@ -581,7 +579,6 @@
     }
 
     @Test
-    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
     public void withFtsTable_Flowable() throws InterruptedException {
         final Context context = ApplicationProvider.getApplicationContext();
         final FtsTestDatabase db = Room.inMemoryDatabaseBuilder(context, FtsTestDatabase.class)
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/OverlayDisplayWindow.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/OverlayDisplayWindow.java
index 753f6a2..44d7985 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/OverlayDisplayWindow.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/OverlayDisplayWindow.java
@@ -31,7 +31,6 @@
 import android.view.ScaleGestureDetector;
 import android.view.Surface;
 import android.view.SurfaceHolder;
-import android.view.SurfaceView;
 import android.view.TextureView;
 import android.view.TextureView.SurfaceTextureListener;
 import android.view.View;
@@ -40,7 +39,6 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 
 /**
  * Manages an overlay display window, used for simulating remote playback.
@@ -79,11 +77,7 @@
     @NonNull
     public static OverlayDisplayWindow create(@NonNull Context context, @NonNull String name,
             int width, int height, int gravity) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            return new JellybeanMr1Impl(context, name, width, height, gravity);
-        } else {
-            return new LegacyImpl(context, name, width, height, gravity);
-        }
+        return new JellybeanMr1Impl(context, name, width, height, gravity);
     }
 
     public void setOverlayWindowListener(@NonNull OverlayWindowListener listener) {
@@ -139,91 +133,9 @@
     }
 
     /**
-     * Implementation for older versions.
-     */
-    private static final class LegacyImpl extends OverlayDisplayWindow {
-        private final WindowManager mWindowManager;
-
-        private boolean mWindowVisible;
-        private SurfaceView mSurfaceView;
-
-        LegacyImpl(Context context, String name, int width, int height, int gravity) {
-            super(context, name, width, height, gravity);
-
-            mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
-        }
-
-        @Override
-        public void show() {
-            if (!mWindowVisible) {
-                mSurfaceView = new SurfaceView(mContext);
-
-                Display display = mWindowManager.getDefaultDisplay();
-
-                WindowManager.LayoutParams params;
-                if (Build.VERSION.SDK_INT >= 26) {
-                    // TYPE_SYSTEM_ALERT is deprecated in android O.
-                    params = new WindowManager.LayoutParams(
-                            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
-                } else {
-                    params = new WindowManager.LayoutParams(
-                            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
-                }
-                params.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
-                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
-                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
-                        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
-                        | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
-                params.alpha = WINDOW_ALPHA;
-                params.gravity = Gravity.LEFT | Gravity.BOTTOM;
-                params.setTitle(mName);
-
-                int width = (int) (display.getWidth() * INITIAL_SCALE);
-                int height = (int) (display.getHeight() * INITIAL_SCALE);
-                if (mWidth > mHeight) {
-                    height = mHeight * width / mWidth;
-                } else {
-                    width = mWidth * height / mHeight;
-                }
-                params.width = width;
-                params.height = height;
-
-                mWindowManager.addView(mSurfaceView, params);
-                mWindowVisible = true;
-
-                SurfaceHolder holder = mSurfaceView.getHolder();
-                holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
-                mListener.onWindowCreated(holder);
-            }
-        }
-
-        @Override
-        public void dismiss() {
-            if (mWindowVisible) {
-                mListener.onWindowDestroyed();
-
-                mWindowManager.removeView(mSurfaceView);
-                mWindowVisible = false;
-            }
-        }
-
-        @Override
-        public void updateAspectRatio(int width, int height) {
-        }
-
-        @Nullable
-        @Override
-        public Bitmap getSnapshot() {
-            return null;
-        }
-    }
-
-    /**
      * Implementation for API version 17+.
      */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
-    private static final class JellybeanMr1Impl extends
-            OverlayDisplayWindow {
+    private static final class JellybeanMr1Impl extends OverlayDisplayWindow {
         // When true, disables support for moving and resizing the overlay.
         // The window is made non-touchable, which makes it possible to
         // directly interact with the content underneath.
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/LocalPlayer.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/LocalPlayer.java
index 349e8e5..4b81c9d 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/LocalPlayer.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/LocalPlayer.java
@@ -22,7 +22,6 @@
 import android.content.DialogInterface;
 import android.graphics.Bitmap;
 import android.media.MediaPlayer;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.SystemClock;
@@ -39,7 +38,6 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 import androidx.mediarouter.media.MediaItemStatus;
 import androidx.mediarouter.media.MediaRouter.RouteInfo;
 
@@ -402,7 +400,6 @@
     /**
      * Handles playback of a single media item using MediaPlayer in SurfaceView
      */
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     public static class SurfaceViewPlayer extends LocalPlayer implements SurfaceHolder.Callback {
         private static final String TAG = "SurfaceViewPlayer";
         private RouteInfo mRoute;
@@ -429,9 +426,7 @@
 
         @Override
         public void release() {
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-                releasePresentation();
-            }
+            releasePresentation();
 
             // remove surface holder callback
             SurfaceHolder holder = mSurfaceView.getHolder();
@@ -444,7 +439,6 @@
             super.release();
         }
 
-        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         @Override
         public void updatePresentation() {
             // Get the current route and its presentation display.
@@ -507,8 +501,7 @@
             int width = getVideoWidth();
             int height = getVideoHeight();
             if (width > 0 && height > 0) {
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1
-                        && mPresentation != null) {
+                if (mPresentation != null) {
                     mPresentation.updateSize(width, height);
                 } else {
                     int surfaceWidth = mLayout.getWidth();
@@ -558,7 +551,6 @@
                     }
                 };
 
-        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         private void releasePresentation() {
             // dismiss presentation display
             if (mPresentation != null) {
@@ -569,7 +561,6 @@
         }
 
         // Presentation
-        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         private final class DemoPresentation extends Presentation {
             private SurfaceView mPresentationSurfaceView;
 
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/Player.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/Player.java
index 649a2be..4080f47 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/Player.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/Player.java
@@ -185,7 +185,6 @@
     /**
      * presentation display
      */
-    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     public void updatePresentation() {
     }
 
@@ -207,7 +206,7 @@
         if (route != null && route.supportsControlCategory(
                 MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)) {
             player = new RemotePlayer(context);
-        } else if (route != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+        } else if (route != null) {
             player = new LocalPlayer.SurfaceViewPlayer(context);
         } else {
             player = new LocalPlayer.OverlayPlayer(context);
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java
index 6e61388..0569162 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java
@@ -18,7 +18,6 @@
 package com.example.android.supportv4.widget;
 
 import android.app.ActionBar;
-import android.os.Build;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -199,11 +198,7 @@
         @Override
         public void onGlobalLayout() {
             mActionBar.onFirstLayout();
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-                mSlidingLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
-            } else {
-                mSlidingLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
-            }
+            mSlidingLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
         }
     }
 
diff --git a/transition/transition/src/androidTest/java/androidx/transition/ChangeImageTransformTest.java b/transition/transition/src/androidTest/java/androidx/transition/ChangeImageTransformTest.java
index 70ba3a6..fb08845 100644
--- a/transition/transition/src/androidTest/java/androidx/transition/ChangeImageTransformTest.java
+++ b/transition/transition/src/androidTest/java/androidx/transition/ChangeImageTransformTest.java
@@ -20,14 +20,11 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.atMost;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
-import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Matrix;
 import android.graphics.drawable.ColorDrawable;
@@ -46,7 +43,6 @@
 import androidx.transition.test.R;
 
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 
 import javax.annotation.Nullable;
 
@@ -475,15 +471,6 @@
     }
 
     private Matrix getDrawMatrixCompat(ImageView imageView) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-            return imageView.getImageMatrix();
-        } else {
-            Canvas canvas = mock(Canvas.class);
-            imageView.draw(canvas);
-            ArgumentCaptor<Matrix> matrixCaptor = ArgumentCaptor.forClass(Matrix.class);
-            verify(canvas, atMost(1)).concat(matrixCaptor.capture());
-            return !matrixCaptor.getAllValues().isEmpty() ? matrixCaptor.getValue() : new Matrix();
-        }
+        return imageView.getImageMatrix();
     }
-
 }
diff --git a/window/extensions/extensions/src/androidTest/java/androidx/window/extensions/TestActivity.java b/window/extensions/extensions/src/androidTest/java/androidx/window/extensions/TestActivity.java
index ab8dcf7..1c36baf 100644
--- a/window/extensions/extensions/src/androidTest/java/androidx/window/extensions/TestActivity.java
+++ b/window/extensions/extensions/src/androidTest/java/androidx/window/extensions/TestActivity.java
@@ -17,12 +17,10 @@
 package androidx.window.extensions;
 
 import android.app.Activity;
-import android.os.Build;
 import android.os.Bundle;
 import android.view.View;
 
 import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
 
 import java.util.concurrent.CountDownLatch;
 
@@ -32,7 +30,6 @@
     private CountDownLatch mLayoutLatch = new CountDownLatch(1);
     private static CountDownLatch sResumeLatch = new CountDownLatch(1);
 
-    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);