Delete non-interning, non-singleton @AutoCodec in third_party/bazel/src/main/java/com/google/devtools/build/lib/analysis

PiperOrigin-RevId: 402277039
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AliasProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/AliasProvider.java
index ebe2e9e..476d57e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AliasProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AliasProvider.java
@@ -19,16 +19,14 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** A provider that gives information about the aliases a rule was resolved through. */
-@AutoCodec
 @Immutable
 public final class AliasProvider implements TransitiveInfoProvider {
   // We don't expect long alias chains, so it's better to have a list instead of a nested set
   private final ImmutableList<Label> aliasChain;
 
-  public AliasProvider(ImmutableList<Label> aliasChain) {
+  private AliasProvider(ImmutableList<Label> aliasChain) {
     Preconditions.checkState(!aliasChain.isEmpty());
     this.aliasChain = aliasChain;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index 62bb02a..f7e51a5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -536,7 +536,6 @@
         ":server_directories",
         "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//src/main/java/com/google/devtools/build/lib/util:string",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//third_party:guava",
@@ -776,6 +775,7 @@
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
+        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:serialization-constant",
     ],
 )
 
@@ -787,7 +787,6 @@
         "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
     ],
 )
@@ -823,7 +822,6 @@
     deps = [
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/packages",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//src/main/java/net/starlark/java/syntax",
         "//third_party:auto_value",
     ],
@@ -849,7 +847,6 @@
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/packages",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//third_party:guava",
     ],
 )
@@ -1062,6 +1059,7 @@
         "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//src/main/java/com/google/devtools/build/lib/packages",
         "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
+        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:serialization-constant",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
         "//src/main/java/net/starlark/java/eval",
         "//src/main/java/net/starlark/java/syntax",
@@ -1098,7 +1096,6 @@
     srcs = ["TopLevelArtifactContext.java"],
     deps = [
         "//src/main/java/com/google/devtools/build/lib/concurrent",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//third_party:guava",
     ],
 )
@@ -1163,7 +1160,6 @@
         ":transitive_info_provider_map",
         "//src/main/java/com/google/devtools/build/lib/collect",
         "//src/main/java/com/google/devtools/build/lib/packages",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
@@ -1196,7 +1192,6 @@
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//src/main/java/com/google/devtools/build/lib/packages",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
     ],
 )
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index 808b94a..861206b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -49,6 +49,7 @@
 import com.google.devtools.build.lib.packages.Type;
 import com.google.devtools.build.lib.packages.Type.ConversionException;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
 import com.google.devtools.build.lib.util.FileTypeSet;
 import net.starlark.java.eval.StarlarkInt;
 
@@ -59,7 +60,7 @@
 
   private BaseRuleClasses() {}
 
-  @AutoCodec @AutoCodec.VisibleForSerialization
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   static final Attribute.ComputedDefault testonlyDefault =
       new Attribute.ComputedDefault() {
         @Override
@@ -73,7 +74,7 @@
         }
       };
 
-  @AutoCodec @AutoCodec.VisibleForSerialization
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   static final Attribute.ComputedDefault deprecationDefault =
       new Attribute.ComputedDefault() {
         @Override
@@ -87,7 +88,7 @@
         }
       };
 
-  @AutoCodec
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   public static final Attribute.ComputedDefault TIMEOUT_DEFAULT =
       new Attribute.ComputedDefault() {
         @Override
@@ -117,7 +118,7 @@
    * they only run on the target configuration and should not operate on action_listeners and
    * extra_actions themselves (to avoid cycles).
    */
-  @AutoCodec @VisibleForTesting
+  @SerializationConstant @AutoCodec.VisibleForSerialization @VisibleForTesting
   static final LabelListLateBoundDefault<?> ACTION_LISTENER =
       LabelListLateBoundDefault.fromTargetConfiguration(
           BuildConfiguration.class,
@@ -125,7 +126,7 @@
 
   public static final String DEFAULT_COVERAGE_SUPPORT_VALUE = "//tools/test:coverage_support";
 
-  @AutoCodec
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   static final Resolver<TestConfiguration, Label> COVERAGE_SUPPORT_CONFIGURATION_RESOLVER =
       (rule, attributes, configuration) -> configuration.getCoverageSupport();
 
@@ -141,7 +142,7 @@
   private static final String DEFAULT_COVERAGE_OUTPUT_GENERATOR_VALUE =
       "@bazel_tools//tools/test:lcov_merger";
 
-  @AutoCodec
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   static final Resolver<TestConfiguration, Label> COVERAGE_REPORT_GENERATOR_CONFIGURATION_RESOLVER =
       (rule, attributes, configuration) -> configuration.getCoverageReportGenerator();
 
@@ -156,7 +157,7 @@
         BuildConfiguration.class, null, COVERAGE_OUTPUT_GENERATOR_RESOLVER);
   }
 
