Unify naming in build metadata

Change-Id: If2ec7f606c58d1ff28efb07656f9b798b8822ffd
diff --git a/src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java b/src/main/java/com/android/tools/r8/metadata/D8ApiModelingMetadata.java
similarity index 88%
rename from src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java
rename to src/main/java/com/android/tools/r8/metadata/D8ApiModelingMetadata.java
index 4531502..cc73c5b 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/D8ApiModelingMetadata.java
@@ -6,4 +6,4 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface D8ApiModelingOptions {}
+public interface D8ApiModelingMetadata {}
diff --git a/src/main/java/com/android/tools/r8/metadata/D8BuildMetadata.java b/src/main/java/com/android/tools/r8/metadata/D8BuildMetadata.java
index 765c05c..2008658 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8BuildMetadata.java
+++ b/src/main/java/com/android/tools/r8/metadata/D8BuildMetadata.java
@@ -4,10 +4,10 @@
 package com.android.tools.r8.metadata;
 
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.D8ApiModelingOptionsImpl;
+import com.android.tools.r8.metadata.impl.D8ApiModelingMetadataImpl;
 import com.android.tools.r8.metadata.impl.D8BuildMetadataImpl;
-import com.android.tools.r8.metadata.impl.D8LibraryDesugaringOptionsImpl;
-import com.android.tools.r8.metadata.impl.D8OptionsImpl;
+import com.android.tools.r8.metadata.impl.D8LibraryDesugaringMetadataImpl;
+import com.android.tools.r8.metadata.impl.D8OptionsMetadataImpl;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonDeserializer;
 
@@ -17,11 +17,11 @@
   static D8BuildMetadata fromJson(String json) {
     return new GsonBuilder()
         .excludeFieldsWithoutExposeAnnotation()
-        .registerTypeAdapter(D8Options.class, deserializeTo(D8OptionsImpl.class))
+        .registerTypeAdapter(D8OptionsMetadata.class, deserializeTo(D8OptionsMetadataImpl.class))
         .registerTypeAdapter(
-            D8ApiModelingOptions.class, deserializeTo(D8ApiModelingOptionsImpl.class))
+            D8ApiModelingMetadata.class, deserializeTo(D8ApiModelingMetadataImpl.class))
         .registerTypeAdapter(
-            D8LibraryDesugaringOptions.class, deserializeTo(D8LibraryDesugaringOptionsImpl.class))
+            D8LibraryDesugaringMetadata.class, deserializeTo(D8LibraryDesugaringMetadataImpl.class))
         .create()
         .fromJson(json, D8BuildMetadataImpl.class);
   }
@@ -30,7 +30,7 @@
     return (element, type, context) -> context.deserialize(element, implClass);
   }
 
-  D8Options getOptions();
+  D8OptionsMetadata getOptions();
 
   String getVersion();
 
diff --git a/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java b/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringMetadata.java
similarity index 67%
rename from src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java
rename to src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringMetadata.java
index 30adb4a..8cc342c 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringMetadata.java
@@ -4,7 +4,7 @@
 package com.android.tools.r8.metadata;
 
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.D8R8LibraryDesugaringOptions;
+import com.android.tools.r8.metadata.impl.D8R8LibraryDesugaringMetadata;
 
 @KeepForApi
-public interface D8LibraryDesugaringOptions extends D8R8LibraryDesugaringOptions {}
+public interface D8LibraryDesugaringMetadata extends D8R8LibraryDesugaringMetadata {}
diff --git a/src/main/java/com/android/tools/r8/metadata/D8Options.java b/src/main/java/com/android/tools/r8/metadata/D8Options.java
deleted file mode 100644
index b09f4b4..0000000
--- a/src/main/java/com/android/tools/r8/metadata/D8Options.java
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.metadata;
-
-import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.D8R8Options;
-
-@KeepForApi
-public interface D8Options extends D8R8Options<D8ApiModelingOptions, D8LibraryDesugaringOptions> {}
diff --git a/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java b/src/main/java/com/android/tools/r8/metadata/D8OptionsMetadata.java
similarity index 63%
copy from src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java
copy to src/main/java/com/android/tools/r8/metadata/D8OptionsMetadata.java
index 30adb4a..0b9c4f9 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/D8OptionsMetadata.java
@@ -4,7 +4,8 @@
 package com.android.tools.r8.metadata;
 
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.D8R8LibraryDesugaringOptions;
+import com.android.tools.r8.metadata.impl.D8R8OptionsMetadata;
 
 @KeepForApi
-public interface D8LibraryDesugaringOptions extends D8R8LibraryDesugaringOptions {}
+public interface D8OptionsMetadata
+    extends D8R8OptionsMetadata<D8ApiModelingMetadata, D8LibraryDesugaringMetadata> {}
diff --git a/src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java b/src/main/java/com/android/tools/r8/metadata/R8ApiModelingMetadata.java
similarity index 88%
copy from src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java
copy to src/main/java/com/android/tools/r8/metadata/R8ApiModelingMetadata.java
index 4531502..19c62b1 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8ApiModelingMetadata.java
@@ -6,4 +6,4 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface D8ApiModelingOptions {}
+public interface R8ApiModelingMetadata {}
diff --git a/src/main/java/com/android/tools/r8/metadata/R8ApiModelingOptions.java b/src/main/java/com/android/tools/r8/metadata/R8ApiModelingOptions.java
deleted file mode 100644
index 8d175f3..0000000
--- a/src/main/java/com/android/tools/r8/metadata/R8ApiModelingOptions.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.metadata;
-
-import com.android.tools.r8.keepanno.annotations.KeepForApi;
-
-@KeepForApi
-public interface R8ApiModelingOptions {}
diff --git a/src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java b/src/main/java/com/android/tools/r8/metadata/R8BaselineProfileRewritingMetadata.java
similarity index 85%
copy from src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java
copy to src/main/java/com/android/tools/r8/metadata/R8BaselineProfileRewritingMetadata.java
index 4531502..0b24945 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8ApiModelingOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8BaselineProfileRewritingMetadata.java
@@ -6,4 +6,4 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface D8ApiModelingOptions {}
+public interface R8BaselineProfileRewritingMetadata {}
diff --git a/src/main/java/com/android/tools/r8/metadata/R8BaselineProfileRewritingOptions.java b/src/main/java/com/android/tools/r8/metadata/R8BaselineProfileRewritingOptions.java
deleted file mode 100644
index 7598aee..0000000
--- a/src/main/java/com/android/tools/r8/metadata/R8BaselineProfileRewritingOptions.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.metadata;
-
-import com.android.tools.r8.keepanno.annotations.KeepForApi;
-
-@KeepForApi
-public interface R8BaselineProfileRewritingOptions {}
diff --git a/src/main/java/com/android/tools/r8/metadata/R8BuildMetadata.java b/src/main/java/com/android/tools/r8/metadata/R8BuildMetadata.java
index 27f8792..153dd1e 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8BuildMetadata.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8BuildMetadata.java
@@ -4,18 +4,18 @@
 package com.android.tools.r8.metadata;
 
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.R8ApiModelingOptionsImpl;
-import com.android.tools.r8.metadata.impl.R8BaselineProfileRewritingOptionsImpl;
+import com.android.tools.r8.metadata.impl.R8ApiModelingMetadataImpl;
+import com.android.tools.r8.metadata.impl.R8BaselineProfileRewritingMetadataImpl;
 import com.android.tools.r8.metadata.impl.R8BuildMetadataImpl;
