diff --git a/annotations/api/27.0.0-SNAPSHOT.txt b/annotations/api/27.0.0-SNAPSHOT.txt
new file mode 100644
index 0000000..c52f7e1
--- /dev/null
+++ b/annotations/api/27.0.0-SNAPSHOT.txt
@@ -0,0 +1,171 @@
+package android.support.annotation {
+
+  public abstract class AnimRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class AnimatorRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class AnyRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class AnyThread implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class ArrayRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class AttrRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class BinderThread implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class BoolRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class CallSuper implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class CheckResult implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class ColorInt implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class ColorLong implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class ColorRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class DimenRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class Dimension implements java.lang.annotation.Annotation {
+    field public static final int DP = 0; // 0x0
+    field public static final int PX = 1; // 0x1
+    field public static final int SP = 2; // 0x2
+  }
+
+  public abstract class DrawableRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class FloatRange implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class FontRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class FractionRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class GuardedBy implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class HalfFloat implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class IdRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class IntDef implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class IntRange implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class IntegerRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class InterpolatorRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class Keep implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class LayoutRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class MainThread implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class MenuRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class NonNull implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class Nullable implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class PluralsRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class Px implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class RawRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class RequiresApi implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class RequiresPermission implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class RequiresPermission.Read implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class RequiresPermission.Write implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class RestrictTo implements java.lang.annotation.Annotation {
+  }
+
+  public static final class RestrictTo.Scope extends java.lang.Enum {
+    method public static android.support.annotation.RestrictTo.Scope valueOf(java.lang.String);
+    method public static final android.support.annotation.RestrictTo.Scope[] values();
+    enum_constant public static final deprecated android.support.annotation.RestrictTo.Scope GROUP_ID;
+    enum_constant public static final android.support.annotation.RestrictTo.Scope LIBRARY;
+    enum_constant public static final android.support.annotation.RestrictTo.Scope LIBRARY_GROUP;
+    enum_constant public static final android.support.annotation.RestrictTo.Scope SUBCLASSES;
+    enum_constant public static final android.support.annotation.RestrictTo.Scope TESTS;
+  }
+
+  public abstract class Size implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class StringDef implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class StringRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class StyleRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class StyleableRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class TransitionRes implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class UiThread implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class VisibleForTesting implements java.lang.annotation.Annotation {
+    field public static final int NONE = 5; // 0x5
+    field public static final int PACKAGE_PRIVATE = 3; // 0x3
+    field public static final int PRIVATE = 2; // 0x2
+    field public static final int PROTECTED = 4; // 0x4
+  }
+
+  public abstract class WorkerThread implements java.lang.annotation.Annotation {
+  }
+
+  public abstract class XmlRes implements java.lang.annotation.Annotation {
+  }
+
+}
+
diff --git a/annotations/build.gradle b/annotations/build.gradle
index 195a0e7..b8a14b7 100644
--- a/annotations/build.gradle
+++ b/annotations/build.gradle
@@ -64,7 +64,9 @@
 // Disable strict javadoc lint checks with javadoc v8 builds on Mac. http://b/26744780
 if (JavaVersion.current().isJava8Compatible()) {
     tasks.withType(Javadoc) {
-        options.addBooleanOption('Xdoclint:none', true)
+        if (options.doclet == null) {
+            options.addBooleanOption('Xdoclint:none', true)
+        }
     }
 }
 
diff --git a/api/removed.txt b/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/api/removed.txt
+++ /dev/null
diff --git a/buildSrc/diff_and_docs.gradle b/buildSrc/diff_and_docs.gradle
index 6a28869..f5dd5dc 100644
--- a/buildSrc/diff_and_docs.gradle
+++ b/buildSrc/diff_and_docs.gradle
@@ -226,27 +226,25 @@
 
         newApiFile = newApi
         oldApiFile = oldApi