-  @AutoCodec
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   static final Resolver<BuildConfiguration, Label> COVERAGE_OUTPUT_GENERATOR_RESOLVER =
       (rule, attributes, configuration) -> {
         if (configuration.isCodeCoverageEnabled()) {
@@ -168,7 +169,7 @@
 
   // TODO(b/65746853): provide a way to do this without passing the entire configuration
   /** Implementation for the :run_under attribute. */
-  @AutoCodec
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   public static final LabelLateBoundDefault<?> RUN_UNDER =
       LabelLateBoundDefault.fromTargetConfiguration(
           BuildConfiguration.class,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
index 4600dda..e3c3e19 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.actions.ArtifactRoot;
 import com.google.devtools.build.lib.actions.ArtifactRoot.RootType;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.StringCanonicalizer;
 import com.google.devtools.build.lib.vfs.Path;
 import java.util.Objects;
@@ -45,7 +44,6 @@
  *
  * <p>Do not put shortcuts to specific files here!
  */
-@AutoCodec
 @Immutable
 public final class BlazeDirectories {
   // Include directory name, relative to execRoot/blaze-out/configuration. Only one segment allowed.
@@ -69,7 +67,6 @@
   private final Path localOutputPath;
   private final String productName;
 
-  @AutoCodec.Instantiator
   public BlazeDirectories(
       ServerDirectories serverDirectories,
       Path workspace,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
index eedcc19..6dd5c1d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
@@ -19,13 +19,12 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
 
 /** A {@link TransitiveInfoProvider} that creates extra actions. */
 @Immutable
-@AutoCodec
 public final class ExtraActionArtifactsProvider implements TransitiveInfoProvider {
+  @SerializationConstant
   public static final ExtraActionArtifactsProvider EMPTY =
       new ExtraActionArtifactsProvider(
           NestedSetBuilder.emptySet(Order.STABLE_ORDER),
@@ -60,9 +59,7 @@
   private final NestedSet<Artifact.DerivedArtifact> transitiveExtraActionArtifacts;
 
   /** Use {@link #create} instead. */
-  @AutoCodec.Instantiator
-  @VisibleForSerialization
-  ExtraActionArtifactsProvider(
+  private ExtraActionArtifactsProvider(
       NestedSet<Artifact.DerivedArtifact> extraActionArtifacts,
       NestedSet<Artifact.DerivedArtifact> transitiveExtraActionArtifacts) {
     this.extraActionArtifacts = extraActionArtifacts;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java
index 9ed32c2..4ddf21a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.starlarkbuildapi.FileProviderApi;
 
 /**
@@ -29,7 +28,6 @@
  * <p>Every transitive info collection contains at least this provider.
  */
 @Immutable
-@AutoCodec
 public final class FileProvider implements TransitiveInfoProvider, FileProviderApi {
   public static final FileProvider EMPTY =
       new FileProvider(NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
index 42f5a3c..06ca662 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
@@ -21,13 +21,11 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.starlarkbuildapi.FilesToRunProviderApi;
 import javax.annotation.Nullable;
 
 /** Returns information about executables produced by a target and the files needed to run it. */
 @Immutable
-@AutoCodec
 public final class FilesToRunProvider
     implements TransitiveInfoProvider, FilesToRunProviderApi<Artifact> {
   /** The name of the field in Starlark used to access this class. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LabelAndLocation.java b/src/main/java/com/google/devtools/build/lib/analysis/LabelAndLocation.java
index d2602d2..df5fec7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LabelAndLocation.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LabelAndLocation.java
@@ -17,7 +17,6 @@
 import com.google.auto.value.AutoValue;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import net.starlark.java.syntax.Location;
 
 /**
@@ -26,16 +25,10 @@
  * since {@link Location} can be quite heavy on its own and each of these wrapper objects costs 24
  * bytes over an existing {@link Target}.
  */
-@AutoCodec
 @AutoValue
 public abstract class LabelAndLocation {
-  @AutoCodec.Instantiator
-  static LabelAndLocation create(Label label, Location location) {
-    return new AutoValue_LabelAndLocation(label, location);
-  }
-
   public static LabelAndLocation of(Target target) {
-    return create(target.getLabel(), target.getLocation());
+    return new AutoValue_LabelAndLocation(target.getLabel(), target.getLocation());
   }
 
   public abstract Label getLabel();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
index bcf6d0e..d6ced49 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.packages.License;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 
 /** A {@link ConfiguredTarget} that has licensed targets in its transitive closure. */
@@ -43,7 +42,6 @@
   boolean hasOutputLicenses();
 
   /** License association for a particular target. */
-  @AutoCodec
   final class TargetLicense {
     private final Label label;
     private final License license;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java
index 6a5a502..36320ed 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java
@@ -24,11 +24,9 @@
 import com.google.devtools.build.lib.packages.AttributeMap;
 import com.google.devtools.build.lib.packages.License;
 import com.google.devtools.build.lib.packages.Rule;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** A {@link ConfiguredTarget} that has licensed targets in its transitive closure. */
 @Immutable
-@AutoCodec
 public final class LicensesProviderImpl implements LicensesProvider {
   public static final LicensesProvider EMPTY =
       new LicensesProviderImpl(NestedSetBuilder.<TargetLicense>emptySet(Order.LINK_ORDER), null);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
index 3616659..ff1a8c3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
@@ -29,7 +29,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.BuiltinProvider;
 import com.google.devtools.build.lib.packages.StructImpl;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.starlarkbuildapi.OutputGroupInfoApi;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -59,7 +58,6 @@
  * not mentioned on the output.
  */
 @Immutable
-@AutoCodec
 public final class OutputGroupInfo extends StructImpl
     implements StarlarkIndexable, StarlarkIterable<String>, OutputGroupInfoApi {
   public static final String STARLARK_NAME = "output_groups";
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index 91adbfe..ec1889d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -35,7 +35,7 @@
 import com.google.devtools.build.lib.packages.BuildType;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
 import com.google.devtools.build.lib.starlarkbuildapi.RunfilesApi;
 import com.google.devtools.build.lib.starlarkbuildapi.SymlinkEntryApi;
 import com.google.devtools.build.lib.util.Fingerprint;
@@ -66,7 +66,6 @@
  * symlinks and root symlinks (outside of the source tree).
  */
 @Immutable
-@AutoCodec
 public final class Runfiles implements RunfilesApi {
 
   private static class DummyEmptyFilesSupplier implements EmptyFilesSupplier {
@@ -78,7 +77,7 @@
     }
   }
 
-  @AutoCodec @AutoCodec.VisibleForSerialization
+  @SerializationConstant @AutoCodec.VisibleForSerialization
   static final EmptyFilesSupplier DUMMY_EMPTY_FILES_SUPPLIER = new DummyEmptyFilesSupplier();
 
   /**
@@ -110,16 +109,13 @@
   // equals to the third one if they are not the same instance (which they almost never are)
   //
   // Goodnight, prince(ss)?, and sweet dreams.
-  @AutoCodec
-  @VisibleForSerialization
-  static final class SymlinkEntry implements SymlinkEntryApi {
+  private static final class SymlinkEntry implements SymlinkEntryApi {
 
     static final Depset.ElementType TYPE = Depset.ElementType.of(SymlinkEntry.class);
 
     private final PathFragment path;
     private final Artifact artifact;
 
-    @VisibleForSerialization
     SymlinkEntry(PathFragment path, Artifact artifact) {
       this.path = Preconditions.checkNotNull(path);
       this.artifact = Preconditions.checkNotNull(artifact);
@@ -235,9 +231,7 @@
    */
   private final boolean legacyExternalRunfiles;
 
-  @AutoCodec.Instantiator
-  @VisibleForSerialization
-  Runfiles(
+  private Runfiles(
       PathFragment suffix,
       NestedSet<Artifact> artifacts,
       NestedSet<SymlinkEntry> symlinks,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java
index 0a10859..57d4b94 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java
@@ -15,8 +15,6 @@
 
 import com.google.common.base.Function;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
 /**
  * Runfiles a target contributes to targets that depend on it.
@@ -26,13 +24,11 @@
  * implementations are free to request the data runfiles at any time)
  */
 @Immutable
-@AutoCodec
 public final class RunfilesProvider implements TransitiveInfoProvider {
   private final Runfiles defaultRunfiles;
   private final Runfiles dataRunfiles;
 
-  @VisibleForSerialization
-  RunfilesProvider(Runfiles defaultRunfiles, Runfiles dataRunfiles) {
+  private RunfilesProvider(Runfiles defaultRunfiles, Runfiles dataRunfiles) {
     this.defaultRunfiles = defaultRunfiles;
     this.dataRunfiles = dataRunfiles;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
index b5b5fa5..d0fe247 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
@@ -30,8 +30,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.TargetUtils;
 import com.google.devtools.build.lib.packages.Type;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -74,7 +72,6 @@
  * which will run an executable should depend on this Middleman Artifact.
  */
 @Immutable
-@AutoCodec
 public final class RunfilesSupport {
   private static final String RUNFILES_DIR_EXT = ".runfiles";
   private static final String INPUT_MANIFEST_EXT = ".runfiles_manifest";
@@ -152,9 +149,7 @@
         actionEnvironment);
   }
 
-  @AutoCodec.Instantiator
-  @VisibleForSerialization
-  RunfilesSupport(
+  private RunfilesSupport(
       Runfiles runfiles,
       Artifact runfilesInputManifest,
       Artifact runfilesManifest,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
index d2482f4..fb88b5e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
@@ -26,7 +26,6 @@
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.io.BufferedWriter;
@@ -49,7 +48,6 @@
  *
  * <p>This action carefully avoids building the manifest content in memory because it can be large.
  */
-@AutoCodec
 @Immutable // if all ManifestWriter implementations are immutable
 public final class SourceManifestAction extends AbstractFileWriteAction {
 
@@ -128,7 +126,6 @@
    * @param primaryOutput the file to which to write the manifest
    * @param runfiles runfiles
    */
-  @AutoCodec.Instantiator
   public SourceManifestAction(
       ManifestWriter manifestWriter,
       ActionOwner owner,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
index 4cf2572..e39b44d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
@@ -18,7 +18,7 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.BuiltinProvider;
 import com.google.devtools.build.lib.packages.NativeInfo;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
 import com.google.devtools.build.lib.starlarkbuildapi.TemplateVariableInfoApi;
 import java.util.Map;
 import net.starlark.java.eval.Dict;
@@ -28,9 +28,9 @@
 
 /** Provides access to make variables from the current fragments. */
 @Immutable
-@AutoCodec
 public final class TemplateVariableInfo extends NativeInfo implements TemplateVariableInfoApi {
   /** Provider singleton constant. */
+  @SerializationConstant
   public static final BuiltinProvider<TemplateVariableInfo> PROVIDER = new Provider();
 
   /** Provider for {@link TemplateVariableInfo} objects. */
@@ -50,7 +50,6 @@
 
   private final ImmutableMap<String, String> variables;
 
-  @AutoCodec.Instantiator
   public TemplateVariableInfo(ImmutableMap<String, String> variables, Location creationLocation) {
     super(creationLocation);
     this.variables = variables;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactContext.java b/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactContext.java
index a7f58c5..c069a17 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactContext.java
@@ -16,13 +16,11 @@
 
 import com.google.common.collect.ImmutableSortedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 import java.util.Set;
 
 /** Contains options which control the set of artifacts to build for top-level targets. */
 @Immutable
-@AutoCodec
 public final class TopLevelArtifactContext {
   private final boolean runTestsExclusively;
   private final boolean expandFilesets;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java
index 3ef7f4f..1f2de56 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java
@@ -18,8 +18,6 @@
 import com.google.devtools.build.lib.collect.ImmutableSharedKeyMap;
 import com.google.devtools.build.lib.packages.Info;
 import com.google.devtools.build.lib.packages.Provider;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import java.util.Map;
 import javax.annotation.Nullable;
 
@@ -27,13 +25,10 @@
  * Implementation of {@link TransitiveInfoProvider} that uses {@link ImmutableSharedKeyMap}. For
  * memory efficiency, inheritance is used instead of aggregation as an implementation detail.
  */
-@AutoCodec
 class TransitiveInfoProviderMapImpl extends ImmutableSharedKeyMap<Object, Object>
     implements TransitiveInfoProviderMap {
 
-  @VisibleForSerialization
-  @AutoCodec.Instantiator
-  TransitiveInfoProviderMapImpl(Object[] keys, Object[] values) {
+  private TransitiveInfoProviderMapImpl(Object[] keys, Object[] values) {
     super(keys, values);
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java
index a47093b..33f843d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java
@@ -17,11 +17,9 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** Visibility provider implementation. */
 @Immutable
-@AutoCodec
 public final class VisibilityProviderImpl implements VisibilityProvider {
   private final NestedSet<PackageGroupContents> visibility;