Add YouTube 16.20

Change-Id: Ic8fc3fd425b5cca464e212e3e508a148a95bee85
diff --git a/build.gradle b/build.gradle
index 3101886..cc51ea6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -437,7 +437,8 @@
         "protobuf-lite",
         "retrace_internal",
         "youtube/youtube.android_15.33",
-        "youtube/youtube.android_16.12"
+        "youtube/youtube.android_16.12",
+        "youtube/youtube.android_16.20"
     ],
 ]
 
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 800332f..e0837dd 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -368,6 +368,9 @@
       }
       return false;
     }
+    if (sourceClass.isAnnotation()) {
+      return false;
+    }
     if (!sourceClass.isInterface()
         && targetClass.isSerializable(appView)
         && !appInfo.isSerializable(sourceClass.type)) {
diff --git a/third_party/youtube/youtube.android_16.20.tar.gz.sha1 b/third_party/youtube/youtube.android_16.20.tar.gz.sha1
new file mode 100644
index 0000000..9e8e118
--- /dev/null
+++ b/third_party/youtube/youtube.android_16.20.tar.gz.sha1
@@ -0,0 +1 @@
+5e5ebc2236eae74b22886c51f46a88963f689efd
\ No newline at end of file
diff --git a/tools/youtube_data.py b/tools/youtube_data.py
index d12cfb6..827041a 100644
--- a/tools/youtube_data.py
+++ b/tools/youtube_data.py
@@ -15,7 +15,10 @@
 V16_12_BASE = os.path.join(BASE, 'youtube.android_16.12')
 V16_12_PREFIX = os.path.join(V16_12_BASE, 'YouTubeRelease')
 
-LATEST_VERSION = '16.12'
+V16_20_BASE = os.path.join(BASE, 'youtube.android_16.20')
+V16_20_PREFIX = os.path.join(V16_20_BASE, 'YouTubeRelease')
+
+LATEST_VERSION = '16.20'
 
 VERSIONS = {
   '15.33': {
@@ -80,4 +83,35 @@
       'min-api' : ANDROID_L_API,
     }
   },
+  '16.20': {
+    'deploy' : {
+      'sanitize_libraries': False,
+      'inputs': ['%s_deploy.jar' % V16_20_PREFIX],
+      'libraries' : [
+          os.path.join(
+              V16_20_BASE,
+              'legacy_YouTubeRelease_combined_library_jars_filtered.jar')],
+      'pgconf': [
+          '%s_proguard.config' % V16_20_PREFIX,
+          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
+          utils.IGNORE_WARNINGS_RULES],
+      'min-api' : ANDROID_L_API,
+      'android_java8_libs': {
+        'config': '%s/desugar_jdk_libs/full_desugar_jdk_libs.json' % V16_20_BASE,
+        # Intentionally not adding desugar_jdk_libs_configuration.jar since it
+        # is part of jdk_libs_to_desugar.jar in YouTube 16.20.
+        'program': ['%s/desugar_jdk_libs/jdk_libs_to_desugar.jar' % V16_20_BASE],
+        'library': '%s/android_jar/lib-v30/android.jar' % utils.THIRD_PARTY,
+        'pgconf': [
+          '%s/desugar_jdk_libs/base.pgcfg' % V16_20_BASE,
+          '%s/desugar_jdk_libs/minify_desugar_jdk_libs.pgcfg' % V16_20_BASE
+        ]
+      }
+    },
+    'proguarded' : {
+      'inputs': ['%s_proguard.jar' % V16_20_PREFIX],
+      'pgmap': '%s_proguard.map' % V16_20_PREFIX,
+      'min-api' : ANDROID_L_API,
+    }
+  },
 }