Merge "Remove a number of @TargetApi uses in support library code." into oc-mr1-jetpack-dev
diff --git a/compat/src/main/java/android/support/v4/hardware/fingerprint/FingerprintManagerCompat.java b/compat/src/main/java/android/support/v4/hardware/fingerprint/FingerprintManagerCompat.java
index 68f9476..6747d11 100644
--- a/compat/src/main/java/android/support/v4/hardware/fingerprint/FingerprintManagerCompat.java
+++ b/compat/src/main/java/android/support/v4/hardware/fingerprint/FingerprintManagerCompat.java
@@ -16,7 +16,6 @@
 
 package android.support.v4.hardware.fingerprint;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.hardware.fingerprint.FingerprintManager;
@@ -58,7 +57,6 @@
      *
      * @return true if at least one fingerprint is enrolled, false otherwise
      */
-    @TargetApi(23)
     @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT)
     public boolean hasEnrolledFingerprints() {
         if (Build.VERSION.SDK_INT >= 23) {
@@ -74,7 +72,6 @@
      *
      * @return true if hardware is present and functional, false otherwise.
      */
-    @TargetApi(23)
     @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT)
     public boolean isHardwareDetected() {
         if (Build.VERSION.SDK_INT >= 23) {
@@ -99,7 +96,6 @@
      * @param callback an object to receive authentication events
      * @param handler an optional handler for events
      */
-    @TargetApi(23)
     @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT)
     public void authenticate(@Nullable CryptoObject crypto, int flags,
             @Nullable CancellationSignal cancel, @NonNull AuthenticationCallback callback,
diff --git a/compat/tests/java/android/support/v4/app/NotificationCompatTest.java b/compat/tests/java/android/support/v4/app/NotificationCompatTest.java
index 7a5a57f..41da709 100644
--- a/compat/tests/java/android/support/v4/app/NotificationCompatTest.java
+++ b/compat/tests/java/android/support/v4/app/NotificationCompatTest.java
@@ -31,7 +31,6 @@
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-import android.annotation.TargetApi;
 import android.app.Notification;
 import android.content.Context;
 import android.graphics.Color;
@@ -183,7 +182,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 24)
-    @TargetApi(24)
     @Test
     public void testFrameworkNotificationActionBuilder_setAllowGeneratedRepliesTrue()
             throws Throwable {
@@ -217,7 +215,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 17)
-    @TargetApi(17)
     @Test
     public void testNotificationWearableExtenderAction_setAllowGeneratedRepliesTrue()
             throws Throwable {
@@ -231,7 +228,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 17)
-    @TargetApi(17)
     @Test
     public void testNotificationWearableExtenderAction_setAllowGeneratedRepliesFalse()
             throws Throwable {
diff --git a/compat/tests/java/android/support/v4/app/RemoteInputTest.java b/compat/tests/java/android/support/v4/app/RemoteInputTest.java
index 55d6cca..4c3d81b 100644
--- a/compat/tests/java/android/support/v4/app/RemoteInputTest.java
+++ b/compat/tests/java/android/support/v4/app/RemoteInputTest.java
@@ -21,7 +21,6 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import android.annotation.TargetApi;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
@@ -96,7 +95,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 17)
-    @TargetApi(17)
     @Test
     public void testRemoteInputBuilder_addAndGetDataResultsFromIntent() throws Throwable {
         Uri uri = Uri.parse("Some Uri");
@@ -110,7 +108,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 17)
-    @TargetApi(17)
     @Test
     public void testRemoteInputBuilder_addAndGetTextResultsFromIntent() throws Throwable {
         CharSequence charSequence = "value doesn't matter";
@@ -126,7 +123,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 17)
-    @TargetApi(17)
     @Test
     public void testRemoteInputBuilder_addAndGetDataAndTextResultsFromIntentDataFirst()
             throws Throwable {
@@ -153,7 +149,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 17)
-    @TargetApi(17)
     @Test
     public void testRemoteInputBuilder_addAndGetDataAndTextResultsFromIntentTextFirst()
             throws Throwable {
diff --git a/compat/tests/java/android/support/v4/content/pm/ShortcutManagerCompatTest.java b/compat/tests/java/android/support/v4/content/pm/ShortcutManagerCompatTest.java
index 7853f02..36cd741 100644
--- a/compat/tests/java/android/support/v4/content/pm/ShortcutManagerCompatTest.java
+++ b/compat/tests/java/android/support/v4/content/pm/ShortcutManagerCompatTest.java
@@ -33,7 +33,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.annotation.TargetApi;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -46,8 +45,8 @@
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
 import android.graphics.Bitmap;
-import android.os.Build;
 import android.support.test.filters.LargeTest;
+import android.support.test.filters.SdkSuppress;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
 import android.support.v4.BaseInstrumentationTestCase;
@@ -86,12 +85,8 @@
 
     @Test
     @SmallTest
-    @TargetApi(26)
+    @SdkSuppress(minSdkVersion = 26)
     public void testIsRequestPinShortcutSupported_v26() throws Throwable {
-        if (!(Build.VERSION.SDK_INT >= 26)) {
-            return;
-        }
-
         ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
         doReturn(mockShortcutManager).when(mContext).getSystemService(eq(Context.SHORTCUT_SERVICE));
         when(mockShortcutManager.isRequestPinShortcutSupported()).thenReturn(true, false, true);
@@ -104,12 +99,8 @@
 
     @Test
     @SmallTest
-    @TargetApi(26)
+    @SdkSuppress(minSdkVersion = 26)
     public void testRequestPinShortcut_v26()  throws Throwable {
-        if (!(Build.VERSION.SDK_INT >= 26)) {
-            return;
-        }
-
         ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
         doReturn(mockShortcutManager).when(mContext).getSystemService(eq(Context.SHORTCUT_SERVICE));
         when(mockShortcutManager.requestPinShortcut(
@@ -124,12 +115,8 @@
 
     @Test
     @SmallTest
-    @TargetApi(26)
+    @SdkSuppress(minSdkVersion = 26)
     public void testCreateShortcutResultIntent_v26()  throws Throwable {
-        if (!(Build.VERSION.SDK_INT >= 26)) {
-            return;
-        }
-
         ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
         doReturn(mockShortcutManager).when(mContext).getSystemService(eq(Context.SHORTCUT_SERVICE));
 
@@ -147,10 +134,8 @@
 
     @SmallTest
     @Test
+    @SdkSuppress(maxSdkVersion = 25)
     public void testIsRequestPinShortcutSupported_v4() throws Throwable {
-        if (Build.VERSION.SDK_INT >= 26) {
-            return;
-        }
         setMockPm(mockResolveInfo(null));
         assertTrue(ShortcutManagerCompat.isRequestPinShortcutSupported(mContext));
 
@@ -174,11 +159,8 @@
 
     @LargeTest
     @Test
+    @SdkSuppress(maxSdkVersion = 25)
     public void testRequestPinShortcut_v4_noCallback()  throws Throwable {
-        if (Build.VERSION.SDK_INT >= 26) {
-            return;
-        }
-
         setMockPm(mockResolveInfo(null));
 
         BlockingBroadcastReceiver receiver =
@@ -189,11 +171,8 @@
 
     @LargeTest
     @Test
+    @SdkSuppress(maxSdkVersion = 25)
     public void testRequestPinShortcut_v4_withCallback()  throws Throwable {
-        if (Build.VERSION.SDK_INT >= 26) {
-            return;
-        }
-
         setMockPm(mockResolveInfo(null));
 
         BlockingBroadcastReceiver receiver =
@@ -210,11 +189,8 @@
 
     @SmallTest
     @Test
+    @SdkSuppress(maxSdkVersion = 25)
     public void testCreateShortcutResultIntent_v4() throws Throwable {
-        if (Build.VERSION.SDK_INT >= 26) {
-            return;
-        }
-
         verifyLegacyIntent(ShortcutManagerCompat.createShortcutResultIntent(mContext, mInfoCompat));
     }
 
diff --git a/compat/tests/java/android/support/v4/graphics/drawable/IconCompatTest.java b/compat/tests/java/android/support/v4/graphics/drawable/IconCompatTest.java
index c83ba7e..c84b19a 100644
--- a/compat/tests/java/android/support/v4/graphics/drawable/IconCompatTest.java
+++ b/compat/tests/java/android/support/v4/graphics/drawable/IconCompatTest.java
@@ -22,7 +22,6 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
@@ -128,7 +127,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.M)
-    @TargetApi(Build.VERSION_CODES.M)
     public void testCreateWithBitmap() {
         Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
         bitmap.eraseColor(Color.RED);
@@ -151,7 +149,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.M)
-    @TargetApi(Build.VERSION_CODES.O)
     public void testCreateWithAdaptiveBitmap() {
         Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
         bitmap.eraseColor(Color.GREEN);
@@ -168,7 +165,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.M)
-    @TargetApi(Build.VERSION_CODES.M)
     public void testCreateWithData() {
         Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
         bitmap.eraseColor(Color.YELLOW);
@@ -191,7 +187,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.M)
-    @TargetApi(Build.VERSION_CODES.M)
     public void testCreateWithResource() {
         Context context = InstrumentationRegistry.getContext();
         Drawable original = context.getDrawable(R.drawable.test_drawable_red);
diff --git a/compat/tests/java/android/support/v4/os/LocaleListCompatTest.java b/compat/tests/java/android/support/v4/os/LocaleListCompatTest.java
index a97a033..6714780 100644
--- a/compat/tests/java/android/support/v4/os/LocaleListCompatTest.java
+++ b/compat/tests/java/android/support/v4/os/LocaleListCompatTest.java
@@ -26,7 +26,6 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import android.annotation.TargetApi;
 import android.os.Build;
 import android.support.test.filters.SdkSuppress;
 import android.support.test.filters.SmallTest;
@@ -262,7 +261,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 24)
-    @TargetApi(24)
     @Test
     public void testGetFirstMatch_oneChineseAsset() {
         String[] oneChineseAsset = {"zh-CN"};  // Assumed to mean zh-Hans-CN
@@ -300,7 +298,6 @@
     }
 
     @SdkSuppress(minSdkVersion = 24)
-    @TargetApi(24)
     @Test
     public void testGetFirstMatch_serbianCyrillic() {
         String[] oneSerbianAsset = {"sr"};  // Assumed to mean sr-Cyrl-RS
diff --git a/core-ui/src/main/java/android/support/v4/widget/DrawerLayout.java b/core-ui/src/main/java/android/support/v4/widget/DrawerLayout.java
index a73e1f1..aa2077d 100644
--- a/core-ui/src/main/java/android/support/v4/widget/DrawerLayout.java
+++ b/core-ui/src/main/java/android/support/v4/widget/DrawerLayout.java
@@ -44,7 +44,6 @@
 import android.support.v4.view.AccessibilityDelegateCompat;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.view.ViewCompat;
-import android.support.v4.view.ViewGroupCompat;
 import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
 import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
 import android.util.AttributeSet;
@@ -331,7 +330,7 @@
                 ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES);
 
         ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegate());
-        ViewGroupCompat.setMotionEventSplittingEnabled(this, false);
+        setMotionEventSplittingEnabled(false);
         if (ViewCompat.getFitsSystemWindows(this)) {
             if (Build.VERSION.SDK_INT >= 21) {
                 setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
diff --git a/core-ui/tests/java/android/support/design/widget/CoordinatorLayoutTest.java b/core-ui/tests/java/android/support/design/widget/CoordinatorLayoutTest.java
index 4062efb..9b4c586 100644
--- a/core-ui/tests/java/android/support/design/widget/CoordinatorLayoutTest.java
+++ b/core-ui/tests/java/android/support/design/widget/CoordinatorLayoutTest.java
@@ -37,7 +37,6 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-import android.annotation.TargetApi;
 import android.app.Instrumentation;
 import android.content.Context;
 import android.graphics.Rect;
@@ -88,7 +87,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 21)
-    @TargetApi(21)
     public void testSetFitSystemWindows() throws Throwable {
         final Instrumentation instrumentation = getInstrumentation();
         final CoordinatorLayout col = mActivityTestRule.getActivity().mCoordinatorLayout;
diff --git a/design/tests/src/android/support/design/widget/NavigationViewTest.java b/design/tests/src/android/support/design/widget/NavigationViewTest.java
index a1ea451..5ac3580 100755
--- a/design/tests/src/android/support/design/widget/NavigationViewTest.java
+++ b/design/tests/src/android/support/design/widget/NavigationViewTest.java
@@ -61,7 +61,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
-import android.annotation.TargetApi;
 import android.content.res.Resources;
 import android.os.Build;
 import android.os.Parcelable;
@@ -70,7 +69,6 @@
 import android.support.design.test.R;
 import android.support.design.testutils.TestDrawable;
 import android.support.test.filters.LargeTest;
-import android.support.test.filters.SdkSuppress;
 import android.support.v4.content.res.ResourcesCompat;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
@@ -406,8 +404,6 @@
         verifyHeaders(R.id.header2, R.id.header3, R.id.header3);
     }
 
-    @SdkSuppress(minSdkVersion = 11)
-    @TargetApi(11)
     @Test
     public void testHeaderState() {
         // Open our drawer
@@ -446,8 +442,6 @@
                 .check(matches(isChecked()));
     }
 
-    @SdkSuppress(minSdkVersion = 11)
-    @TargetApi(11)
     @Test
     public void testActionViewState() {
         // Open our drawer
diff --git a/dynamic-animation/src/main/java/android/support/animation/AnimationHandler.java b/dynamic-animation/src/main/java/android/support/animation/AnimationHandler.java
index 9f63bd1..6c39b23 100644
--- a/dynamic-animation/src/main/java/android/support/animation/AnimationHandler.java
+++ b/dynamic-animation/src/main/java/android/support/animation/AnimationHandler.java
@@ -16,11 +16,11 @@
 
 package android.support.animation;
 
-import android.annotation.TargetApi;
 import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.SystemClock;
+import android.support.annotation.RequiresApi;
 import android.support.v4.util.SimpleArrayMap;
 import android.view.Choreographer;
 
@@ -191,7 +191,7 @@
     /**
      * Default provider of timing pulse that uses Choreographer for frame callbacks.
      */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
+    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
     private static class FrameCallbackProvider16 extends AnimationFrameCallbackProvider {
 
         private final Choreographer mChoreographer = Choreographer.getInstance();
diff --git a/dynamic-animation/src/main/java/android/support/animation/FloatPropertyCompat.java b/dynamic-animation/src/main/java/android/support/animation/FloatPropertyCompat.java
index cde340c..ec8d0ca 100644
--- a/dynamic-animation/src/main/java/android/support/animation/FloatPropertyCompat.java
+++ b/dynamic-animation/src/main/java/android/support/animation/FloatPropertyCompat.java
@@ -16,7 +16,7 @@
 
 package android.support.animation;
 
-import android.annotation.TargetApi;
+import android.support.annotation.RequiresApi;
 import android.util.FloatProperty;
 
 /**
@@ -51,7 +51,7 @@
      * @param <T> the class on which the Property is declared
      * @return a new {@link FloatPropertyCompat} wrapper for the given {@link FloatProperty} object
      */
-    @TargetApi(24)
+    @RequiresApi(24)
     public static <T> FloatPropertyCompat<T> createFloatPropertyCompat(
             final FloatProperty<T> property) {
         return new FloatPropertyCompat<T>(property.getName()) {
diff --git a/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiButton.java b/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiButton.java
index 65afd9c..752e052 100644
--- a/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiButton.java
+++ b/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiButton.java
@@ -15,9 +15,9 @@
  */
 package android.support.text.emoji.widget;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build;
+import android.support.annotation.RequiresApi;
 import android.text.InputFilter;
 import android.util.AttributeSet;
 import android.widget.Button;
@@ -50,7 +50,7 @@
         init();
     }
 
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
     public EmojiButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
         init();
diff --git a/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiEditText.java b/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiEditText.java
index 70ca7a6..e1057e8 100644
--- a/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiEditText.java
+++ b/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiEditText.java
@@ -15,11 +15,11 @@
  */
 package android.support.text.emoji.widget;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build;
 import android.support.annotation.IntRange;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 import android.support.text.emoji.EmojiCompat;
 import android.text.method.KeyListener;
 import android.util.AttributeSet;
@@ -57,7 +57,7 @@
         init(attrs, defStyleAttr, 0 /*defStyleRes*/);
     }
 
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
     public EmojiEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
         init(attrs, defStyleAttr, defStyleRes);
diff --git a/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiExtractEditText.java b/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiExtractEditText.java
index 2e4d3ca..1d5e2dd 100644
--- a/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiExtractEditText.java
+++ b/emoji/core/src/main/java/android/support/text/emoji/widget/EmojiExtractEditText.java
@@ -18,12 +18,12 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.inputmethodservice.ExtractEditText;
 import android.os.Build;
 import android.support.annotation.IntRange;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 import android.support.annotation.RestrictTo;
 import android.support.text.emoji.EmojiCompat;
 import android.support.text.emoji.EmojiSpan;
@@ -64,7 +64,7 @@
         init(attrs, defStyleAttr, 0 /*defStyleRes*/);
     }
 
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
     public EmojiExtractEditText(Context context, AttributeSet attrs, int defStyleAttr,
             int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
diff --git a/emoji/core/tests/java/android/support/text/emoji/AllEmojisTest.java b/emoji/core/tests/java/android/support/text/emoji/AllEmojisTest.java
index f1e2b0f..3110701 100644
--- a/emoji/core/tests/java/android/support/text/emoji/AllEmojisTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/AllEmojisTest.java
@@ -22,7 +22,6 @@
 
 import static org.junit.Assert.assertThat;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.graphics.Paint;
 import android.support.test.InstrumentationRegistry;
@@ -51,7 +50,6 @@
 @SmallTest
 @RunWith(Parameterized.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class AllEmojisTest {
 
     /**
diff --git a/emoji/core/tests/java/android/support/text/emoji/ConfigTest.java b/emoji/core/tests/java/android/support/text/emoji/ConfigTest.java
index 538ce99..3a843b6 100644
--- a/emoji/core/tests/java/android/support/text/emoji/ConfigTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/ConfigTest.java
@@ -29,7 +29,6 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.graphics.Color;
 import android.support.test.InstrumentationRegistry;
@@ -70,7 +69,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testBuild_withDefaultValues() {
         final EmojiCompat.Config config = new ValidTestConfig().setReplaceAll(true);
 
@@ -98,7 +96,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19) //Fail callback never called for pre 19
-    @TargetApi(19)
     public void testInitCallback_callsFailCallback() {
         final EmojiCompat.InitCallback initCallback1 = mock(EmojiCompat.InitCallback.class);
         final EmojiCompat.InitCallback initCallback2 = mock(EmojiCompat.InitCallback.class);
diff --git a/emoji/core/tests/java/android/support/text/emoji/EmojiSpanInstrumentationTest.java b/emoji/core/tests/java/android/support/text/emoji/EmojiSpanInstrumentationTest.java
index f30df8f..b1b3fa0 100644
--- a/emoji/core/tests/java/android/support/text/emoji/EmojiSpanInstrumentationTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/EmojiSpanInstrumentationTest.java
@@ -24,7 +24,6 @@
 
 import static org.junit.Assert.assertThat;
 
-import android.annotation.TargetApi;
 import android.app.Instrumentation;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.LargeTest;
@@ -47,7 +46,6 @@
 @LargeTest
 @RunWith(AndroidJUnit4.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class EmojiSpanInstrumentationTest {
 
     @Rule
diff --git a/emoji/core/tests/java/android/support/text/emoji/EmojiSpanTest.java b/emoji/core/tests/java/android/support/text/emoji/EmojiSpanTest.java
index 816ab64..b97ebdc 100644
--- a/emoji/core/tests/java/android/support/text/emoji/EmojiSpanTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/EmojiSpanTest.java
@@ -25,7 +25,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.annotation.TargetApi;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Paint.FontMetricsInt;
@@ -43,7 +42,6 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class EmojiSpanTest {
 
     @Before
diff --git a/emoji/core/tests/java/android/support/text/emoji/FontRequestEmojiCompatConfigTest.java b/emoji/core/tests/java/android/support/text/emoji/FontRequestEmojiCompatConfigTest.java
index ce2b098..692b963 100644
--- a/emoji/core/tests/java/android/support/text/emoji/FontRequestEmojiCompatConfigTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/FontRequestEmojiCompatConfigTest.java
@@ -39,7 +39,6 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.database.ContentObserver;
@@ -99,7 +98,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_whenGetFontThrowsException() throws NameNotFoundException {
         final Exception exception = new RuntimeException();
         doThrow(exception).when(mFontProviderHelper).fetchFonts(
@@ -115,7 +113,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_providerNotFound() throws NameNotFoundException {
         doThrow(new NameNotFoundException()).when(mFontProviderHelper).fetchFonts(
                 any(Context.class), any(FontRequest.class));
@@ -133,7 +130,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_wrongCertificate() throws NameNotFoundException {
         verifyLoaderOnFailedCalled(STATUS_WRONG_CERTIFICATES, null /* fonts */,
                 "fetchFonts failed (" + STATUS_WRONG_CERTIFICATES + ")");
@@ -141,23 +137,22 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_fontNotFound() throws NameNotFoundException {
         verifyLoaderOnFailedCalled(STATUS_OK,
                 getTestFontInfoWithInvalidPath(RESULT_CODE_FONT_NOT_FOUND),
                 "fetchFonts result is not OK. (" + RESULT_CODE_FONT_NOT_FOUND + ")");
     }
 
-    @Test@SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
+    @Test
+    @SdkSuppress(minSdkVersion = 19)
     public void testLoad_fontUnavailable() throws NameNotFoundException {
         verifyLoaderOnFailedCalled(STATUS_OK,
                 getTestFontInfoWithInvalidPath(RESULT_CODE_FONT_UNAVAILABLE),
                 "fetchFonts result is not OK. (" + RESULT_CODE_FONT_UNAVAILABLE + ")");
     }
 
-    @Test@SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
+    @Test
+    @SdkSuppress(minSdkVersion = 19)
     public void testLoad_malformedQuery() throws NameNotFoundException {
         verifyLoaderOnFailedCalled(STATUS_OK,
                 getTestFontInfoWithInvalidPath(RESULT_CODE_MALFORMED_QUERY),
@@ -166,7 +161,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_resultNotFound() throws NameNotFoundException {
         verifyLoaderOnFailedCalled(STATUS_OK, new FontInfo[] {},
                 "fetchFonts failed (empty result)");
@@ -174,7 +168,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_nullFontInfo() throws NameNotFoundException {
         verifyLoaderOnFailedCalled(STATUS_OK, null /* fonts */,
                 "fetchFonts failed (empty result)");
@@ -182,7 +175,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_cannotLoadTypeface() throws NameNotFoundException {
         // getTestFontInfoWithInvalidPath returns FontInfo with invalid path to file.
         verifyLoaderOnFailedCalled(STATUS_OK,
@@ -192,7 +184,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_success() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final FontInfo[] fonts =  new FontInfo[] {
@@ -212,7 +203,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_retryPolicy() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final FontInfo[] fonts =  new FontInfo[] {
@@ -235,7 +225,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_keepRetryingAndGiveUp() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final FontInfo[] fonts =  new FontInfo[] {
@@ -262,7 +251,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_keepRetryingAndFail() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final Uri uri = Uri.fromFile(file);
@@ -320,7 +308,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_keepRetryingAndSuccess() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final Uri uri = Uri.fromFile(file);
@@ -378,7 +365,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_ObserverNotifyAndSuccess() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final Uri uri = Uri.fromFile(file);
@@ -435,7 +421,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testLoad_ObserverNotifyAndFail() throws IOException, NameNotFoundException {
         final File file = loadFont(mContext, "NotoColorEmojiCompat.ttf");
         final Uri uri = Uri.fromFile(file);
diff --git a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextHelperTest.java b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextHelperTest.java
index 626bca1..5e99a01 100644
--- a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextHelperTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextHelperTest.java
@@ -27,7 +27,6 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-import android.annotation.TargetApi;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SdkSuppress;
 import android.support.test.filters.SmallTest;
@@ -47,7 +46,6 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class EmojiEditTextHelperTest {
     EmojiEditTextHelper mEmojiEditTextHelper;
     EditText mEditText;
diff --git a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextTest.java b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextTest.java
index 3528095..0fd6394 100644
--- a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiEditTextTest.java
@@ -24,7 +24,6 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 
-import android.annotation.TargetApi;
 import android.app.Instrumentation;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.annotation.UiThreadTest;
@@ -94,7 +93,6 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 19)
-    @TargetApi(19)
     public void testSetMaxCount() {
         final TestActivity activity = mActivityRule.getActivity();
         final EmojiEditText editText = activity.findViewById(R.id.editTextWithMaxCount);
diff --git a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiInputConnectionTest.java b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiInputConnectionTest.java
index 0958978..6476898 100644
--- a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiInputConnectionTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiInputConnectionTest.java
@@ -30,7 +30,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build;
 import android.support.test.InstrumentationRegistry;
@@ -56,7 +55,6 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class EmojiInputConnectionTest {
 
     private InputConnection mInputConnection;
@@ -87,7 +85,6 @@
                 new EditorInfo());
     }
 
-    @TargetApi(Build.VERSION_CODES.N)
     private void setupDeleteSurroundingText() {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
             when(mInputConnection.deleteSurroundingTextInCodePoints(anyInt(), anyInt())).thenReturn(
@@ -123,7 +120,6 @@
         verify(mInputConnection, never()).deleteSurroundingText(anyInt(), anyInt());
     }
 
-    @TargetApi(Build.VERSION_CODES.N)
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.N)
     @Test
     public void testDeleteSurroundingTextInCodePoints_doesNotDelete() {
@@ -132,7 +128,6 @@
         verify(mInputConnection, times(1)).deleteSurroundingTextInCodePoints(1, 0);
     }
 
-    @TargetApi(Build.VERSION_CODES.N)
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.N)
     @Test
     public void testDeleteSurroundingTextInCodePoints_deletesEmojiBackward() {
@@ -141,7 +136,6 @@
         verify(mInputConnection, never()).deleteSurroundingTextInCodePoints(anyInt(), anyInt());
     }
 
-    @TargetApi(Build.VERSION_CODES.N)
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.N)
     @Test
     public void testDeleteSurroundingTextInCodePoints_deletesEmojiForward() {
@@ -150,7 +144,6 @@
         verify(mInputConnection, never()).deleteSurroundingTextInCodePoints(anyInt(), anyInt());
     }
 
-    @TargetApi(Build.VERSION_CODES.N)
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.N)
     @Test
     public void testDeleteSurroundingTextInCodePoints_doesNotDeleteEmojiIfSelectionAtStartIndex() {
diff --git a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiKeyListenerTest.java b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiKeyListenerTest.java
index 06a5e68..081deb0 100644
--- a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiKeyListenerTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiKeyListenerTest.java
@@ -39,7 +39,6 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import android.annotation.TargetApi;
 import android.support.test.filters.SdkSuppress;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
@@ -61,7 +60,6 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class EmojiKeyListenerTest {
 
     private KeyListener mKeyListener;
diff --git a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiTextViewHelperTest.java b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiTextViewHelperTest.java
index 9a5ccbd..b99c58e 100644
--- a/emoji/core/tests/java/android/support/text/emoji/widget/EmojiTextViewHelperTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/widget/EmojiTextViewHelperTest.java
@@ -26,7 +26,6 @@
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 
-import android.annotation.TargetApi;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SdkSuppress;
 import android.support.test.filters.SmallTest;
@@ -45,7 +44,6 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 @SdkSuppress(minSdkVersion = 19)
-@TargetApi(19)
 public class EmojiTextViewHelperTest {
     EmojiTextViewHelper mTextViewHelper;
     TextView mTextView;
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/ExploreByTouchHelperActivity.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/ExploreByTouchHelperActivity.java
index f85105f..13f849e 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/ExploreByTouchHelperActivity.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/ExploreByTouchHelperActivity.java
@@ -16,7 +16,6 @@
 
 package com.example.android.supportv4.widget;
 
-import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.Context;
 import android.graphics.Canvas;
@@ -26,7 +25,6 @@
 import android.graphics.Paint.Style;
 import android.graphics.Rect;
 import android.graphics.RectF;
-import android.os.Build;
 import android.os.Bundle;
 import android.support.v4.view.ViewCompat;
 import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
@@ -115,7 +113,6 @@
             ViewCompat.setAccessibilityDelegate(this, mTouchHelper);
         }
 
-        @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
         @Override
         public boolean dispatchHoverEvent(MotionEvent event) {
             // Always attempt to dispatch hover events to accessibility first.
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java
index 2d0cb56..03f3318 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java
@@ -16,7 +16,6 @@
 
 package com.example.android.supportv7.media;
 
-import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.Presentation;
 import android.content.Context;
@@ -27,6 +26,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.SystemClock;
+import android.support.annotation.RequiresApi;
 import android.support.v7.media.MediaItemStatus;
 import android.support.v7.media.MediaRouter.RouteInfo;
 import android.util.Log;
@@ -374,7 +374,6 @@
         }
     }
 
-    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
     private static final class ICSMediaPlayer {
         public static final void setSurface(MediaPlayer player, Surface surface) {
             player.setSurface(surface);
@@ -426,7 +425,7 @@
             mLayout.setVisibility(View.GONE);
         }
 
-        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         @Override
         public void updatePresentation() {
             // Get the current route and its presentation display.
@@ -540,7 +539,7 @@
             }
         };
 
-        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         private void releasePresentation() {
             // dismiss presentation display
             if (mPresentation != null) {
@@ -551,7 +550,7 @@
         }
 
         // Presentation
-        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+        @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
         private final class DemoPresentation extends Presentation {
             private SurfaceView mPresentationSurfaceView;
 
@@ -568,7 +567,7 @@
                 setContentView(R.layout.sample_media_router_presentation);
 
                 // Set up the surface view.
-                mPresentationSurfaceView = (SurfaceView)findViewById(R.id.surface_view);
+                mPresentationSurfaceView = findViewById(R.id.surface_view);
                 SurfaceHolder holder = mPresentationSurfaceView.getHolder();
                 holder.addCallback(SurfaceViewPlayer.this);
                 Log.i(TAG, "Presentation created");
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java
index d6a82ef..1fa05d3 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java
@@ -16,12 +16,12 @@
 
 package com.example.android.supportv7.media;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.SurfaceTexture;
 import android.hardware.display.DisplayManager;
 import android.os.Build;
+import android.support.annotation.RequiresApi;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Display;
@@ -186,7 +186,7 @@
     /**
      * Implementation for API version 17+.
      */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     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
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java
index 380e945..82de473 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java
@@ -16,10 +16,10 @@
 
 package com.example.android.supportv7.media;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.os.Build;
+import android.support.annotation.RequiresApi;
 import android.support.v4.media.MediaMetadataCompat;
 import android.support.v4.media.session.MediaSessionCompat;
 import android.support.v4.media.session.PlaybackStateCompat;
@@ -77,7 +77,7 @@
     /**
      * presentation display
      */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+    @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     public void updatePresentation() {}
 
     public void setCallback(Callback callback) {
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/AnimatedRecyclerView.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/AnimatedRecyclerView.java
index cf2fac2..1f9bb7d 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/AnimatedRecyclerView.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/AnimatedRecyclerView.java
@@ -18,10 +18,8 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
-import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.Context;
-import android.os.Build;
 import android.os.Bundle;
 import android.support.v4.util.ArrayMap;
 import android.support.v7.widget.DefaultItemAnimator;
@@ -207,14 +205,12 @@
             public boolean animateChange(RecyclerView.ViewHolder oldHolder,
                     RecyclerView.ViewHolder newHolder, ItemHolderInfo preInfo,
                     ItemHolderInfo postInfo) {
-                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1
-                        || oldHolder != newHolder) {
+                if (oldHolder != newHolder) {
                     return super.animateChange(oldHolder, newHolder, preInfo, postInfo);
                 }
                 return animateChangeApiHoneycombMr1(oldHolder, newHolder, preInfo, postInfo);
             }
 
-            @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
             private boolean animateChangeApiHoneycombMr1(RecyclerView.ViewHolder oldHolder,
                     RecyclerView.ViewHolder newHolder,
                     ItemHolderInfo preInfo, ItemHolderInfo postInfo) {
@@ -260,8 +256,6 @@
         };
     }
 
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
     abstract private static class ItemChangeAnimator implements
             ValueAnimator.AnimatorUpdateListener, Animator.AnimatorListener {
         CharSequence mFinalText;
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/touch/SwipeToDismissActivity.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/touch/SwipeToDismissActivity.java
index 14a7495..6be0398 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/touch/SwipeToDismissActivity.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/widget/touch/SwipeToDismissActivity.java
@@ -16,9 +16,7 @@
 
 package com.example.android.supportv7.widget.touch;
 
-import android.annotation.TargetApi;
 import android.graphics.Canvas;
-import android.os.Build;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.helper.ItemTouchHelper;
@@ -73,24 +71,20 @@
                     }
                 }
         };
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-            ConfigToggle[] copy = new ConfigToggle[configToggles.length + 1];
-            System.arraycopy(configToggles, 0, copy, 0, configToggles.length);
-            copy[copy.length - 1] = new ConfigToggle(this, R.string.custom_swipe_enabled) {
-                @Override
-                public boolean isChecked() {
-                    return mCustomSwipeEnabled;
-                }
+        ConfigToggle[] copy = new ConfigToggle[configToggles.length + 1];
+        System.arraycopy(configToggles, 0, copy, 0, configToggles.length);
+        copy[copy.length - 1] = new ConfigToggle(this, R.string.custom_swipe_enabled) {
+            @Override
+            public boolean isChecked() {
+                return mCustomSwipeEnabled;
+            }
 
-                @Override
-                public void onChange(boolean newValue) {
-                    mCustomSwipeEnabled = newValue;
-                }
-            };
-            return copy;
-        } else {
-            return configToggles;
-        }
+            @Override
+            public void onChange(boolean newValue) {
+                mCustomSwipeEnabled = newValue;
+            }
+        };
+        return copy;
     }
 
     @Override
@@ -109,7 +103,6 @@
     }
 
     @Override
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
         ItemTouchViewHolder touchVH = (ItemTouchViewHolder) viewHolder;
         if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
@@ -125,7 +118,6 @@
     }
 
     @Override
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     public boolean onChildDraw(Canvas c, RecyclerView recyclerView,
             RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState,
             boolean isCurrentlyActive) {
diff --git a/samples/SupportPreferenceDemos/src/main/java/com/example/android/supportpreference/FragmentSupportPreferencesLeanback.java b/samples/SupportPreferenceDemos/src/main/java/com/example/android/supportpreference/FragmentSupportPreferencesLeanback.java
index eb9a4c0..5a6e996 100644
--- a/samples/SupportPreferenceDemos/src/main/java/com/example/android/supportpreference/FragmentSupportPreferencesLeanback.java
+++ b/samples/SupportPreferenceDemos/src/main/java/com/example/android/supportpreference/FragmentSupportPreferencesLeanback.java
@@ -16,10 +16,10 @@
 
 package com.example.android.supportpreference;
 
-import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.Fragment;
 import android.os.Bundle;
+import android.support.annotation.RequiresApi;
 import android.support.v14.preference.PreferenceDialogFragment;
 import android.support.v14.preference.PreferenceFragment;
 import android.support.v17.preference.LeanbackPreferenceFragment;
@@ -27,7 +27,7 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 
-@TargetApi(17)
+@RequiresApi(17)
 public class FragmentSupportPreferencesLeanback extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
diff --git a/tv-provider/src/androidTest/java/android/support/media/tv/PreviewProgramTest.java b/tv-provider/src/androidTest/java/android/support/media/tv/PreviewProgramTest.java
index e222e40..5b1b717 100644
--- a/tv-provider/src/androidTest/java/android/support/media/tv/PreviewProgramTest.java
+++ b/tv-provider/src/androidTest/java/android/support/media/tv/PreviewProgramTest.java
@@ -15,7 +15,6 @@
  */
 package android.support.media.tv;
 
-import android.annotation.TargetApi;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
@@ -44,7 +43,6 @@
  */
 @SmallTest
 @SdkSuppress(minSdkVersion = 26)
-@TargetApi(26)
 public class PreviewProgramTest extends TestCase {
 
     @Override
diff --git a/tv-provider/src/androidTest/java/android/support/media/tv/WatchNextProgramTest.java b/tv-provider/src/androidTest/java/android/support/media/tv/WatchNextProgramTest.java
index b1a1041..4e9c165 100644
--- a/tv-provider/src/androidTest/java/android/support/media/tv/WatchNextProgramTest.java
+++ b/tv-provider/src/androidTest/java/android/support/media/tv/WatchNextProgramTest.java
@@ -16,7 +16,6 @@
 
 package android.support.media.tv;
 
-import android.annotation.TargetApi;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Intent;
@@ -43,7 +42,6 @@
  */
 @SmallTest
 @SdkSuppress(minSdkVersion = 26)
-@TargetApi(26)
 public class WatchNextProgramTest extends TestCase {
 
     @Override
diff --git a/tv-provider/src/main/java/android/support/media/tv/BasePreviewProgram.java b/tv-provider/src/main/java/android/support/media/tv/BasePreviewProgram.java
index 39c3014..eeaa5ea 100644
--- a/tv-provider/src/main/java/android/support/media/tv/BasePreviewProgram.java
+++ b/tv-provider/src/main/java/android/support/media/tv/BasePreviewProgram.java
@@ -17,7 +17,6 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.ContentValues;
 import android.content.Intent;
 import android.database.Cursor;
@@ -40,7 +39,6 @@
  *
  * @hide
  */
-@TargetApi(26)
 public abstract class BasePreviewProgram extends BaseProgram {
     /**
      * @hide
diff --git a/tv-provider/src/main/java/android/support/media/tv/Channel.java b/tv-provider/src/main/java/android/support/media/tv/Channel.java
index 9b13e42..a24d948 100644
--- a/tv-provider/src/main/java/android/support/media/tv/Channel.java
+++ b/tv-provider/src/main/java/android/support/media/tv/Channel.java
@@ -17,7 +17,6 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.ContentValues;
 import android.content.Intent;
 import android.database.Cursor;
@@ -76,7 +75,6 @@
  *         TvContractCompat.buildChannelUri(existingChannel.getId()), null, null);
  * </pre>
  */
-@TargetApi(21)
 public final class Channel {
     /**
      * @hide
diff --git a/tv-provider/src/main/java/android/support/media/tv/PreviewProgram.java b/tv-provider/src/main/java/android/support/media/tv/PreviewProgram.java
index 3df3a74..6d2fbaf 100644
--- a/tv-provider/src/main/java/android/support/media/tv/PreviewProgram.java
+++ b/tv-provider/src/main/java/android/support/media/tv/PreviewProgram.java
@@ -17,7 +17,6 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.media.tv.TvContentRating;  // For javadoc gen of super class
@@ -74,7 +73,6 @@
  *         null, null);
  * </pre>
  */
-@TargetApi(26)
 public final class PreviewProgram extends BasePreviewProgram {
     /**
      * @hide
diff --git a/tv-provider/src/main/java/android/support/media/tv/Program.java b/tv-provider/src/main/java/android/support/media/tv/Program.java
index 233f1ba..882916d 100644
--- a/tv-provider/src/main/java/android/support/media/tv/Program.java
+++ b/tv-provider/src/main/java/android/support/media/tv/Program.java
@@ -17,7 +17,6 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.media.tv.TvContentRating;  // For javadoc gen of super class
@@ -72,7 +71,6 @@
  *         null, null);
  * </pre>
  */
-@TargetApi(21)
 public final class Program extends BaseProgram implements Comparable<Program> {
     /**
      * @hide
diff --git a/tv-provider/src/main/java/android/support/media/tv/WatchNextProgram.java b/tv-provider/src/main/java/android/support/media/tv/WatchNextProgram.java
index c192745..61082aa 100644
--- a/tv-provider/src/main/java/android/support/media/tv/WatchNextProgram.java
+++ b/tv-provider/src/main/java/android/support/media/tv/WatchNextProgram.java
@@ -17,7 +17,6 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.media.tv.TvContentRating;  // For javadoc gen of super class
@@ -79,7 +78,6 @@
  *         null, null);
  * </pre>
  */
-@TargetApi(26)
 public final class WatchNextProgram extends BasePreviewProgram {
     /**
      * @hide
diff --git a/v7/appcompat/src/main/java/android/support/v7/widget/AppCompatTextViewAutoSizeHelper.java b/v7/appcompat/src/main/java/android/support/v7/widget/AppCompatTextViewAutoSizeHelper.java
index 7e98494..6b9d05a 100644
--- a/v7/appcompat/src/main/java/android/support/v7/widget/AppCompatTextViewAutoSizeHelper.java
+++ b/v7/appcompat/src/main/java/android/support/v7/widget/AppCompatTextViewAutoSizeHelper.java
@@ -18,7 +18,6 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -26,6 +25,7 @@
 import android.os.Build;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 import android.support.annotation.RestrictTo;
 import android.support.v4.widget.TextViewCompat;
 import android.support.v7.appcompat.R;
@@ -702,7 +702,7 @@
         return true;
     }
 
-    @TargetApi(23)
+    @RequiresApi(23)
     private StaticLayout createStaticLayoutForMeasuring(CharSequence text,
             Layout.Alignment alignment, int availableWidth, int maxLines) {
         // Can use the StaticLayout.Builder (along with TextView params added in or after
@@ -726,7 +726,6 @@
                 .build();
     }
 
-    @TargetApi(14)
     private StaticLayout createStaticLayoutForMeasuringPre23(CharSequence text,
             Layout.Alignment alignment, int availableWidth) {
         // Setup defaults.
diff --git a/v7/appcompat/src/main/java/android/support/v7/widget/TooltipCompat.java b/v7/appcompat/src/main/java/android/support/v7/widget/TooltipCompat.java
index 470c3b2..4a583da 100644
--- a/v7/appcompat/src/main/java/android/support/v7/widget/TooltipCompat.java
+++ b/v7/appcompat/src/main/java/android/support/v7/widget/TooltipCompat.java
@@ -16,7 +16,6 @@
 
 package android.support.v7.widget;
 
-import android.annotation.TargetApi;
 import android.os.Build;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -28,34 +27,6 @@
  *
  */
 public class TooltipCompat  {
-    private interface ViewCompatImpl {
-        void setTooltipText(@NonNull View view, @Nullable CharSequence tooltipText);
-    }
-
-    private static class BaseViewCompatImpl implements ViewCompatImpl {
-        @Override
-        public void setTooltipText(@NonNull View view, @Nullable CharSequence tooltipText) {
-            TooltipCompatHandler.setTooltipText(view, tooltipText);
-        }
-    }
-
-    @TargetApi(26)
-    private static class Api26ViewCompatImpl implements ViewCompatImpl {
-        @Override
-        public void setTooltipText(@NonNull View view, @Nullable CharSequence tooltipText) {
-            view.setTooltipText(tooltipText);
-        }
-    }
-
-    private static final ViewCompatImpl IMPL;
-    static {
-        if (Build.VERSION.SDK_INT >= 26) {
-            IMPL = new Api26ViewCompatImpl();
-        } else {
-            IMPL = new BaseViewCompatImpl();
-        }
-    }
-
     /**
      * Sets the tooltip text for the view.
      * <p> Prior to API 26 this method sets or clears (when tooltip is null) the view's
@@ -66,7 +37,11 @@
      * @param tooltipText the tooltip text
      */
     public static void setTooltipText(@NonNull View view, @Nullable CharSequence tooltipText) {
-        IMPL.setTooltipText(view, tooltipText);
+        if (Build.VERSION.SDK_INT >= 26) {
+            view.setTooltipText(tooltipText);
+        } else {
+            TooltipCompatHandler.setTooltipText(view, tooltipText);
+        }
     }
 
     private TooltipCompat() {}
diff --git a/v7/recyclerview/tests/src/android/support/v7/widget/RecyclerViewAccessibilityLifecycleTest.java b/v7/recyclerview/tests/src/android/support/v7/widget/RecyclerViewAccessibilityLifecycleTest.java
index aed18bd..973b138 100644
--- a/v7/recyclerview/tests/src/android/support/v7/widget/RecyclerViewAccessibilityLifecycleTest.java
+++ b/v7/recyclerview/tests/src/android/support/v7/widget/RecyclerViewAccessibilityLifecycleTest.java
@@ -27,7 +27,6 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
-import android.annotation.TargetApi;
 import android.os.Build;
 import android.support.test.filters.LargeTest;
 import android.support.test.filters.MediumTest;
@@ -107,7 +106,6 @@
 
     @LargeTest
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
     @Test
     public void processAllViewHolders() {
         RecyclerView rv = new RecyclerView(getActivity());
diff --git a/viewpager2/src/main/java/androidx/widget/ViewPager2.java b/viewpager2/src/main/java/androidx/widget/ViewPager2.java
index 0e8e66c..9ebdea1 100644
--- a/viewpager2/src/main/java/androidx/widget/ViewPager2.java
+++ b/viewpager2/src/main/java/androidx/widget/ViewPager2.java
@@ -18,10 +18,10 @@
 
 import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.graphics.Rect;
 import android.support.annotation.NonNull;
+import android.support.annotation.RequiresApi;
 import android.support.annotation.RestrictTo;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.PagerSnapHelper;
@@ -60,7 +60,7 @@
         initialize(context);
     }
 
-    @TargetApi(21)
+    @RequiresApi(21)
     public ViewPager2(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         // TODO(b/70663531): handle attrs, defStyleAttr, defStyleRes
         super(context, attrs, defStyleAttr, defStyleRes);