-import com.android.tools.r8.metadata.impl.R8CompilationInfoImpl;
+import com.android.tools.r8.metadata.impl.R8CompilationMetadataImpl;
 import com.android.tools.r8.metadata.impl.R8DexFileMetadataImpl;
 import com.android.tools.r8.metadata.impl.R8FeatureSplitMetadataImpl;
 import com.android.tools.r8.metadata.impl.R8FeatureSplitsMetadataImpl;
-import com.android.tools.r8.metadata.impl.R8KeepAttributesOptionsImpl;
-import com.android.tools.r8.metadata.impl.R8LibraryDesugaringOptionsImpl;
-import com.android.tools.r8.metadata.impl.R8OptionsImpl;
-import com.android.tools.r8.metadata.impl.R8ResourceOptimizationOptionsImpl;
-import com.android.tools.r8.metadata.impl.R8StartupOptimizationOptionsImpl;
+import com.android.tools.r8.metadata.impl.R8KeepAttributesMetadataImpl;
+import com.android.tools.r8.metadata.impl.R8LibraryDesugaringMetadataImpl;
+import com.android.tools.r8.metadata.impl.R8OptionsMetadataImpl;
+import com.android.tools.r8.metadata.impl.R8ResourceOptimizationMetadataImpl;
+import com.android.tools.r8.metadata.impl.R8StartupOptimizationMetadataImpl;
 import com.android.tools.r8.metadata.impl.R8StatsMetadataImpl;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonDeserializer;
@@ -27,13 +27,14 @@
   static R8BuildMetadata fromJson(String json) {
     return new GsonBuilder()
         .excludeFieldsWithoutExposeAnnotation()
-        .registerTypeAdapter(R8Options.class, deserializeTo(R8OptionsImpl.class))
+        .registerTypeAdapter(R8OptionsMetadata.class, deserializeTo(R8OptionsMetadataImpl.class))
         .registerTypeAdapter(
-            R8ApiModelingOptions.class, deserializeTo(R8ApiModelingOptionsImpl.class))
+            R8ApiModelingMetadata.class, deserializeTo(R8ApiModelingMetadataImpl.class))
         .registerTypeAdapter(
-            R8BaselineProfileRewritingOptions.class,
-            deserializeTo(R8BaselineProfileRewritingOptionsImpl.class))
-        .registerTypeAdapter(R8CompilationInfo.class, deserializeTo(R8CompilationInfoImpl.class))
+            R8BaselineProfileRewritingMetadata.class,
+            deserializeTo(R8BaselineProfileRewritingMetadataImpl.class))
+        .registerTypeAdapter(
+            R8CompilationMetadata.class, deserializeTo(R8CompilationMetadataImpl.class))
         .registerTypeAdapter(R8DexFileMetadata.class, deserializeTo(R8DexFileMetadataImpl.class))
         .registerTypeAdapter(R8StatsMetadata.class, deserializeTo(R8StatsMetadataImpl.class))
         .registerTypeAdapter(
@@ -41,15 +42,15 @@
         .registerTypeAdapter(
             R8FeatureSplitsMetadata.class, deserializeTo(R8FeatureSplitsMetadataImpl.class))
         .registerTypeAdapter(
-            R8KeepAttributesOptions.class, deserializeTo(R8KeepAttributesOptionsImpl.class))
+            R8KeepAttributesMetadata.class, deserializeTo(R8KeepAttributesMetadataImpl.class))
         .registerTypeAdapter(
-            R8LibraryDesugaringOptions.class, deserializeTo(R8LibraryDesugaringOptionsImpl.class))
+            R8LibraryDesugaringMetadata.class, deserializeTo(R8LibraryDesugaringMetadataImpl.class))
         .registerTypeAdapter(
-            R8ResourceOptimizationOptions.class,
-            deserializeTo(R8ResourceOptimizationOptionsImpl.class))
+            R8ResourceOptimizationMetadata.class,
+            deserializeTo(R8ResourceOptimizationMetadataImpl.class))
         .registerTypeAdapter(
-            R8StartupOptimizationOptions.class,
-            deserializeTo(R8StartupOptimizationOptionsImpl.class))
+            R8StartupOptimizationMetadata.class,
+            deserializeTo(R8StartupOptimizationMetadataImpl.class))
         .create()
         .fromJson(json, R8BuildMetadataImpl.class);
   }
@@ -58,14 +59,14 @@
     return (element, type, context) -> context.deserialize(element, implClass);
   }
 
-  R8Options getOptions();
+  R8OptionsMetadata getOptionsMetadata();
 
   /**
    * @return null if baseline profile rewriting is disabled.
    */
-  R8BaselineProfileRewritingOptions getBaselineProfileRewritingOptions();
+  R8BaselineProfileRewritingMetadata getBaselineProfileRewritingMetadata();
 
-  R8CompilationInfo getCompilationInfo();
+  R8CompilationMetadata getCompilationMetadata();
 
   /**
    * @return null if not compiling to dex.
@@ -80,12 +81,12 @@
   /**
    * @return null if resource optimization is disabled.
    */
-  R8ResourceOptimizationOptions getResourceOptimizationOptions();
+  R8ResourceOptimizationMetadata getResourceOptimizationMetadata();
 
   /**
    * @return null if startup optimization is disabled.
    */
-  R8StartupOptimizationOptions getStartupOptizationOptions();
+  R8StartupOptimizationMetadata getStartupOptizationOptions();
 
   R8StatsMetadata getStatsMetadata();
 