-        newRemovedApiFile = new File(project.docsDir, 'release/' + project.name + '/removed.txt')
-        oldRemovedApiFile = new File(project.projectDir, 'api/' + project.name + '/removed.txt')
 
         whitelistErrorsFile = whitelist
 
         doFirst {
-            logger.lifecycle "Verifying ${newApi.name} against ${oldApi.name}..."
+            logger.lifecycle "Verifying ${newApi.name} against ${oldApi ? oldApi.name : "nothing"}..."
         }
     }
 }
 
 DoclavaTask createGenerateApiTask(Project project) {
     // Generates API files
-    return project.tasks.create(name: "generateApi", type: DoclavaTask.class, dependsOn: configurations.doclava) {
+    return project.tasks.create(name: "generateApi", type: DoclavaTask.class,
+            dependsOn: configurations.doclava) {
         docletpath = configurations.doclava.resolve()
         destinationDir = project.docsDir
 
         // Base classpath is Android SDK, sub-projects add their own.
         classpath = rootProject.ext.androidJar
         apiFile = new File(project.docsDir, 'release/' + project.name + '/current.txt')
-        removedApiFile = new File(project.docsDir, 'release/' + project.name + '/removed.txt')
         generateDocs = false
 
         options {
@@ -307,17 +305,18 @@
     def version = new Version(project.version)
     def workingDir = project.projectDir
 
-    def generateApi = createGenerateApiTask(project)
+    DoclavaTask generateApi = createGenerateApiTask(project)
     createVerifyUpdateApiAllowedTask(project)
 
     // Make sure the API surface has not broken since the last release.
     def previousApiFile = version.isPatch() ? getApiFile(workingDir, project.version)
             : getPreviousApiFile(workingDir, project.version)
 
-    def whitelistFile = new File(
+    def whitelistFile = previousApiFile == null ? null : new File(
             previousApiFile.parentFile, stripExtension(previousApiFile.name) + ".ignore")
-    def checkApiRelease = createCheckApiTask(project, "checkApiRelease", CHECK_API_CONFIG_RELEASE,
-            previousApiFile, generateApi.apiFile, whitelistFile).dependsOn(generateApi)
+    def checkApiRelease = createCheckApiTask(project, "checkApiRelease",
+            CHECK_API_CONFIG_RELEASE, previousApiFile, generateApi.apiFile, whitelistFile)
+            .dependsOn(generateApi)
 
     // Allow a comma-delimited list of whitelisted errors.
     if (project.hasProperty("ignore")) {
@@ -341,15 +340,13 @@
     // Track API change history.
     def apiFilePattern = /(\d+\.\d+\.\d).txt/
     File apiDir = new File(project.projectDir, 'api')
-    File lastApiFile;
     apiDir.eachFileMatch FileType.FILES, ~apiFilePattern, { File apiFile ->
         def apiLevel = (apiFile.name =~ apiFilePattern)[0][1]
         rootProject.generateDocs.sinces.add([apiFile.absolutePath, apiLevel])
-        lastApiFile = apiFile
     }
 
-    // Associate latest API surface with the Maven artifact.
-    rootProject.generateDocs.artifacts.add([lastApiFile.absolutePath, artifact])
+    // Associate current API surface with the Maven artifact.
+    rootProject.generateDocs.artifacts.add([generateApi.apiFile.absolutePath, artifact])
 
     rootProject.createArchive.dependsOn checkApi
 }
@@ -383,8 +380,6 @@
         description 'Updates the candidate API file to incorporate valid changes.'
         newApiFile = project.checkApiRelease.newApiFile
         oldApiFile = getApiFile(project.projectDir, project.version)
-        newRemovedApiFile = project.checkApiRelease.newRemovedApiFile
-        oldRemovedApiFile = new File(project.projectDir, 'api/removed.txt')
         whitelistErrors = project.checkApiRelease.whitelistErrors
         whitelistErrorsFile = project.checkApiRelease.whitelistErrorsFile
     }
diff --git a/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy b/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy
index 2aa9d21..05b4b1c 100644
--- a/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy
+++ b/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy
@@ -50,10 +50,12 @@
     private static final String ANSI_YELLOW = "\u001B[33m";
 
     /** API file that represents the existing API surface. */
+    @Optional
     @InputFile
     File oldApiFile
 
     /** API file that represents the existing API surface's removals. */
+    @Optional
     @InputFile
     File oldRemovedApiFile
 
@@ -62,15 +64,14 @@
     File newApiFile
 
     /** API file that represents the candidate API surface's removals. */
+    @Optional
     @InputFile
     File newRemovedApiFile
 
     /** Optional file containing a newline-delimited list of error SHAs to ignore. */
-    @Nullable
     File whitelistErrorsFile
 
     @Optional
-    @Nullable
     @InputFile
     File getWhiteListErrorsFileInput() {
         // Gradle requires non-null InputFiles to exist -- even with Optional -- so work around that
@@ -87,9 +88,8 @@
      * Packages names will be matched exactly; sub-packages are not automatically recognized.
      */
     @Optional
-    @Nullable
     @Input
-    Collection ignoredPackages = null
+    Collection ignoredPackages
 
     /**
      * Optional list of classes to ignore.
@@ -98,9 +98,8 @@
      * automatically recognized.
      */
     @Optional
-    @Nullable
     @Input
-    Collection ignoredClasses = null
+    Collection ignoredClasses
 
     /**
      * Optional set of error SHAs to ignore.
@@ -117,8 +116,7 @@
     // A dummy output file meant only to tag when this check was last ran.
     // Without any outputs, Gradle will run this task every time.
     @Optional
-    @Nullable
-    private File mOutputFile = null;
+    private File mOutputFile
 
     @OutputFile
     public File getOutputFile() {
@@ -164,17 +162,12 @@
     }
 
     private Set<File> collectAndVerifyInputs() {
-        Set<File> apiFiles = [getOldApiFile(), getNewApiFile(), getOldRemovedApiFile(),
-                              getNewRemovedApiFile()] as Set
-        if (apiFiles.size() != 4) {
-            throw new InvalidUserDataException("""Conflicting input files:
-    oldApiFile: ${getOldApiFile()}
-    newApiFile: ${getNewApiFile()}
-    oldRemovedApiFile: ${getOldRemovedApiFile()}
-    newRemovedApiFile: ${getNewRemovedApiFile()}
-All of these must be distinct files.""")
+        if (getOldRemovedApiFile() != null && getNewRemovedApiFile() != null) {
+            return [getOldApiFile(), getNewApiFile(), getOldRemovedApiFile(),
+                    getNewRemovedApiFile()] as Set
+        } else {
+            return [getOldApiFile(), getNewApiFile()] as Set
         }
-        return apiFiles;
     }
 
     public void setCheckApiErrors(Collection errors) {
@@ -194,6 +187,11 @@
 
     @TaskAction
     public void exec() {
+        if (getOldApiFile() == null) {
+            // Nothing to do.
+            return
+        }
+
         final def apiFiles = collectAndVerifyInputs()
 
         OutputStream errStream = new ByteArrayOutputStream()
@@ -207,8 +205,6 @@
             minHeapSize = '128m'
             maxHeapSize = '1024m'
 
-            // [other options] old_api.txt new_api.txt old_removed_api.txt new_removed_api.txt
-
             // add -error LEVEL for every error level we want to fail the build on.
             getCheckApiErrors().each { args('-error', it) }
             getCheckApiWarnings().each { args('-warning', it) }
diff --git a/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy b/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy
index 2b5ae71..651446f 100644
--- a/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy
+++ b/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy
@@ -14,17 +14,15 @@
  * limitations under the License.
  */
 
-package android.support.doclava;
+package android.support.doclava
 
-import org.gradle.api.InvalidUserDataException
-import org.gradle.api.Nullable
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.InputFiles
 import org.gradle.api.tasks.javadoc.Javadoc
 import org.gradle.api.tasks.Optional
 import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.OutputFile
-import org.gradle.external.javadoc.JavadocOptionFileOption;
+import org.gradle.external.javadoc.JavadocOptionFileOption
 
 public class DoclavaTask extends Javadoc {
 
@@ -64,9 +62,8 @@
      * Packages names will be matched exactly; sub-packages are not automatically recognized.
      */
     @Optional
-    @Nullable
     @Input
-    Collection hiddenPackages = null
+    Collection hiddenPackages
 
     /**
      * If non-null and not-empty, the whitelist of packages that will be present in the generated
@@ -74,9 +71,8 @@
      * Wildcards are accepted.
      */
     @Optional
-    @Nullable
     @Input
-    Set<String> stubPackages = null
+    Set<String> stubPackages
 
     @Input
     boolean generateDocs = true
@@ -86,34 +82,30 @@
      * If this is non-null, then {@link #removedApiFile} must be non-null as well.
      */
     @Optional
-    @Nullable
     @OutputFile
-    File apiFile = null
+    File apiFile
 
     /**
      * If non-null, the location of where to place the generated removed api file.
      * If this is non-null, then {@link #apiFile} must be non-null as well.
      */
     @Optional
-    @Nullable
     @OutputFile
-    File removedApiFile = null
+    File removedApiFile
 
     /**
      * If non-null, the location of the generated keep list.
      */
     @Optional
-    @Nullable
     @OutputFile
-    File keepListFile = null
+    File keepListFile
 
     /**
      * If non-null, the location to put the generated stub sources.
      */
     @Optional
-    @Nullable
     @OutputDirectory
-    File stubsDir = null
+    File stubsDir
 
     public DoclavaTask() {
         failOnError = true
@@ -123,10 +115,10 @@
         // doclava doesn't understand '-doctitle'
         title = null
         maxMemory = "1280m"
-        // TODO(csyoung) Some way to override this?
-        // If none of generateDocs, apiFile, keepListFile, or stubJarsDir are true, then there is no work to do.
+        // If none of generateDocs, apiFile, keepListFile, or stubJarsDir are true, then there is
+        // no work to do.
         onlyIf( { getGenerateDocs() ||
-                (getApiFile() != null && getRemovedApiFile() != null) ||
+                getApiFile() != null ||
                 getKeepListFile() != null ||
                 getStubsDir() != null } )
     }
@@ -167,18 +159,6 @@
         doclavaHidden = hidden as int[]
     }
 
-    private static boolean verifyAndGetGenerateApiFiles(File apiFile, File removedApiFile) {
-        if (apiFile == null) {
-            if (removedApiFile == null) {
-                return false
-            } else {
-                throw new InvalidUserDataException('removedApiFile specified but not apiFile')
-            }
-        } else {
-            return true
-        }
-    }
-
     /**
      * "Configures" this DoclavaTask with parameters that might not be at their final values
      * until this task is run.
@@ -188,31 +168,36 @@
 
         // configure doclava error/warning/hide levels
         JavadocOptionFileOption hide = options.addMultilineMultiValueOption("hide")
-        hide.setValue(getDoclavaHidden().collect({[it.toString()]}))
+        hide.setValue(getDoclavaHidden().collect({ [it.toString()] }))
 
         JavadocOptionFileOption warning = options.addMultilineMultiValueOption("warning")
-        warning.setValue(getDoclavaWarnings().collect({[it.toString()]}))
+        warning.setValue(getDoclavaWarnings().collect({ [it.toString()] }))
 
         JavadocOptionFileOption error = options.addMultilineMultiValueOption("error")
-        error.setValue(getDoclavaErrors().collect({[it.toString()]}))
+        error.setValue(getDoclavaErrors().collect({ [it.toString()] }))
 
         Collection hiddenPackages = getHiddenPackages()
         if (hiddenPackages) {
             JavadocOptionFileOption hidePackage =
                     options.addMultilineMultiValueOption("hidePackage")
-            hidePackage.setValue(hiddenPackages.collect({[it.toString()]}))
+            hidePackage.setValue(hiddenPackages.collect({ [it.toString()] }))
         }
 
         if (!getGenerateDocs()) {
             options.addOption(new DoclavaJavadocOptionFileOption('nodocs'))
         }
-        // If requested, generate the api files.
+
+        // If requested, generate the API files.
         File apiFile = getApiFile()
-        File removedApiFile = getRemovedApiFile()
-        if (verifyAndGetGenerateApiFiles(apiFile, removedApiFile)) {
+        if (apiFile != null) {
             options.addStringOption('api', apiFile.absolutePath)
-            options.addStringOption('removedApi', removedApiFile.absolutePath)
+
+            File removedApiFile = getRemovedApiFile()
+            if (removedApiFile != null) {
+                options.addStringOption('removedApi', removedApiFile.absolutePath)
+            }
         }
+
         // If requested, generate the keep list.
         File keepListFile = getKeepListFile()
         if (keepListFile != null) {
@@ -233,7 +218,7 @@
 
     @Override
     public void generate() {
-        configureDoclava();
-        super.generate();
+        configureDoclava()
+        super.generate()
     }
-}
\ No newline at end of file
+}
diff --git a/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java b/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java
index 55f118a..de2db91 100644
--- a/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java
+++ b/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java
@@ -19,7 +19,6 @@
 import com.google.common.io.Files;
 
 import org.gradle.api.DefaultTask;
-import org.gradle.api.Nullable;
 import org.gradle.api.tasks.Input;
 import org.gradle.api.tasks.InputFile;
 import org.gradle.api.tasks.Optional;
@@ -57,6 +56,7 @@
     }
 
     @InputFile
+    @Optional
     public File getNewRemovedApiFile() {
         return mNewRemovedApiFile;
     }
@@ -85,6 +85,7 @@
     }
 
     @OutputFile
+    @Optional
     public File getOldRemovedApiFile() {
         return mOldRemovedApiFile;
     }
@@ -95,7 +96,6 @@
 
     @OutputFile
     @Optional
-    @Nullable
     public File getWhitelistErrorsFile() {
         return mWhitelistErrorsFile;
     }
@@ -110,7 +110,14 @@
     @TaskAction
     public void doUpdate() throws Exception {
         Files.copy(getNewApiFile(), getOldApiFile());
-        Files.copy(getNewRemovedApiFile(), getOldRemovedApiFile());
+
+        if (getOldRemovedApiFile() != null) {
+            if (getNewRemovedApiFile() != null) {
+                Files.copy(getNewRemovedApiFile(), getOldRemovedApiFile());
+            } else {
+                getOldRemovedApiFile().delete();
+            }
+        }
 
         if (mWhitelistErrorsFile != null && !mWhitelistErrors.isEmpty()) {
             if (mWhitelistErrorsFile.exists()) {
diff --git a/compat/api/removed.txt b/compat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/compat/api/removed.txt
+++ /dev/null
diff --git a/content/api/removed.txt b/content/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/content/api/removed.txt
+++ /dev/null
diff --git a/core-ui/api/removed.txt b/core-ui/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/core-ui/api/removed.txt
+++ /dev/null
diff --git a/core-utils/api/removed.txt b/core-utils/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/core-utils/api/removed.txt
+++ /dev/null
diff --git a/customtabs/api/removed.txt b/customtabs/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/customtabs/api/removed.txt
+++ /dev/null
diff --git a/design/api/removed.txt b/design/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/design/api/removed.txt
+++ /dev/null
diff --git a/dynamic-animation/api/removed.txt b/dynamic-animation/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/dynamic-animation/api/removed.txt
+++ /dev/null
diff --git a/emoji/appcompat/api/removed.txt b/emoji/appcompat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/emoji/appcompat/api/removed.txt
+++ /dev/null
diff --git a/emoji/bundled/api/removed.txt b/emoji/bundled/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/emoji/bundled/api/removed.txt
+++ /dev/null
diff --git a/emoji/core/api/removed.txt b/emoji/core/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/emoji/core/api/removed.txt
+++ /dev/null
diff --git a/exifinterface/api/removed.txt b/exifinterface/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/exifinterface/api/removed.txt
+++ /dev/null
diff --git a/fragment/api/removed.txt b/fragment/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/fragment/api/removed.txt
+++ /dev/null
diff --git a/graphics/drawable/animated/api/removed.txt b/graphics/drawable/animated/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/graphics/drawable/animated/api/removed.txt
+++ /dev/null
diff --git a/graphics/drawable/static/api/removed.txt b/graphics/drawable/static/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/graphics/drawable/static/api/removed.txt
+++ /dev/null
diff --git a/lifecycle/common/api/removed.txt b/lifecycle/common/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/lifecycle/common/api/removed.txt
+++ /dev/null
diff --git a/lifecycle/runtime/api/removed.txt b/lifecycle/runtime/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/lifecycle/runtime/api/removed.txt
+++ /dev/null
diff --git a/media-compat/api/removed.txt b/media-compat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/media-compat/api/removed.txt
+++ /dev/null
diff --git a/percent/api/removed.txt b/percent/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/percent/api/removed.txt
+++ /dev/null
diff --git a/recommendation/api/removed.txt b/recommendation/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/recommendation/api/removed.txt
+++ /dev/null
diff --git a/transition/api/removed.txt b/transition/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/transition/api/removed.txt
+++ /dev/null
diff --git a/tv-provider/api/removed.txt b/tv-provider/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/tv-provider/api/removed.txt
+++ /dev/null
diff --git a/v13/api/removed.txt b/v13/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v13/api/removed.txt
+++ /dev/null
diff --git a/v14/preference/api/removed.txt b/v14/preference/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v14/preference/api/removed.txt
+++ /dev/null
diff --git a/v17/leanback/api/removed.txt b/v17/leanback/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v17/leanback/api/removed.txt
+++ /dev/null
diff --git a/v17/preference-leanback/api/removed.txt b/v17/preference-leanback/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v17/preference-leanback/api/removed.txt
+++ /dev/null
diff --git a/v7/appcompat/api/removed.txt b/v7/appcompat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/appcompat/api/removed.txt
+++ /dev/null
diff --git a/v7/cardview/api/removed.txt b/v7/cardview/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/cardview/api/removed.txt
+++ /dev/null
diff --git a/v7/gridlayout/api/removed.txt b/v7/gridlayout/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/gridlayout/api/removed.txt
+++ /dev/null
diff --git a/v7/mediarouter/api/removed.txt b/v7/mediarouter/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/mediarouter/api/removed.txt
+++ /dev/null
diff --git a/v7/palette/api/removed.txt b/v7/palette/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/palette/api/removed.txt
+++ /dev/null
diff --git a/v7/preference/api/removed.txt b/v7/preference/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/preference/api/removed.txt
+++ /dev/null
diff --git a/v7/recyclerview/api/removed.txt b/v7/recyclerview/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/recyclerview/api/removed.txt
+++ /dev/null
diff --git a/wear/api/removed.txt b/wear/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/wear/api/removed.txt
+++ /dev/null