diff --git a/src/main/java/com/android/tools/r8/metadata/R8CompilationInfo.java b/src/main/java/com/android/tools/r8/metadata/R8CompilationMetadata.java
similarity index 90%
rename from src/main/java/com/android/tools/r8/metadata/R8CompilationInfo.java
rename to src/main/java/com/android/tools/r8/metadata/R8CompilationMetadata.java
index 2bc4a6a..a4ce3aa 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8CompilationInfo.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8CompilationMetadata.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface R8CompilationInfo {
+public interface R8CompilationMetadata {
 
   long getBuildTime();
 
diff --git a/src/main/java/com/android/tools/r8/metadata/R8KeepAttributesOptions.java b/src/main/java/com/android/tools/r8/metadata/R8KeepAttributesMetadata.java
similarity index 95%
rename from src/main/java/com/android/tools/r8/metadata/R8KeepAttributesOptions.java
rename to src/main/java/com/android/tools/r8/metadata/R8KeepAttributesMetadata.java
index b590c7e..fa58986 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8KeepAttributesOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8KeepAttributesMetadata.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface R8KeepAttributesOptions {
+public interface R8KeepAttributesMetadata {
 
   boolean isAnnotationDefaultKept();
 
diff --git a/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java b/src/main/java/com/android/tools/r8/metadata/R8LibraryDesugaringMetadata.java
similarity index 67%
copy from src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java
copy to src/main/java/com/android/tools/r8/metadata/R8LibraryDesugaringMetadata.java
index 30adb4a..c577d7d 100644
--- a/src/main/java/com/android/tools/r8/metadata/D8LibraryDesugaringOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8LibraryDesugaringMetadata.java
@@ -4,7 +4,7 @@
 package com.android.tools.r8.metadata;
 
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.D8R8LibraryDesugaringOptions;
+import com.android.tools.r8.metadata.impl.D8R8LibraryDesugaringMetadata;
 
 @KeepForApi
-public interface D8LibraryDesugaringOptions extends D8R8LibraryDesugaringOptions {}
+public interface R8LibraryDesugaringMetadata extends D8R8LibraryDesugaringMetadata {}
diff --git a/src/main/java/com/android/tools/r8/metadata/R8LibraryDesugaringOptions.java b/src/main/java/com/android/tools/r8/metadata/R8LibraryDesugaringOptions.java
deleted file mode 100644
index 6a9df33..0000000
--- a/src/main/java/com/android/tools/r8/metadata/R8LibraryDesugaringOptions.java
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.metadata;
-
-import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.metadata.impl.D8R8LibraryDesugaringOptions;
-
-@KeepForApi
-public interface R8LibraryDesugaringOptions extends D8R8LibraryDesugaringOptions {}
diff --git a/src/main/java/com/android/tools/r8/metadata/R8Options.java b/src/main/java/com/android/tools/r8/metadata/R8OptionsMetadata.java
similarity index 79%
rename from src/main/java/com/android/tools/r8/metadata/R8Options.java
rename to src/main/java/com/android/tools/r8/metadata/R8OptionsMetadata.java
index 697af39..c9279c2 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8Options.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8OptionsMetadata.java
@@ -6,22 +6,22 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface R8Options {
+public interface R8OptionsMetadata {
 
   /**
    * @return null if API modeling is disabled.
    */
-  R8ApiModelingOptions getApiModelingOptions();
+  R8ApiModelingMetadata getApiModelingMetadata();
 
   /**
    * @return null if no ProGuard configuration is provided.
    */
-  R8KeepAttributesOptions getKeepAttributesOptions();
+  R8KeepAttributesMetadata getKeepAttributesMetadata();
 
   /**
    * @return null if library desugaring is disabled.
    */
-  R8LibraryDesugaringOptions getLibraryDesugaringOptions();
+  R8LibraryDesugaringMetadata getLibraryDesugaringMetadata();
 
   int getMinApiLevel();
 
diff --git a/src/main/java/com/android/tools/r8/metadata/R8ResourceOptimizationOptions.java b/src/main/java/com/android/tools/r8/metadata/R8ResourceOptimizationMetadata.java
similarity index 87%
rename from src/main/java/com/android/tools/r8/metadata/R8ResourceOptimizationOptions.java
rename to src/main/java/com/android/tools/r8/metadata/R8ResourceOptimizationMetadata.java
index 693286e..1dd29f1 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8ResourceOptimizationOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8ResourceOptimizationMetadata.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface R8ResourceOptimizationOptions {
+public interface R8ResourceOptimizationMetadata {
 
   boolean isOptimizedShrinkingEnabled();
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/R8StartupOptimizationOptions.java b/src/main/java/com/android/tools/r8/metadata/R8StartupOptimizationMetadata.java
similarity index 87%
rename from src/main/java/com/android/tools/r8/metadata/R8StartupOptimizationOptions.java
rename to src/main/java/com/android/tools/r8/metadata/R8StartupOptimizationMetadata.java
index a57b01e..608d05f 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8StartupOptimizationOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8StartupOptimizationMetadata.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 
 @KeepForApi
-public interface R8StartupOptimizationOptions {
+public interface R8StartupOptimizationMetadata {
 
   int getNumberOfStartupDexFiles();
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/BuildMetadataFactory.java b/src/main/java/com/android/tools/r8/metadata/impl/BuildMetadataFactory.java
index bcf50d4..e40691b 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/BuildMetadataFactory.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/BuildMetadataFactory.java
@@ -25,7 +25,7 @@
 
   public static D8BuildMetadata create(AppView<AppInfo> appView) {
     return D8BuildMetadataImpl.builder()
-        .setOptions(new D8OptionsImpl(appView.options()))
+        .setOptions(new D8OptionsMetadataImpl(appView.options()))
         .setVersion(Version.LABEL)
         .build();
   }
@@ -45,9 +45,9 @@
         virtualFilesForFeatureSplit.getOrDefault(FeatureSplit.BASE, Collections.emptyList());
     InternalOptions options = appView.options();
     return R8BuildMetadataImpl.builder()
-        .setOptions(new R8OptionsImpl(options))
-        .setBaselineProfileRewritingOptions(R8BaselineProfileRewritingOptionsImpl.create(options))
-        .setCompilationInfo(R8CompilationInfoImpl.create(appView, executorService))
+        .setOptions(new R8OptionsMetadataImpl(options))
+        .setBaselineProfileRewritingOptions(R8BaselineProfileRewritingMetadataImpl.create(options))
+        .setCompilationInfo(R8CompilationMetadataImpl.create(appView, executorService))
         .applyIf(
             options.isGeneratingDex(), builder -> builder.setDexFilesMetadata(baseVirtualFiles))
         .applyIf(
@@ -55,9 +55,9 @@
             builder ->
                 builder.setFeatureSplitsMetadata(
                     R8FeatureSplitsMetadataImpl.create(appView, virtualFilesForFeatureSplit)))
-        .setResourceOptimizationOptions(R8ResourceOptimizationOptionsImpl.create(options))
+        .setResourceOptimizationOptions(R8ResourceOptimizationMetadataImpl.create(options))
         .setStartupOptimizationOptions(
-            R8StartupOptimizationOptionsImpl.create(options, baseVirtualFiles))
+            R8StartupOptimizationMetadataImpl.create(options, baseVirtualFiles))
         .setStatsMetadata(R8StatsMetadataImpl.create(appView))
         .setVersion(Version.LABEL)
         .build();
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingMetadataImpl.java
similarity index 79%
copy from src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingOptionsImpl.java
copy to src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingMetadataImpl.java
index 64a6302..4f252c3 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingMetadataImpl.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.D8ApiModelingOptions;
+import com.android.tools.r8.metadata.D8ApiModelingMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.SerializedName;
 
@@ -19,13 +19,13 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class D8ApiModelingOptionsImpl implements D8ApiModelingOptions {
+public class D8ApiModelingMetadataImpl implements D8ApiModelingMetadata {
 
-  private D8ApiModelingOptionsImpl() {}
+  private D8ApiModelingMetadataImpl() {}
 
-  public static D8ApiModelingOptionsImpl create(InternalOptions options) {
+  public static D8ApiModelingMetadataImpl create(InternalOptions options) {
     return options.apiModelingOptions().enableLibraryApiModeling
-        ? new D8ApiModelingOptionsImpl()
+        ? new D8ApiModelingMetadataImpl()
         : null;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8BuildMetadataImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/D8BuildMetadataImpl.java
index 9f4bd36..22b91ed 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8BuildMetadataImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8BuildMetadataImpl.java
@@ -9,7 +9,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
 import com.android.tools.r8.metadata.D8BuildMetadata;
-import com.android.tools.r8.metadata.D8Options;
+import com.android.tools.r8.metadata.D8OptionsMetadata;
 import com.google.gson.Gson;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
@@ -25,13 +25,13 @@
 
   @Expose
   @SerializedName("options")
-  private final D8Options options;
+  private final D8OptionsMetadata options;
 
   @Expose
   @SerializedName("version")
   private final String version;
 
-  public D8BuildMetadataImpl(D8Options options, String version) {
+  public D8BuildMetadataImpl(D8OptionsMetadata options, String version) {
     this.options = options;
     this.version = version;
   }
@@ -41,7 +41,7 @@
   }
 
   @Override
-  public D8Options getOptions() {
+  public D8OptionsMetadata getOptions() {
     return options;
   }
 
@@ -57,10 +57,10 @@
 
   public static class Builder {
 
-    private D8Options options;
+    private D8OptionsMetadata options;
     private String version;
 
-    public Builder setOptions(D8Options options) {
+    public Builder setOptions(D8OptionsMetadata options) {
       this.options = options;
       return this;
     }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringMetadataImpl.java
similarity index 74%
copy from src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringOptionsImpl.java
copy to src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringMetadataImpl.java
index 0571af6..4b61718 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringMetadataImpl.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.D8LibraryDesugaringOptions;
+import com.android.tools.r8.metadata.D8LibraryDesugaringMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.SerializedName;
 
@@ -19,16 +19,16 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class D8LibraryDesugaringOptionsImpl extends D8R8LibraryDesugaringOptionsImpl
-    implements D8LibraryDesugaringOptions {
+public class D8LibraryDesugaringMetadataImpl extends D8R8LibraryDesugaringMetadataImpl
+    implements D8LibraryDesugaringMetadata {
 
-  private D8LibraryDesugaringOptionsImpl(InternalOptions options) {
+  private D8LibraryDesugaringMetadataImpl(InternalOptions options) {
     super(options);
   }
 
-  public static D8LibraryDesugaringOptionsImpl create(InternalOptions options) {
+  public static D8LibraryDesugaringMetadataImpl create(InternalOptions options) {
     return !options.machineDesugaredLibrarySpecification.isEmpty()
-        ? new D8LibraryDesugaringOptionsImpl(options)
+        ? new D8LibraryDesugaringMetadataImpl(options)
         : null;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8OptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/D8OptionsMetadataImpl.java
similarity index 68%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8OptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/D8OptionsMetadataImpl.java
index 39210bd..76640a5 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8OptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8OptionsMetadataImpl.java
@@ -8,9 +8,9 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.D8ApiModelingOptions;
-import com.android.tools.r8.metadata.D8LibraryDesugaringOptions;
-import com.android.tools.r8.metadata.D8Options;
+import com.android.tools.r8.metadata.D8ApiModelingMetadata;
+import com.android.tools.r8.metadata.D8LibraryDesugaringMetadata;
+import com.android.tools.r8.metadata.D8OptionsMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.SerializedName;
 
@@ -21,13 +21,14 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class D8OptionsImpl extends D8R8OptionsImpl<D8ApiModelingOptions, D8LibraryDesugaringOptions>
-    implements D8Options {
+public class D8OptionsMetadataImpl
+    extends D8R8OptionsMetadataImpl<D8ApiModelingMetadata, D8LibraryDesugaringMetadata>
+    implements D8OptionsMetadata {
 
-  public D8OptionsImpl(InternalOptions options) {
+  public D8OptionsMetadataImpl(InternalOptions options) {
     super(
-        D8ApiModelingOptionsImpl.create(options),
-        D8LibraryDesugaringOptionsImpl.create(options),
+        D8ApiModelingMetadataImpl.create(options),
+        D8LibraryDesugaringMetadataImpl.create(options),
         options);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringOptions.java b/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringMetadata.java
similarity index 85%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringOptions.java
rename to src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringMetadata.java
index 8ea55df..4070510 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringOptions.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringMetadata.java
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.metadata.impl;
 
-public interface D8R8LibraryDesugaringOptions {
+public interface D8R8LibraryDesugaringMetadata {
 
   String getIdentifier();
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringMetadataImpl.java
similarity index 88%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringMetadataImpl.java
index 8cc4c8b..4ec551c 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8R8LibraryDesugaringMetadataImpl.java
@@ -19,13 +19,13 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-abstract class D8R8LibraryDesugaringOptionsImpl implements D8R8LibraryDesugaringOptions {
+abstract class D8R8LibraryDesugaringMetadataImpl implements D8R8LibraryDesugaringMetadata {
 
   @Expose
   @SerializedName("identifier")
   private final String identifier;
 
-  public D8R8LibraryDesugaringOptionsImpl(InternalOptions options) {
+  public D8R8LibraryDesugaringMetadataImpl(InternalOptions options) {
     this.identifier = options.machineDesugaredLibrarySpecification.getIdentifier();
   }
 
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8R8Options.java b/src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsMetadata.java
similarity index 65%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8R8Options.java
rename to src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsMetadata.java
index 6b7f8fc..0ec0446 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8R8Options.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsMetadata.java
@@ -3,18 +3,18 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.metadata.impl;
 
-public interface D8R8Options<
-    ApiModelingOptions, LibraryDesugaringOptions extends D8R8LibraryDesugaringOptions> {
+public interface D8R8OptionsMetadata<
+    ApiModelingMetadata, LibraryDesugaringMetadata extends D8R8LibraryDesugaringMetadata> {
 
   /**
    * @return null if API modeling is disabled.
    */
-  ApiModelingOptions getApiModelingOptions();
+  ApiModelingMetadata getApiModelingMetadata();
 
   /**
    * @return null if library desugaring is disabled.
    */
-  LibraryDesugaringOptions getLibraryDesugaringOptions();
+  LibraryDesugaringMetadata getLibraryDesugaringMetadata();
 
   int getMinApiLevel();
 
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsMetadataImpl.java
similarity index 65%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsMetadataImpl.java
index adc01e3..00b0527 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/D8R8OptionsMetadataImpl.java
@@ -19,17 +19,17 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-abstract class D8R8OptionsImpl<
-        ApiModelingOptions, LibraryDesugaringOptions extends D8R8LibraryDesugaringOptions>
-    implements D8R8Options<ApiModelingOptions, LibraryDesugaringOptions> {
+abstract class D8R8OptionsMetadataImpl<
+        ApiModelingMetadata, LibraryDesugaringMetadata extends D8R8LibraryDesugaringMetadata>
+    implements D8R8OptionsMetadata<ApiModelingMetadata, LibraryDesugaringMetadata> {
 
   @Expose
-  @SerializedName("apiModelingOptions")
-  private final ApiModelingOptions apiModelingOptions;
+  @SerializedName("apiModeling")
+  private final ApiModelingMetadata apiModelingMetadata;
 
   @Expose
-  @SerializedName("libraryDesugaringOptions")
-  private final LibraryDesugaringOptions libraryDesugaringOptions;
+  @SerializedName("libraryDesugaring")
+  private final LibraryDesugaringMetadata libraryDesugaringMetadata;
 
   @Expose
   @SerializedName("minApiLevel")
@@ -39,24 +39,24 @@
   @SerializedName("isDebugModeEnabled")
   private final boolean isDebugModeEnabled;
 
-  public D8R8OptionsImpl(
-      ApiModelingOptions apiModelingOptions,
-      LibraryDesugaringOptions libraryDesugaringOptions,
+  public D8R8OptionsMetadataImpl(
+      ApiModelingMetadata apiModelingMetadata,
+      LibraryDesugaringMetadata libraryDesugaringMetadata,
       InternalOptions options) {
-    this.apiModelingOptions = apiModelingOptions;
-    this.libraryDesugaringOptions = libraryDesugaringOptions;
+    this.apiModelingMetadata = apiModelingMetadata;
+    this.libraryDesugaringMetadata = libraryDesugaringMetadata;
     this.minApiLevel = options.isGeneratingDex() ? options.getMinApiLevel().getLevel() : -1;
     this.isDebugModeEnabled = options.debug;
   }
 
   @Override
-  public ApiModelingOptions getApiModelingOptions() {
-    return apiModelingOptions;
+  public ApiModelingMetadata getApiModelingMetadata() {
+    return apiModelingMetadata;
   }
 
   @Override
-  public LibraryDesugaringOptions getLibraryDesugaringOptions() {
-    return libraryDesugaringOptions;
+  public LibraryDesugaringMetadata getLibraryDesugaringMetadata() {
+    return libraryDesugaringMetadata;
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8ApiModelingMetadataImpl.java
similarity index 79%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8ApiModelingMetadataImpl.java
index 64a6302..28f388a 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8ApiModelingOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8ApiModelingMetadataImpl.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.D8ApiModelingOptions;
+import com.android.tools.r8.metadata.R8ApiModelingMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.SerializedName;
 
@@ -19,13 +19,13 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class D8ApiModelingOptionsImpl implements D8ApiModelingOptions {
+public class R8ApiModelingMetadataImpl implements R8ApiModelingMetadata {
 
-  private D8ApiModelingOptionsImpl() {}
+  private R8ApiModelingMetadataImpl() {}
 
-  public static D8ApiModelingOptionsImpl create(InternalOptions options) {
+  public static R8ApiModelingMetadataImpl create(InternalOptions options) {
     return options.apiModelingOptions().enableLibraryApiModeling
-        ? new D8ApiModelingOptionsImpl()
+        ? new R8ApiModelingMetadataImpl()
         : null;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8ApiModelingOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8ApiModelingOptionsImpl.java
deleted file mode 100644
index c1ed920..0000000
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8ApiModelingOptionsImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.metadata.impl;
-
-import com.android.tools.r8.keepanno.annotations.AnnotationPattern;
-import com.android.tools.r8.keepanno.annotations.FieldAccessFlags;
-import com.android.tools.r8.keepanno.annotations.KeepConstraint;
-import com.android.tools.r8.keepanno.annotations.KeepItemKind;
-import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8ApiModelingOptions;
-import com.android.tools.r8.utils.InternalOptions;
-import com.google.gson.annotations.SerializedName;
-
-@UsedByReflection(
-    description = "Keep and preserve @SerializedName for correct (de)serialization",
-    constraints = {KeepConstraint.LOOKUP},
-    constrainAnnotations = @AnnotationPattern(constant = SerializedName.class),
-    kind = KeepItemKind.CLASS_AND_FIELDS,
-    fieldAccess = {FieldAccessFlags.PRIVATE},
-    fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8ApiModelingOptionsImpl implements R8ApiModelingOptions {
-
-  private R8ApiModelingOptionsImpl() {}
-
-  public static R8ApiModelingOptionsImpl create(InternalOptions options) {
-    return options.apiModelingOptions().enableLibraryApiModeling
-        ? new R8ApiModelingOptionsImpl()
-        : null;
-  }
-}
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8BaselineProfileRewritingOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8BaselineProfileRewritingMetadataImpl.java
similarity index 75%
rename from src/main/java/com/android/tools/r8/metadata/impl/R8BaselineProfileRewritingOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8BaselineProfileRewritingMetadataImpl.java
index 36b7683..9b2b20b 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8BaselineProfileRewritingOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8BaselineProfileRewritingMetadataImpl.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8BaselineProfileRewritingOptions;
+import com.android.tools.r8.metadata.R8BaselineProfileRewritingMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.SerializedName;
 
@@ -19,14 +19,14 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8BaselineProfileRewritingOptionsImpl implements R8BaselineProfileRewritingOptions {
+public class R8BaselineProfileRewritingMetadataImpl implements R8BaselineProfileRewritingMetadata {
 
-  private R8BaselineProfileRewritingOptionsImpl() {}
+  private R8BaselineProfileRewritingMetadataImpl() {}
 
-  public static R8BaselineProfileRewritingOptionsImpl create(InternalOptions options) {
+  public static R8BaselineProfileRewritingMetadataImpl create(InternalOptions options) {
     if (options.getArtProfileOptions().getArtProfilesForRewriting().isEmpty()) {
       return null;
     }
-    return new R8BaselineProfileRewritingOptionsImpl();
+    return new R8BaselineProfileRewritingMetadataImpl();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8BuildMetadataImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8BuildMetadataImpl.java
index c24ba36..38cb87d 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8BuildMetadataImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8BuildMetadataImpl.java
@@ -11,14 +11,14 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8BaselineProfileRewritingOptions;
+import com.android.tools.r8.metadata.R8BaselineProfileRewritingMetadata;
 import com.android.tools.r8.metadata.R8BuildMetadata;
-import com.android.tools.r8.metadata.R8CompilationInfo;
+import com.android.tools.r8.metadata.R8CompilationMetadata;
 import com.android.tools.r8.metadata.R8DexFileMetadata;
 import com.android.tools.r8.metadata.R8FeatureSplitsMetadata;
-import com.android.tools.r8.metadata.R8Options;
-import com.android.tools.r8.metadata.R8ResourceOptimizationOptions;
-import com.android.tools.r8.metadata.R8StartupOptimizationOptions;
+import com.android.tools.r8.metadata.R8OptionsMetadata;
+import com.android.tools.r8.metadata.R8ResourceOptimizationMetadata;
+import com.android.tools.r8.metadata.R8StartupOptimizationMetadata;
 import com.android.tools.r8.metadata.R8StatsMetadata;
 import com.android.tools.r8.utils.ListUtils;
 import com.google.gson.Gson;
@@ -39,58 +39,58 @@
 
   @Expose
   @SerializedName("options")
-  private final R8Options options;
+  private final R8OptionsMetadata optionsMetadata;
 
   @Expose
-  @SerializedName("baselineProfileRewritingOptions")
-  private final R8BaselineProfileRewritingOptions baselineProfileRewritingOptions;
+  @SerializedName("baselineProfileRewriting")
+  private final R8BaselineProfileRewritingMetadata baselineProfileRewritingMetadata;
 
   @Expose
-  @SerializedName("compilationInfo")
-  private final R8CompilationInfo compilationInfo;
+  @SerializedName("compilation")
+  private final R8CompilationMetadata compilationMetadata;
 
   @Expose
-  @SerializedName("dexFilesMetadata")
+  @SerializedName("dexFiles")
   private final List<R8DexFileMetadata> dexFilesMetadata;
 
   @Expose
-  @SerializedName("statsMetadata")
+  @SerializedName("stats")
   private final R8StatsMetadata statsMetadata;
 
   @Expose
-  @SerializedName("featureSplitsMetadata")
+  @SerializedName("featureSplits")
   private final R8FeatureSplitsMetadata featureSplitsMetadata;
 
   @Expose
-  @SerializedName("resourceOptimizationOptions")
-  private final R8ResourceOptimizationOptions resourceOptimizationOptions;
+  @SerializedName("resourceOptimization")
+  private final R8ResourceOptimizationMetadata resourceOptimizationMetadata;
 
   @Expose
-  @SerializedName("startupOptimizationOptions")
-  private final R8StartupOptimizationOptions startupOptimizationOptions;
+  @SerializedName("startupOptimization")
+  private final R8StartupOptimizationMetadata startupOptimizationMetadata;
 
   @Expose
   @SerializedName("version")
   private final String version;
 
   public R8BuildMetadataImpl(
-      R8Options options,
-      R8BaselineProfileRewritingOptions baselineProfileRewritingOptions,
-      R8CompilationInfo compilationInfo,
+      R8OptionsMetadata options,
+      R8BaselineProfileRewritingMetadata baselineProfileRewritingOptions,
+      R8CompilationMetadata compilationMetadata,
       List<R8DexFileMetadata> dexFilesMetadata,
       R8StatsMetadata statsMetadata,
       R8FeatureSplitsMetadata featureSplitsMetadata,
-      R8ResourceOptimizationOptions resourceOptimizationOptions,
-      R8StartupOptimizationOptions startupOptimizationOptions,
+      R8ResourceOptimizationMetadata resourceOptimizationMetadata,
+      R8StartupOptimizationMetadata startupOptimizationMetadata,
       String version) {
-    this.options = options;
-    this.baselineProfileRewritingOptions = baselineProfileRewritingOptions;
-    this.compilationInfo = compilationInfo;
+    this.optionsMetadata = options;
+    this.baselineProfileRewritingMetadata = baselineProfileRewritingOptions;
+    this.compilationMetadata = compilationMetadata;
     this.dexFilesMetadata = dexFilesMetadata;
     this.statsMetadata = statsMetadata;
     this.featureSplitsMetadata = featureSplitsMetadata;
-    this.resourceOptimizationOptions = resourceOptimizationOptions;
-    this.startupOptimizationOptions = startupOptimizationOptions;
+    this.resourceOptimizationMetadata = resourceOptimizationMetadata;
+    this.startupOptimizationMetadata = startupOptimizationMetadata;
     this.version = version;
   }
 
@@ -99,18 +99,18 @@
   }
 
   @Override
-  public R8Options getOptions() {
-    return options;
+  public R8OptionsMetadata getOptionsMetadata() {
+    return optionsMetadata;
   }
 
   @Override
-  public R8BaselineProfileRewritingOptions getBaselineProfileRewritingOptions() {
-    return baselineProfileRewritingOptions;
+  public R8BaselineProfileRewritingMetadata getBaselineProfileRewritingMetadata() {
+    return baselineProfileRewritingMetadata;
   }
 
   @Override
-  public R8CompilationInfo getCompilationInfo() {
-    return compilationInfo;
+  public R8CompilationMetadata getCompilationMetadata() {
+    return compilationMetadata;
   }
 
   @Override
@@ -124,13 +124,13 @@
   }
 
   @Override
-  public R8ResourceOptimizationOptions getResourceOptimizationOptions() {
-    return resourceOptimizationOptions;
+  public R8ResourceOptimizationMetadata getResourceOptimizationMetadata() {
+    return resourceOptimizationMetadata;
   }
 
   @Override
-  public R8StartupOptimizationOptions getStartupOptizationOptions() {
-    return startupOptimizationOptions;
+  public R8StartupOptimizationMetadata getStartupOptizationOptions() {
+    return startupOptimizationMetadata;
   }
 
   @Override
@@ -150,14 +150,14 @@
 
   public static class Builder {
 
-    private R8Options options;
-    private R8BaselineProfileRewritingOptions baselineProfileRewritingOptions;
-    private R8CompilationInfo compilationInfo;
+    private R8OptionsMetadata options;
+    private R8BaselineProfileRewritingMetadata baselineProfileRewritingOptions;
+    private R8CompilationMetadata compilationInfo;
     private List<R8DexFileMetadata> dexFilesMetadata;
     private R8StatsMetadata statsMetadata;
     private R8FeatureSplitsMetadata featureSplitsMetadata;
-    private R8ResourceOptimizationOptions resourceOptimizationOptions;
-    private R8StartupOptimizationOptions startupOptimizationOptions;
+    private R8ResourceOptimizationMetadata resourceOptimizationOptions;
+    private R8StartupOptimizationMetadata startupOptimizationOptions;
     private String version;
 
     public Builder applyIf(boolean condition, Consumer<Builder> thenConsumer) {
@@ -167,18 +167,18 @@
       return this;
     }
 
-    public Builder setOptions(R8Options options) {
+    public Builder setOptions(R8OptionsMetadata options) {
       this.options = options;
       return this;
     }
 
     public Builder setBaselineProfileRewritingOptions(
-        R8BaselineProfileRewritingOptions baselineProfileRewritingOptions) {
+        R8BaselineProfileRewritingMetadata baselineProfileRewritingOptions) {
       this.baselineProfileRewritingOptions = baselineProfileRewritingOptions;
       return this;
     }
 
-    public Builder setCompilationInfo(R8CompilationInfo compilationInfo) {
+    public Builder setCompilationInfo(R8CompilationMetadata compilationInfo) {
       this.compilationInfo = compilationInfo;
       return this;
     }
@@ -204,13 +204,13 @@
     }
 
     public Builder setResourceOptimizationOptions(
-        R8ResourceOptimizationOptions resourceOptimizationOptions) {
+        R8ResourceOptimizationMetadata resourceOptimizationOptions) {
       this.resourceOptimizationOptions = resourceOptimizationOptions;
       return this;
     }
 
     public Builder setStartupOptimizationOptions(
-        R8StartupOptimizationOptions startupOptimizationOptions) {
+        R8StartupOptimizationMetadata startupOptimizationOptions) {
       this.startupOptimizationOptions = startupOptimizationOptions;
       return this;
     }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8CompilationInfoImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8CompilationMetadataImpl.java
similarity index 83%
rename from src/main/java/com/android/tools/r8/metadata/impl/R8CompilationInfoImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8CompilationMetadataImpl.java
index f5f9094..4be7d15 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8CompilationInfoImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8CompilationMetadataImpl.java
@@ -10,7 +10,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8CompilationInfo;
+import com.android.tools.r8.metadata.R8CompilationMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.google.gson.annotations.Expose;
@@ -24,7 +24,7 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8CompilationInfoImpl implements R8CompilationInfo {
+public class R8CompilationMetadataImpl implements R8CompilationMetadata {
 
   @Expose
   @SerializedName("buildTime")
@@ -34,17 +34,18 @@
   @SerializedName("numberOfThreads")
   private final long numberOfThreads;
 
-  private R8CompilationInfoImpl(long buildTime, int numberOfThreads) {
+  private R8CompilationMetadataImpl(long buildTime, int numberOfThreads) {
     this.buildTime = buildTime;
     this.numberOfThreads = numberOfThreads;
   }
 
-  public static R8CompilationInfoImpl create(
+  public static R8CompilationMetadataImpl create(
       AppView<? extends AppInfoWithClassHierarchy> appView, ExecutorService executorService) {
     InternalOptions options = appView.options();
     assert options.created > 0;
     long buildTime = System.nanoTime() - options.created;
-    return new R8CompilationInfoImpl(buildTime, ThreadUtils.getNumberOfThreads(executorService));
+    return new R8CompilationMetadataImpl(
+        buildTime, ThreadUtils.getNumberOfThreads(executorService));
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitMetadataImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitMetadataImpl.java
index ae567d7..521642e 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitMetadataImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitMetadataImpl.java
@@ -24,7 +24,7 @@
 public class R8FeatureSplitMetadataImpl implements R8FeatureSplitMetadata {
 
   @Expose
-  @SerializedName("dexFilesMetadata")
+  @SerializedName("dexFiles")
   private final List<R8DexFileMetadata> dexFilesMetadata;
 
   public R8FeatureSplitMetadataImpl(List<R8DexFileMetadata> dexFilesMetadata) {
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitsMetadataImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitsMetadataImpl.java
index 5d558b2..d3b6b7a 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitsMetadataImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8FeatureSplitsMetadataImpl.java
@@ -35,7 +35,7 @@
 public class R8FeatureSplitsMetadataImpl implements R8FeatureSplitsMetadata {
 
   @Expose
-  @SerializedName("featureSplitsMetadata")
+  @SerializedName("featureSplits")
   private final List<R8FeatureSplitMetadata> featureSplitsMetadata;
 
   @Expose
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8KeepAttributesOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8KeepAttributesMetadataImpl.java
similarity index 96%
rename from src/main/java/com/android/tools/r8/metadata/impl/R8KeepAttributesOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8KeepAttributesMetadataImpl.java
index ccec35f..ee9f918 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8KeepAttributesOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8KeepAttributesMetadataImpl.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8KeepAttributesOptions;
+import com.android.tools.r8.metadata.R8KeepAttributesMetadata;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
@@ -20,7 +20,7 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8KeepAttributesOptionsImpl implements R8KeepAttributesOptions {
+public class R8KeepAttributesMetadataImpl implements R8KeepAttributesMetadata {
 
   @Expose
   @SerializedName("isAnnotationDefaultKept")
@@ -98,7 +98,7 @@
   @SerializedName("isStackMapTableKept")
   private final boolean isStackMapTableKept;
 
-  public R8KeepAttributesOptionsImpl(ProguardKeepAttributes keepAttributes) {
+  public R8KeepAttributesMetadataImpl(ProguardKeepAttributes keepAttributes) {
     this.isAnnotationDefaultKept = keepAttributes.annotationDefault;
     this.isEnclosingMethodKept = keepAttributes.enclosingMethod;
     this.isExceptionsKept = keepAttributes.exceptions;
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8LibraryDesugaringMetadataImpl.java
similarity index 74%
rename from src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8LibraryDesugaringMetadataImpl.java
index 0571af6..84059cd 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/D8LibraryDesugaringOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8LibraryDesugaringMetadataImpl.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.D8LibraryDesugaringOptions;
+import com.android.tools.r8.metadata.R8LibraryDesugaringMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.SerializedName;
 
@@ -19,16 +19,16 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class D8LibraryDesugaringOptionsImpl extends D8R8LibraryDesugaringOptionsImpl
-    implements D8LibraryDesugaringOptions {
+public class R8LibraryDesugaringMetadataImpl extends D8R8LibraryDesugaringMetadataImpl
+    implements R8LibraryDesugaringMetadata {
 
-  private D8LibraryDesugaringOptionsImpl(InternalOptions options) {
+  private R8LibraryDesugaringMetadataImpl(InternalOptions options) {
     super(options);
   }
 
-  public static D8LibraryDesugaringOptionsImpl create(InternalOptions options) {
+  public static R8LibraryDesugaringMetadataImpl create(InternalOptions options) {
     return !options.machineDesugaredLibrarySpecification.isEmpty()
-        ? new D8LibraryDesugaringOptionsImpl(options)
+        ? new R8LibraryDesugaringMetadataImpl(options)
         : null;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8LibraryDesugaringOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8LibraryDesugaringOptionsImpl.java
deleted file mode 100644
index cad11e6..0000000
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8LibraryDesugaringOptionsImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.metadata.impl;
-
-import com.android.tools.r8.keepanno.annotations.AnnotationPattern;
-import com.android.tools.r8.keepanno.annotations.FieldAccessFlags;
-import com.android.tools.r8.keepanno.annotations.KeepConstraint;
-import com.android.tools.r8.keepanno.annotations.KeepItemKind;
-import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8LibraryDesugaringOptions;
-import com.android.tools.r8.utils.InternalOptions;
-import com.google.gson.annotations.SerializedName;
-
-@UsedByReflection(
-    description = "Keep and preserve @SerializedName for correct (de)serialization",
-    constraints = {KeepConstraint.LOOKUP},
-    constrainAnnotations = @AnnotationPattern(constant = SerializedName.class),
-    kind = KeepItemKind.CLASS_AND_FIELDS,
-    fieldAccess = {FieldAccessFlags.PRIVATE},
-    fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8LibraryDesugaringOptionsImpl extends D8R8LibraryDesugaringOptionsImpl
-    implements R8LibraryDesugaringOptions {
-
-  private R8LibraryDesugaringOptionsImpl(InternalOptions options) {
-    super(options);
-  }
-
-  public static R8LibraryDesugaringOptionsImpl create(InternalOptions options) {
-    return !options.machineDesugaredLibrarySpecification.isEmpty()
-        ? new R8LibraryDesugaringOptionsImpl(options)
-        : null;
-  }
-}
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8OptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8OptionsMetadataImpl.java
similarity index 75%
rename from src/main/java/com/android/tools/r8/metadata/impl/R8OptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8OptionsMetadataImpl.java
index 28e5e92..70cec6f 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8OptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8OptionsMetadataImpl.java
@@ -8,10 +8,10 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8ApiModelingOptions;
-import com.android.tools.r8.metadata.R8KeepAttributesOptions;
-import com.android.tools.r8.metadata.R8LibraryDesugaringOptions;
-import com.android.tools.r8.metadata.R8Options;
+import com.android.tools.r8.metadata.R8ApiModelingMetadata;
+import com.android.tools.r8.metadata.R8KeepAttributesMetadata;
+import com.android.tools.r8.metadata.R8LibraryDesugaringMetadata;
+import com.android.tools.r8.metadata.R8OptionsMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
@@ -23,12 +23,13 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8OptionsImpl extends D8R8OptionsImpl<R8ApiModelingOptions, R8LibraryDesugaringOptions>
-    implements R8Options {
+public class R8OptionsMetadataImpl
+    extends D8R8OptionsMetadataImpl<R8ApiModelingMetadata, R8LibraryDesugaringMetadata>
+    implements R8OptionsMetadata {
 
   @Expose
-  @SerializedName("keepAttributesOptions")
-  private final R8KeepAttributesOptions keepAttributesOptions;
+  @SerializedName("keepAttributes")
+  private final R8KeepAttributesMetadata keepAttributesMetadata;
 
   @Expose
   @SerializedName("isAccessModificationEnabled")
@@ -50,14 +51,14 @@
   @SerializedName("isShrinkingEnabled")
   private final boolean isShrinkingEnabled;
 
-  public R8OptionsImpl(InternalOptions options) {
+  public R8OptionsMetadataImpl(InternalOptions options) {
     super(
-        R8ApiModelingOptionsImpl.create(options),
-        R8LibraryDesugaringOptionsImpl.create(options),
+        R8ApiModelingMetadataImpl.create(options),
+        R8LibraryDesugaringMetadataImpl.create(options),
         options);
-    this.keepAttributesOptions =
+    this.keepAttributesMetadata =
         options.hasProguardConfiguration()
-            ? new R8KeepAttributesOptionsImpl(
+            ? new R8KeepAttributesMetadataImpl(
                 options.getProguardConfiguration().getKeepAttributes())
             : null;
     this.isAccessModificationEnabled = options.isAccessModificationEnabled();
@@ -68,8 +69,8 @@
   }
 
   @Override
-  public R8KeepAttributesOptions getKeepAttributesOptions() {
-    return keepAttributesOptions;
+  public R8KeepAttributesMetadata getKeepAttributesMetadata() {
+    return keepAttributesMetadata;
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8ResourceOptimizationOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8ResourceOptimizationMetadataImpl.java
similarity index 80%
rename from src/main/java/com/android/tools/r8/metadata/impl/R8ResourceOptimizationOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8ResourceOptimizationMetadataImpl.java
index 3507271..790557e 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8ResourceOptimizationOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8ResourceOptimizationMetadataImpl.java
@@ -9,7 +9,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8ResourceOptimizationOptions;
+import com.android.tools.r8.metadata.R8ResourceOptimizationMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
@@ -21,22 +21,22 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8ResourceOptimizationOptionsImpl implements R8ResourceOptimizationOptions {
+public class R8ResourceOptimizationMetadataImpl implements R8ResourceOptimizationMetadata {
 
   @Expose
   @SerializedName("isOptimizedShrinkingEnabled")
   private final boolean isOptimizedShrinkingEnabled;
 
-  private R8ResourceOptimizationOptionsImpl(
+  private R8ResourceOptimizationMetadataImpl(
       ResourceShrinkerConfiguration resourceShrinkerConfiguration) {
     this.isOptimizedShrinkingEnabled = resourceShrinkerConfiguration.isOptimizedShrinking();
   }
 
-  public static R8ResourceOptimizationOptionsImpl create(InternalOptions options) {
+  public static R8ResourceOptimizationMetadataImpl create(InternalOptions options) {
     if (options.androidResourceProvider == null) {
       return null;
     }
-    return new R8ResourceOptimizationOptionsImpl(options.resourceShrinkerConfiguration);
+    return new R8ResourceOptimizationMetadataImpl(options.resourceShrinkerConfiguration);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8StartupOptimizationOptionsImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8StartupOptimizationMetadataImpl.java
similarity index 82%
rename from src/main/java/com/android/tools/r8/metadata/impl/R8StartupOptimizationOptionsImpl.java
rename to src/main/java/com/android/tools/r8/metadata/impl/R8StartupOptimizationMetadataImpl.java
index 0406f26..f18efd4 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8StartupOptimizationOptionsImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8StartupOptimizationMetadataImpl.java
@@ -9,7 +9,7 @@
 import com.android.tools.r8.keepanno.annotations.KeepConstraint;
 import com.android.tools.r8.keepanno.annotations.KeepItemKind;
 import com.android.tools.r8.keepanno.annotations.UsedByReflection;
-import com.android.tools.r8.metadata.R8StartupOptimizationOptions;
+import com.android.tools.r8.metadata.R8StartupOptimizationMetadata;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
@@ -22,23 +22,23 @@
     kind = KeepItemKind.CLASS_AND_FIELDS,
     fieldAccess = {FieldAccessFlags.PRIVATE},
     fieldAnnotatedByClassConstant = SerializedName.class)
-public class R8StartupOptimizationOptionsImpl implements R8StartupOptimizationOptions {
+public class R8StartupOptimizationMetadataImpl implements R8StartupOptimizationMetadata {
 
   @Expose
   @SerializedName("numberOfStartupDexFiles")
   private final int numberOfStartupDexFiles;
 
-  public R8StartupOptimizationOptionsImpl(List<VirtualFile> virtualFiles) {
+  public R8StartupOptimizationMetadataImpl(List<VirtualFile> virtualFiles) {
     this.numberOfStartupDexFiles =
         (int) virtualFiles.stream().filter(VirtualFile::isStartup).count();
   }
 
-  public static R8StartupOptimizationOptionsImpl create(
+  public static R8StartupOptimizationMetadataImpl create(
       InternalOptions options, List<VirtualFile> virtualFiles) {
     if (options.getStartupOptions().getStartupProfileProviders().isEmpty()) {
       return null;
     }
-    return new R8StartupOptimizationOptionsImpl(virtualFiles);
+    return new R8StartupOptimizationMetadataImpl(virtualFiles);
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java b/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java
index 7383685..24927fd 100644
--- a/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java
+++ b/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java
@@ -91,8 +91,8 @@
   }
 
   private void inspectDeserializedBuildMetadata(R8BuildMetadata buildMetadata) {
-    assertNotNull(buildMetadata.getBaselineProfileRewritingOptions());
-    assertNotNull(buildMetadata.getCompilationInfo());
+    assertNotNull(buildMetadata.getBaselineProfileRewritingMetadata());
+    assertNotNull(buildMetadata.getCompilationMetadata());
     R8FeatureSplitsMetadata featureSplitsMetadata = buildMetadata.getFeatureSplitsMetadata();
     if (parameters.isDexRuntime()) {
       assertNotNull(featureSplitsMetadata);
@@ -107,21 +107,21 @@
     } else {
       assertNull(featureSplitsMetadata);
     }
-    assertNotNull(buildMetadata.getOptions());
-    assertNotNull(buildMetadata.getOptions().getKeepAttributesOptions());
+    assertNotNull(buildMetadata.getOptionsMetadata());
+    assertNotNull(buildMetadata.getOptionsMetadata().getKeepAttributesMetadata());
     assertEquals(
         parameters.isCfRuntime() ? -1 : parameters.getApiLevel().getLevel(),
-        buildMetadata.getOptions().getMinApiLevel());
-    assertFalse(buildMetadata.getOptions().isDebugModeEnabled());
+        buildMetadata.getOptionsMetadata().getMinApiLevel());
+    assertFalse(buildMetadata.getOptionsMetadata().isDebugModeEnabled());
     if (parameters.isDexRuntime()) {
-      R8ResourceOptimizationOptions resourceOptimizationOptions =
-          buildMetadata.getResourceOptimizationOptions();
+      R8ResourceOptimizationMetadata resourceOptimizationOptions =
+          buildMetadata.getResourceOptimizationMetadata();
       assertNotNull(resourceOptimizationOptions);
       assertTrue(resourceOptimizationOptions.isOptimizedShrinkingEnabled());
     } else {
-      assertNull(buildMetadata.getResourceOptimizationOptions());
+      assertNull(buildMetadata.getResourceOptimizationMetadata());
     }
-    R8StartupOptimizationOptions startupOptimizationOptions =
+    R8StartupOptimizationMetadata startupOptimizationOptions =
         buildMetadata.getStartupOptizationOptions();
     if (parameters.isDexRuntime()) {
       assertNotNull(startupOptimizationOptions);