Deletes CODEC fields now that they are no longer needed.

PiperOrigin-RevId: 187397314
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupData.java b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupData.java
index 9059267..00aa657 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupData.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupData.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.actions.ActionLookupValue.ActionLookupKey;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -28,7 +27,6 @@
 public class ActionLookupData implements SkyKey {
   private static final Interner<ActionLookupData> INTERNER = BlazeInterners.newWeakInterner();
   public static final SkyFunctionName NAME = SkyFunctionName.create("ACTION_EXECUTION");
-  public static final ObjectCodec<ActionLookupData> CODEC = new ActionLookupData_AutoCodec();
 
   private final ActionLookupKey actionLookupKey;
   private final int actionIndex;
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java b/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java
index caa1859..77c67a81 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.AspectDescriptor;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import javax.annotation.Nullable;
 
@@ -36,8 +35,6 @@
 @AutoCodec
 @Immutable
 public abstract class ActionOwner {
-  public static final ObjectCodec<ActionOwner> CODEC = new ActionOwner_AutoCodec();
-
   /** An action owner for special cases. Usage is strongly discouraged. */
   public static final ActionOwner SYSTEM_ACTION_OWNER =
       ActionOwner.create(
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index 918c6b9..f0eca50 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -30,7 +30,6 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.shell.ShellUtils;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -118,8 +117,6 @@
         Comparable<Object>,
         CommandLineItem {
 
-  public static final ObjectCodec<Artifact> CODEC = new Artifact_AutoCodec();
-
   /** Compares artifact according to their exec paths. Sorts null values first. */
   @SuppressWarnings("ReferenceEquality")  // "a == b" is an optimization
   public static final Comparator<Artifact> EXEC_PATH_COMPARATOR =
@@ -448,10 +445,6 @@
   @VisibleForTesting
   @AutoCodec
   public static final class SpecialArtifact extends Artifact {
-
-    public static final ObjectCodec<SpecialArtifact> CODEC =
-        new Artifact_SpecialArtifact_AutoCodec();
-
     private final SpecialArtifactType type;
 
     @VisibleForSerialization
@@ -509,9 +502,6 @@
   @Immutable
   @AutoCodec
   public static final class TreeFileArtifact extends Artifact {
-    public static final ObjectCodec<TreeFileArtifact> CODEC =
-        new Artifact_TreeFileArtifact_AutoCodec();
-
     private final SpecialArtifact parentTreeArtifact;
     private final PathFragment parentRelativePath;
 
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java
index 0e32c86..a3abeb5 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java
@@ -17,7 +17,6 @@
 import com.google.common.base.Preconditions;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -57,9 +56,6 @@
 @Immutable
 @AutoCodec
 public final class ArtifactRoot implements Comparable<ArtifactRoot>, Serializable, SkylarkValue {
-
-  public static final ObjectCodec<ArtifactRoot> CODEC = new ArtifactRoot_AutoCodec();
-
   // This must always be consistent with Package.getSourceRoot; otherwise computing source roots
   // from exec paths does not work, which can break the action cache for input-discovering actions.
   public static ArtifactRoot computeSourceRoot(Root packageRoot, RepositoryName repository) {
diff --git a/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java b/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
index 558644b..114e7b0 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
 import com.google.devtools.build.lib.collect.CollectionUtils;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.util.Fingerprint;
@@ -29,9 +28,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class EmptyCommandLine extends CommandLine {
-    public static final ObjectCodec<EmptyCommandLine> CODEC =
-        new CommandLine_EmptyCommandLine_AutoCodec();
-
     @Override
     public Iterable<String> arguments() throws CommandLineExpansionException {
       return ImmutableList.of();
@@ -66,9 +62,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class SimpleCommandLine extends CommandLine {
-    public static final ObjectCodec<SimpleCommandLine> CODEC =
-        new CommandLine_SimpleCommandLine_AutoCodec();
-
     private Iterable<String> args;
 
     SimpleCommandLine(Iterable<String> args) {
@@ -90,9 +83,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class PrefixedCommandLine extends CommandLine {
-    public static final ObjectCodec<PrefixedCommandLine> CODEC =
-        new CommandLine_PrefixedCommandLine_AutoCodec();
-
     private ImmutableList<String> executableArgs;
     private CommandLine commandLine;
 
@@ -129,9 +119,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class SuffixedCommandLine extends CommandLine {
-    public static final ObjectCodec<SuffixedCommandLine> CODEC =
-        new CommandLine_SuffixedCommandLine_AutoCodec();
-
     private ImmutableList<String> executableArgs;
     private CommandLine commandLine;
 
diff --git a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
index 70a6599..15c5007 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.util.Fingerprint;
@@ -31,8 +30,6 @@
 @Immutable
 @AutoCodec
 public final class MiddlemanAction extends AbstractAction {
-  public static final ObjectCodec<MiddlemanAction> CODEC = new MiddlemanAction_AutoCodec();
-
   public static final String MIDDLEMAN_MNEMONIC = "Middleman";
   private final String description;
   private final MiddlemanType middlemanType;
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 7445761..02d7a2f 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
@@ -18,7 +18,6 @@
 import com.google.common.hash.HashCode;
 import com.google.devtools.build.lib.actions.ArtifactRoot;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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;
@@ -46,8 +45,6 @@
 @AutoCodec
 @Immutable
 public final class BlazeDirectories {
-  public static final ObjectCodec<BlazeDirectories> CODEC = new BlazeDirectories_AutoCodec();
-
   // Include directory name, relative to execRoot/blaze-out/configuration.
   public static final String RELATIVE_INCLUDE_DIR = StringCanonicalizer.intern("include");
   @VisibleForTesting static final String DEFAULT_EXEC_ROOT = "default-exec-root";
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 4c86c6a..1dd90cf 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,7 +19,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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
@@ -27,9 +26,6 @@
 @Immutable
 @AutoCodec
 public final class ExtraActionArtifactsProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<ExtraActionArtifactsProvider> CODEC =
-      new ExtraActionArtifactsProvider_AutoCodec();
-
   public static final ExtraActionArtifactsProvider EMPTY =
       new ExtraActionArtifactsProvider(
           NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
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 d1e28db..b4035c0 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
@@ -19,7 +19,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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -38,8 +37,6 @@
 )
 @AutoCodec
 public final class FileProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<FileProvider> CODEC = new FileProvider_AutoCodec();
-
   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 09c5c48..8a72fd0 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,7 +21,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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -33,8 +32,6 @@
 @SkylarkModule(name = "FilesToRunProvider", doc = "", category = SkylarkModuleCategory.PROVIDER)
 @AutoCodec
 public final class FilesToRunProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<FilesToRunProvider> CODEC = new FilesToRunProvider_AutoCodec();
-
   /** The name of the field in Skylark used to access this class. */
   public static final String SKYLARK_NAME = "files_to_run";
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java b/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java
index 56c22f1..61ea948 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 
@@ -36,9 +35,6 @@
 @Immutable
 @AutoCodec
 public final class LanguageDependentFragment implements TransitiveInfoProvider {
-  public static final ObjectCodec<LanguageDependentFragment> CODEC = new
-      LanguageDependentFragment_AutoCodec();
-
   /**
    * A language that can be supported by a multi-language configured target.
    *
@@ -47,9 +43,6 @@
    */
   @AutoCodec
   public static final class LibraryLanguage {
-    public static final ObjectCodec<LibraryLanguage> CODEC =
-        new LanguageDependentFragment_LibraryLanguage_AutoCodec();
-
     private final String displayName;
 
     @AutoCodec.Instantiator
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 57272bd..d8bb39c 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
@@ -19,7 +19,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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 
@@ -46,9 +45,6 @@
   /** License association for a particular target. */
   @AutoCodec
   final class TargetLicense {
-    public static final ObjectCodec<TargetLicense> CODEC =
-        new LicensesProvider_TargetLicense_AutoCodec();
-
     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 7229aec..bab0bea 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,16 +24,12 @@
 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.ObjectCodec;
 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 ObjectCodec<LicensesProviderImpl> CODEC =
-      new LicensesProviderImpl_AutoCodec();
-
   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/MiddlemanProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java
index 452c26b..dd07880 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/MiddlemanProvider.java
@@ -16,15 +16,12 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** A provider class that supplies an aggregating middleman to the targets that depend on it. */
 @Immutable
 @AutoCodec
 public final class MiddlemanProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<MiddlemanProvider> CODEC = new MiddlemanProvider_AutoCodec();
-
   private final NestedSet<Artifact> middlemanArtifact;
 
   @AutoCodec.Instantiator
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 9561c91..7990d37 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
@@ -31,7 +31,6 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
@@ -62,8 +61,6 @@
 @AutoCodec
 public final class OutputGroupInfo extends NativeInfo
     implements SkylarkIndexable, Iterable<String> {
-  public static ObjectCodec<OutputGroupInfo> CODEC = new OutputGroupInfo_AutoCodec();
-
   public static final String SKYLARK_NAME = "output_groups";
 
   public static NativeProvider<OutputGroupInfo> SKYLARK_CONSTRUCTOR = new Constructor();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformConfiguration.java
index fb051b5..fefc871 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformConfiguration.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -34,9 +33,6 @@
   category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
 )
 public class PlatformConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<PlatformConfiguration> CODEC =
-      new PlatformConfiguration_AutoCodec();
-
   private final Label hostPlatform;
   private final ImmutableList<Label> extraExecutionPlatforms;
   private final ImmutableList<Label> targetPlatforms;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
index 51bfd8a..688e418 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelListConverter;
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -29,8 +28,6 @@
 /** Command-line options for platform-related configuration. */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class PlatformOptions extends FragmentOptions {
-  public static final ObjectCodec<PlatformOptions> CODEC = new PlatformOptions_AutoCodec();
-
   @Option(
     name = "host_platform",
     oldName = "experimental_host_platform",
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 a1f02fa..78cb3c0 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
@@ -31,7 +31,6 @@
 import com.google.devtools.build.lib.events.EventKind;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.BuildType;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -80,9 +79,8 @@
         }
       };
 
-  @VisibleForSerialization
-  static class DummyEmptyFilesSupplier implements EmptyFilesSupplier {
-    @AutoCodec public static final DummyEmptyFilesSupplier INSTANCE = new DummyEmptyFilesSupplier();
+  private static class DummyEmptyFilesSupplier implements EmptyFilesSupplier {
+    private DummyEmptyFilesSupplier() {}
 
     @Override
     public Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths) {
@@ -90,8 +88,8 @@
     }
   }
 
-  private static final EmptyFilesSupplier DUMMY_EMPTY_FILES_SUPPLIER =
-      DummyEmptyFilesSupplier.INSTANCE;
+  @AutoCodec @AutoCodec.VisibleForSerialization
+  static final EmptyFilesSupplier DUMMY_EMPTY_FILES_SUPPLIER = new DummyEmptyFilesSupplier();
 
   private static final Function<Artifact, PathFragment> GET_ROOT_RELATIVE_PATH =
       new Function<Artifact, PathFragment>() {
@@ -141,8 +139,6 @@
   @AutoCodec
   @VisibleForSerialization
   static final class SymlinkEntry implements SkylarkValue {
-    public static final ObjectCodec<SymlinkEntry> CODEC = new Runfiles_SymlinkEntry_AutoCodec();
-
     private final PathFragment path;
     private final Artifact artifact;
 
@@ -272,9 +268,6 @@
    */
   @AutoCodec
   public static class PruningManifest {
-    public static final ObjectCodec<PruningManifest> CODEC =
-        new Runfiles_PruningManifest_AutoCodec();
-
     private final NestedSet<Artifact> candidateRunfiles;
     private final Artifact manifestFile;
 
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 07abf15..0a10859 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,7 +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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
@@ -29,8 +28,6 @@
 @Immutable
 @AutoCodec
 public final class RunfilesProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<RunfilesProvider> CODEC = new RunfilesProvider_AutoCodec();
-
   private final Runfiles defaultRunfiles;
   private final Runfiles 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 a077039..02a9119e 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
@@ -27,7 +27,6 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.TargetUtils;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.syntax.Type;
@@ -73,8 +72,6 @@
 @Immutable
 @AutoCodec
 public final class RunfilesSupport {
-  public static final ObjectCodec<RunfilesSupport> CODEC = new RunfilesSupport_AutoCodec();
-
   private static final String RUNFILES_DIR_EXT = ".runfiles";
 
   private final Runfiles runfiles;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java
index 9b25f7a..5f3d650 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java
@@ -19,7 +19,6 @@
 import com.google.common.hash.HashCode;
 import com.google.common.hash.Hashing;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.Path;
 import java.util.Objects;
@@ -32,8 +31,6 @@
 @AutoCodec
 @Immutable
 public final class ServerDirectories {
-  public static final ObjectCodec<ServerDirectories> CODEC = new ServerDirectories_AutoCodec();
-
   /** Top-level user output directory; used, e.g., as default location for caches. */
   private final Path outputUserRoot;
   /** Where Blaze gets unpacked. */
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 99db61d..8a32b7b 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,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -28,9 +27,6 @@
 @Immutable
 @AutoCodec
 public final class TemplateVariableInfo extends NativeInfo {
-  public static final ObjectCodec<TemplateVariableInfo> CODEC =
-      new TemplateVariableInfo_AutoCodec();
-
   public static final String SKYLARK_NAME = "TemplateVariableInfo";
 
   public static final NativeProvider<TemplateVariableInfo> PROVIDER =
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 b67636c..f6192f0 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,7 +16,6 @@
 
 import com.google.common.collect.ImmutableSortedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 import java.util.Set;
@@ -25,9 +24,6 @@
 @Immutable
 @AutoCodec
 public final class TopLevelArtifactContext {
-  public static final ObjectCodec<TopLevelArtifactContext> CODEC =
-      new TopLevelArtifactContext_AutoCodec();
-
   private final boolean runTestsExclusively;
   private final ImmutableSortedSet<String> outputGroups;
 
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 270c92b..a47093b 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,15 +17,12 @@
 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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** Visibility provider implementation. */
 @Immutable
 @AutoCodec
 public final class VisibilityProviderImpl implements VisibilityProvider {
-  public static ObjectCodec<VisibilityProviderImpl> CODEC = new VisibilityProviderImpl_AutoCodec();
-
   private final NestedSet<PackageGroupContents> visibility;
 
   public VisibilityProviderImpl(NestedSet<PackageGroupContents> visibility) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
index 635c1b5..e5f0141 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.actions.ArtifactRoot;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.io.Serializable;
@@ -58,8 +57,6 @@
    */
   @AutoCodec
   final class BuildInfoKey {
-    public static final ObjectCodec<BuildInfoKey> CODEC =
-        new BuildInfoFactory_BuildInfoKey_AutoCodec();
     private final String name;
 
     public BuildInfoKey(String name) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 64ba290..f9f3c40 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -119,8 +119,6 @@
           + "depend on it and not targets that it depends on."
 )
 public class BuildConfiguration implements BuildConfigurationInterface {
-  public static final ObjectCodec<BuildConfiguration> CODEC = new BuildConfigurationCodec();
-
   /**
    * Sorts fragments by class name. This produces a stable order which, e.g., facilitates consistent
    * output from buildMnemonic.
@@ -415,8 +413,6 @@
    */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static class Options extends FragmentOptions implements Cloneable {
-    public static final ObjectCodec<Options> CODEC = new BuildConfiguration_Options_AutoCodec();
-
     @Option(
       name = "experimental_separate_genfiles_directory",
       defaultValue = "true",
@@ -2112,19 +2108,19 @@
         BuildConfiguration obj,
         CodedOutputStream codedOut)
         throws SerializationException, IOException {
-      BlazeDirectories.CODEC.serialize(context, obj.directories, codedOut);
+      context.serialize(obj.directories, codedOut);
       codedOut.writeInt32NoTag(obj.fragments.size());
       for (Fragment fragment : obj.fragments.values()) {
         context.serialize(fragment, codedOut);
       }
-      BuildOptions.CODEC.serialize(context, obj.buildOptions, codedOut);
+      context.serialize(obj.buildOptions, codedOut);
       StringCodecs.asciiOptimized().serialize(context, obj.repositoryName, codedOut);
     }
 
     @Override
     public BuildConfiguration deserialize(DeserializationContext context, CodedInputStream codedIn)
         throws SerializationException, IOException {
-      BlazeDirectories blazeDirectories = BlazeDirectories.CODEC.deserialize(context, codedIn);
+      BlazeDirectories blazeDirectories = context.deserialize(codedIn);
       int length = codedIn.readInt32();
       ImmutableSortedMap.Builder<Class<? extends Fragment>, Fragment> builder =
           new ImmutableSortedMap.Builder<>(lexicalFragmentSorter);
@@ -2132,7 +2128,7 @@
         Fragment fragment = context.deserialize(codedIn);
         builder.put(fragment.getClass(), fragment);
       }
-      BuildOptions options = BuildOptions.CODEC.deserialize(context, codedIn);
+      BuildOptions options = context.deserialize(codedIn);
       String repositoryName = StringCodecs.asciiOptimized().deserialize(context, codedIn);
       return new BuildConfiguration(blazeDirectories, builder.build(), options, repositoryName);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
index df99dc6..7383fdf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
@@ -55,8 +55,6 @@
  * Stores the command-line options from a set of configuration fragments.
  */
 public final class BuildOptions implements Cloneable, Serializable {
-  public static final ObjectCodec<BuildOptions> CODEC = new BuildOptionsCodec();
-
   private static final Comparator<Class<? extends FragmentOptions>>
       lexicalFragmentOptionsComparator = Comparator.comparing(Class::getName);
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
index 832f39f..a9b23bc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Map;
 import java.util.Set;
@@ -34,9 +33,6 @@
 @Immutable
 @AutoCodec
 public final class ConfigMatchingProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<ConfigMatchingProvider> CODEC =
-      new ConfigMatchingProvider_AutoCodec();
-
   private final Label label;
   private final ImmutableMultimap<String, String> settingsMap;
   private final Map<Label, String> flagSettingsMap;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java
index 078d8cc..217389d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java
@@ -17,7 +17,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.RegexFilter;
 import com.google.devtools.build.lib.util.RegexFilter.RegexFilterConverter;
@@ -34,8 +33,6 @@
  */
 @AutoCodec
 public class PerLabelOptions implements Serializable {
-  public static final ObjectCodec<PerLabelOptions> CODEC = new PerLabelOptions_AutoCodec();
-
   /** The filter used to match labels */
   private final RegexFilter regexFilter;
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
index a09a1ce..51f1d84 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.shell.ShellUtils;
 import com.google.devtools.build.lib.shell.ShellUtils.TokenizationException;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Converter;
 import com.google.devtools.common.options.OptionsParsingException;
@@ -58,9 +57,6 @@
 
   @AutoCodec
   static final class RunUnderLabel implements RunUnder {
-    public static final ObjectCodec<RunUnderLabel> CODEC =
-        new RunUnderConverter_RunUnderLabel_AutoCodec();
-
     private final String input;
     private final Label runUnderLabel;
     private final ImmutableList<String> runUnderList;
@@ -119,9 +115,6 @@
 
   @AutoCodec
   static final class RunUnderCommand implements RunUnder {
-    public static final ObjectCodec<RunUnderCommand> CODEC =
-        new RunUnderConverter_RunUnderCommand_AutoCodec();
-
     private final String input;
     private final String runUnderCommand;
     private final ImmutableList<String> runUnderList;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
index c2661ad..16fa28a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -39,9 +38,6 @@
 @Immutable
 @AutoCodec
 public class ConstraintSettingInfo extends NativeInfo {
-  public static final ObjectCodec<ConstraintSettingInfo> CODEC =
-      new ConstraintSettingInfo_AutoCodec();
-
   /** Name used in Skylark for accessing this provider. */
   public static final String SKYLARK_NAME = "ConstraintSettingInfo";
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
index 3a00932..febe3e7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -39,8 +38,6 @@
 @Immutable
 @AutoCodec
 public class ConstraintValueInfo extends NativeInfo {
-  public static final ObjectCodec<ConstraintValueInfo> CODEC = new ConstraintValueInfo_AutoCodec();
-
   /** Name used in Skylark for accessing this provider. */
   public static final String SKYLARK_NAME = "ConstraintValueInfo";
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java
index 8d0b4d7..b72b889 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/DeclaredToolchainInfo.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -30,9 +29,6 @@
 @AutoValue
 @AutoCodec
 public abstract class DeclaredToolchainInfo implements TransitiveInfoProvider {
-  public static final ObjectCodec<DeclaredToolchainInfo> CODEC =
-      new DeclaredToolchainInfo_AutoCodec();
-
   /**
    * The type of the toolchain being declared. This will be a label of a toolchain_type() target.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
index 90c8217..c70690b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
@@ -29,7 +29,6 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -54,8 +53,6 @@
 @Immutable
 @AutoCodec
 public class PlatformInfo extends NativeInfo {
-  public static final ObjectCodec<PlatformInfo> CODEC = new PlatformInfo_AutoCodec();
-
   /** Name used in Skylark for accessing this provider. */
   public static final String SKYLARK_NAME = "PlatformInfo";
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java
index ab8f51e..46cbc7f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java
@@ -17,16 +17,12 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.Pair;
 
 /** An implementation class for the InstrumentedFilesProvider interface. */
 @AutoCodec
 public final class InstrumentedFilesProviderImpl implements InstrumentedFilesProvider {
-  public static ObjectCodec<InstrumentedFilesProviderImpl> CODEC =
-      new InstrumentedFilesProviderImpl_AutoCodec();
-
   public static final InstrumentedFilesProvider EMPTY =
       new InstrumentedFilesProviderImpl(
           NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
index e210a1e..1aa0706 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
@@ -27,7 +27,6 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.RegexFilter;
 import com.google.devtools.common.options.Option;
@@ -41,14 +40,9 @@
 /** Test-related options. */
 @AutoCodec
 public class TestConfiguration extends Fragment {
-  public static final ObjectCodec<TestConfiguration> CODEC = new TestConfiguration_AutoCodec();
-
   /** Command-line options. */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static class TestOptions extends FragmentOptions {
-    public static final ObjectCodec<TestOptions> CODEC =
-        new TestConfiguration_TestOptions_AutoCodec();
-
     @Option(
       name = "test_filter",
       allowMultiple = false,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
index a29c105..8284930 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.util.OptionsUtils.PathFragmentConverter;
@@ -39,13 +38,9 @@
 @AutoCodec
 @Immutable
 public class BazelConfiguration extends Fragment {
-  public static final ObjectCodec<BazelConfiguration> CODEC = new BazelConfiguration_AutoCodec();
-
   /** Command-line options. */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static class Options extends FragmentOptions {
-    public static final ObjectCodec<Options> CODEC = new BazelConfiguration_Options_AutoCodec();
-
     @Option(
       name = "experimental_strict_action_env",
       defaultValue = "false",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
index 9204125..23ea2a3 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
@@ -26,15 +26,11 @@
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
 import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
 import com.google.devtools.build.lib.rules.cpp.NoProcessing;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** C++ compilation semantics. */
 public class BazelCppSemantics implements AspectLegalCppSemantics {
-  public static final BazelCppSemantics INSTANCE = new BazelCppSemantics();
-
-  public static final ObjectCodec<BazelCppSemantics> CODEC =
-      SingletonCodec.of(INSTANCE, "BazelCppSemantics");
+  @AutoCodec public static final BazelCppSemantics INSTANCE = new BazelCppSemantics();
 
   private final IncludeProcessing includeProcessing;
 
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index 21f5ae5..b66a6ce 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -62,8 +62,7 @@
 import com.google.devtools.build.lib.rules.java.JavaTargetAttributes;
 import com.google.devtools.build.lib.rules.java.JavaUtil;
 import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.util.ShellEscaper;
@@ -80,10 +79,7 @@
  */
 public class BazelJavaSemantics implements JavaSemantics {
 
-  public static final BazelJavaSemantics INSTANCE = new BazelJavaSemantics();
-
-  public static final ObjectCodec<BazelJavaSemantics> CODEC =
-      SingletonCodec.of(INSTANCE, "BazelJavaSemantics");
+  @AutoCodec public static final BazelJavaSemantics INSTANCE = new BazelJavaSemantics();
 
   private static final Template STUB_SCRIPT =
       Template.forResource(BazelJavaSemantics.class, "java_stub_template.txt");
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java
index a6ff6b0..bba2bd9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java
@@ -25,7 +25,6 @@
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -39,9 +38,6 @@
 @AutoCodec
 @Immutable
 public class BazelPythonConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<BazelPythonConfiguration> CODEC =
-      new BazelPythonConfiguration_AutoCodec();
-
   /**
   * A path converter for python3 path
   */
@@ -63,9 +59,6 @@
   /** Bazel-specific Python configuration options. */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static final class Options extends FragmentOptions {
-    public static final ObjectCodec<Options> CODEC =
-        new BazelPythonConfiguration_Options_AutoCodec();
-
     @Option(
       name = "python2_path",
       defaultValue = "python",
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index 5adb947..f271ea6 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -51,6 +52,7 @@
   category = SkylarkModuleCategory.BUILTIN,
   doc = "A BUILD target identifier."
 )
+@AutoCodec
 @Immutable
 @ThreadSafe
 public final class Label
@@ -81,8 +83,6 @@
   public static final SkyFunctionName TRANSITIVE_TRAVERSAL =
       SkyFunctionName.create("TRANSITIVE_TRAVERSAL");
 
-  public static final LabelCodec CODEC = LabelCodec.INSTANCE;
-
   private static final Interner<Label> LABEL_INTERNER = BlazeInterners.newWeakInterner();
 
   /**
@@ -185,10 +185,11 @@
    * Similar factory to above, but does not perform target name validation.
    *
    * <p>Only call this method if you know what you're doing; in particular, don't call it on
-   * arbitrary {@code targetName} inputs
+   * arbitrary {@code name} inputs
    */
-  public static Label createUnvalidated(PackageIdentifier packageId, String targetName) {
-    return LABEL_INTERNER.intern(new Label(packageId, targetName));
+  @AutoCodec.Instantiator
+  public static Label createUnvalidated(PackageIdentifier packageIdentifier, String name) {
+    return LABEL_INTERNER.intern(new Label(packageIdentifier, name));
   }
 
   /**
@@ -290,7 +291,7 @@
     return new LabelSerializationProxy(getUnambiguousCanonicalForm());
   }
 
-  private void readObject(ObjectInputStream stream) throws InvalidObjectException {
+  private void readObject(ObjectInputStream unusedStream) throws InvalidObjectException {
     throw new InvalidObjectException("Serialization is allowed only by proxy");
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java
deleted file mode 100644
index 4153d5e..0000000
--- a/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.cmdline;
-
-import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
-import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs;
-import com.google.protobuf.CodedInputStream;
-import com.google.protobuf.CodedOutputStream;
-import java.io.IOException;
-
-/** Custom serialization logic for {@link Label}s. */
-public class LabelCodec implements ObjectCodec<Label> {
-  public static final LabelCodec INSTANCE = new LabelCodec();
-
-  // TODO(michajlo): Share single instance of package id codec among all the codecs.
-  private final PackageIdentifierCodec packageIdCodec = new PackageIdentifierCodec();
-  private final ObjectCodec<String> stringCodec = StringCodecs.asciiOptimized();
-
-  @Override
-  public Class<Label> getEncodedClass() {
-    return Label.class;
-  }
-
-  @Override
-  public void serialize(SerializationContext context, Label label, CodedOutputStream codedOut)
-      throws IOException, SerializationException {
-    packageIdCodec.serialize(context, label.getPackageIdentifier(), codedOut);
-    stringCodec.serialize(context, label.getName(), codedOut);
-  }
-
-  @Override
-  public Label deserialize(DeserializationContext context, CodedInputStream codedIn)
-      throws SerializationException, IOException {
-    PackageIdentifier packageId = packageIdCodec.deserialize(context, codedIn);
-    String name = stringCodec.deserialize(context, codedIn);
-    return Label.createUnvalidated(packageId, name);
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index fdf574f..d8bf3bf 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -18,7 +18,7 @@
 import com.google.common.collect.ComparisonChain;
 import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -33,12 +33,10 @@
  * the workspace name "". Other repositories can be named in the WORKSPACE file. These workspaces
  * are prefixed by {@literal @}.
  */
+@AutoCodec
 @Immutable
 public final class PackageIdentifier
     implements Comparable<PackageIdentifier>, Serializable, SkylarkValue {
-
-  public static final ObjectCodec<PackageIdentifier> CODEC = new PackageIdentifierCodec();
-
   private static final Interner<PackageIdentifier> INTERNER = BlazeInterners.newWeakInterner();
 
   public static PackageIdentifier create(String repository, PathFragment pkgName)
@@ -46,6 +44,7 @@
     return create(RepositoryName.create(repository), pkgName);
   }
 
+  @AutoCodec.Instantiator
   public static PackageIdentifier create(RepositoryName repository, PathFragment pkgName) {
     return INTERNER.intern(new PackageIdentifier(repository, pkgName));
   }
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
deleted file mode 100644
index 1dcb78f..0000000
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2017 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.cmdline;
-
-import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
-import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.protobuf.CodedInputStream;
-import com.google.protobuf.CodedOutputStream;
-import java.io.IOException;
-
-/** Custom serialization logic for {@link PackageIdentifier}s. */
-public class PackageIdentifierCodec implements ObjectCodec<PackageIdentifier> {
-
-  private final RepositoryNameCodec repoNameCodec = new RepositoryNameCodec();
-
-  @Override
-  public Class<PackageIdentifier> getEncodedClass() {
-    return PackageIdentifier.class;
-  }
-
-  @Override
-  public void serialize(
-      SerializationContext context, PackageIdentifier pkgId, CodedOutputStream codedOut)
-      throws IOException, SerializationException {
-    repoNameCodec.serialize(context, pkgId.getRepository(), codedOut);
-    PathFragment.CODEC.serialize(context, pkgId.getPackageFragment(), codedOut);
-  }
-
-  @Override
-  public PackageIdentifier deserialize(DeserializationContext context, CodedInputStream codedIn)
-      throws IOException, SerializationException {
-    RepositoryName repoName = repoNameCodec.deserialize(context, codedIn);
-    PathFragment pathFragment = PathFragment.CODEC.deserialize(context, codedIn);
-    return PackageIdentifier.create(repoName, pathFragment);
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDescriptor.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDescriptor.java
index 3d4058d..0c2a9df 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDescriptor.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDescriptor.java
@@ -16,7 +16,6 @@
 
 import com.google.common.collect.ImmutableMultimap;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.protobuf.TextFormat;
 import java.util.Map.Entry;
@@ -30,8 +29,6 @@
 @Immutable
 @AutoCodec
 public final class AspectDescriptor {
-  public static final ObjectCodec<AspectDescriptor> CODEC = new AspectDescriptor_AutoCodec();
-
   private final AspectClass aspectClass;
   private final AspectParameters aspectParameters;
 
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectParameters.java b/src/main/java/com/google/devtools/build/lib/packages/AspectParameters.java
index fe4dcd1..8a6e872 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectParameters.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectParameters.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 
@@ -28,8 +27,6 @@
  */
 @AutoCodec
 public final class AspectParameters {
-  public static final ObjectCodec<AspectParameters> CODEC = new AspectParameters_AutoCodec();
-
   private final ImmutableMultimap<String, String> attributes;
 
   private AspectParameters(Multimap<String, String> attributes) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/License.java b/src/main/java/com/google/devtools/build/lib/packages/License.java
index de63c5e..3a35baa 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/License.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/License.java
@@ -27,7 +27,6 @@
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.events.Location;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import java.util.Collection;
@@ -41,8 +40,6 @@
 @ThreadSafe
 @AutoCodec
 public final class License {
-  public static final ObjectCodec<License> CODEC = new License_AutoCodec();
-
   private final ImmutableSet<LicenseType> licenseTypes;
   private final ImmutableSet<Label> exceptions;
 
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java
index 7a8b121..9db519e 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Package.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java
@@ -71,8 +71,6 @@
  */
 @SuppressWarnings("JavaLangClash")
 public class Package {
-  public static final ObjectCodec<Package> CODEC = new PackageCodec();
-
   /**
    * Common superclass for all name-conflict exceptions.
    */
@@ -1581,7 +1579,8 @@
   }
 
   /** Package codec implementation. */
-  private static final class PackageCodec implements ObjectCodec<Package> {
+  @VisibleForTesting
+  static final class PackageCodec implements ObjectCodec<Package> {
     @Override
     public Class<Package> getEncodedClass() {
       return Package.class;
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java
index f01efeb..ec71a36 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.PathFragment;
@@ -165,9 +164,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class SinglePackage extends PackageSpecification {
-    public static final ObjectCodec<SinglePackage> CODEC =
-        new PackageSpecification_SinglePackage_AutoCodec();
-
     private PackageIdentifier singlePackageName;
 
     @VisibleForSerialization
@@ -211,9 +207,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class AllPackagesBeneath extends PackageSpecification {
-    public static final ObjectCodec<AllPackagesBeneath> CODEC =
-        new PackageSpecification_AllPackagesBeneath_AutoCodec();
-
     private PackageIdentifier prefix;
 
     @VisibleForSerialization
@@ -262,9 +255,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class NegativePackageSpecification extends PackageSpecification {
-    public static final ObjectCodec<NegativePackageSpecification> CODEC =
-        new PackageSpecification_NegativePackageSpecification_AutoCodec();
-
     private final PackageSpecification delegate;
 
     NegativePackageSpecification(PackageSpecification delegate) {
@@ -309,9 +299,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class AllPackages extends PackageSpecification {
-    public static final ObjectCodec<AllPackages> CODEC =
-        new PackageSpecification_AllPackages_AutoCodec();
-
     private static final PackageSpecification EVERYTHING = new AllPackages();
 
     @Override
@@ -354,9 +341,6 @@
   @Immutable
   @AutoCodec
   public static final class PackageGroupContents {
-    public static final ObjectCodec<PackageGroupContents> CODEC =
-        new PackageSpecification_PackageGroupContents_AutoCodec();
-
     private final ImmutableList<PackageSpecification> packageSpecifications;
 
     @VisibleForSerialization
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java
index 2ba805c..810280b 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java
@@ -16,7 +16,6 @@
 
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Objects;
 
@@ -24,8 +23,6 @@
 @AutoCodec
 @Immutable
 public final class SkylarkAspectClass implements AspectClass {
-  public static final ObjectCodec<SkylarkAspectClass> CODEC = new SkylarkAspectClass_AutoCodec();
-
   private final Label extensionLabel;
   private final String exportedName;
 
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java b/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java
index d3aa9db..1af54a0 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.packages.TargetUtils;
 import com.google.devtools.build.lib.packages.TestSize;
 import com.google.devtools.build.lib.packages.TestTimeout;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.HashSet;
 import java.util.List;
@@ -39,8 +38,6 @@
  */
 @AutoCodec
 public final class TestFilter implements com.google.common.base.Predicate<Target> {
-  public static final ObjectCodec<TestFilter> CODEC = new TestFilter_AutoCodec();
-
   private static final Predicate<Target> ALWAYS_TRUE = (t) -> true;
 
   /** Convert the options into a test filter. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
index ceaf10c..e5a0ab7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -39,7 +39,6 @@
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
 import com.google.devtools.build.lib.rules.cpp.CppOptions.DynamicModeConverter;
 import com.google.devtools.build.lib.rules.cpp.CppOptions.LibcTopLabelConverter;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
@@ -61,9 +60,6 @@
 )
 @Immutable
 public class AndroidConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<AndroidConfiguration> CODEC =
-      new AndroidConfiguration_AutoCodec();
-
   /**
    * Converter for {@link
    * com.google.devtools.build.lib.rules.android.AndroidConfiguration.ConfigurationDistinguisher}
@@ -267,8 +263,6 @@
   /** Android configuration options. */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static class Options extends FragmentOptions {
-    public static final ObjectCodec<Options> CODEC = new AndroidConfiguration_Options_AutoCodec();
-
     @Option(
       name = "Android configuration distinguisher",
       defaultValue = "MAIN",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestConfiguration.java
index 69e96e5..6cb3ea1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestConfiguration.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy;
 import com.google.devtools.common.options.Option;
@@ -35,15 +34,9 @@
 @AutoCodec
 @Immutable
 public class AndroidLocalTestConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<AndroidLocalTestConfiguration> CODEC =
-      new AndroidLocalTestConfiguration_AutoCodec();
-
   /** android_local_test specific options */
   @AutoCodec(strategy = Strategy.PUBLIC_FIELDS)
   public static final class Options extends FragmentOptions {
-    public static final ObjectCodec<Options> CODEC =
-        new AndroidLocalTestConfiguration_Options_AutoCodec();
-
     @Option(
       name = "experimental_android_local_test_binary_resources",
       defaultValue = "false",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java
index 419c604..cf25d97 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java
@@ -35,7 +35,6 @@
 import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.packages.RuleErrorConsumer;
 import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.common.options.EnumConverter;
@@ -62,9 +61,6 @@
   public static final String RESOURCE_CONFIGURATION_FILTERS_NAME = "resource_configuration_filters";
   public static final String DENSITIES_NAME = "densities";
 
-  public static final ObjectCodec<ResourceFilterFactory> CODEC =
-      new ResourceFilterFactory_AutoCodec();
-
   /**
    * Locales used for pseudolocation.
    *
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
index bd7a0b7..09d8bfb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
@@ -25,7 +25,6 @@
 import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
 import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
 import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.EnumCodec;
 import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
 import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
@@ -486,8 +485,6 @@
         super(AppleBitcodeMode.class, "apple bitcode mode");
       }
     }
-
-    static final EnumCodec<AppleBitcodeMode> CODEC = new EnumCodec<>(AppleBitcodeMode.class);
   }
 
   @Override
@@ -512,12 +509,12 @@
 
   void serialize(SerializationContext context, CodedOutputStream out)
       throws IOException, SerializationException {
-    CODEC.serialize(context, this, out);
+    context.serialize(this, out);
   }
 
   static AppleCommandLineOptions deserialize(DeserializationContext context, CodedInputStream in)
       throws IOException, SerializationException {
-    return CODEC.deserialize(context, in);
+    return context.deserialize(in);
   }
 
   /** Converter for the Apple configuration distinguisher. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
index eaccc1e..55b9b01 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
@@ -31,8 +31,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions.AppleBitcodeMode;
 import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
-import com.google.devtools.build.lib.skyframe.serialization.EnumCodec;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -50,8 +48,6 @@
 )
 @Immutable
 public class AppleConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<AppleConfiguration> CODEC = new AppleConfiguration_AutoCodec();
-
   /**
    * Environment variable name for the xcode version. The value of this environment variable should
    * be set to the version (for example, "7.2") of xcode to use when invoking part of the apple
@@ -568,8 +564,5 @@
     public String getFileSystemName() {
       return fileSystemName;
     }
-
-    static final EnumCodec<ConfigurationDistinguisher> CODEC =
-        new EnumCodec<>(ConfigurationDistinguisher.class);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java b/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
index 0a446da..cc8fb96 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.packages.NativeProvider;
 import com.google.devtools.build.lib.packages.Provider;
 import com.google.devtools.build.lib.packages.SkylarkInfo;
-import com.google.devtools.build.lib.skyframe.serialization.EnumCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
@@ -315,7 +314,5 @@
     public void repr(SkylarkPrinter printer) {
       printer.append(toString());
     }
-
-    static final EnumCodec<PlatformType> CODEC = new EnumCodec<>(PlatformType.class);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java
index 5058387..12bf90e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.rules.apple.swift;
 
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -25,9 +24,6 @@
 /** Command-line options for building with Swift tools. */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class SwiftCommandLineOptions extends FragmentOptions {
-  public static final ObjectCodec<SwiftCommandLineOptions> CODEC =
-      new SwiftCommandLineOptions_AutoCodec();
-
   @Option(
     name = "swiftcopt",
     allowMultiple = true,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftConfiguration.java
index 06976f3..5794bcd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftConfiguration.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -41,8 +40,6 @@
 )
 @Immutable
 public class SwiftConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<SwiftConfiguration> CODEC = new SwiftConfiguration_AutoCodec();
-
   private final boolean enableWholeModuleOptimization;
   private final ImmutableList<String> copts;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java
index 8ff00a4..0103056 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java
@@ -25,7 +25,6 @@
 import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Converter;
 import com.google.devtools.common.options.Option;
@@ -43,9 +42,6 @@
  */
 @AutoCodec
 public final class ConfigFeatureFlagConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<ConfigFeatureFlagConfiguration> CODEC =
-      new ConfigFeatureFlagConfiguration_AutoCodec();
-
   /** A converter used by the flag options which always returns an empty map, ignoring input. */
   public static final class EmptyImmutableSortedMapConverter
       implements Converter<ImmutableSortedMap<Label, String>> {
@@ -63,9 +59,6 @@
   /** The options fragment which defines {@link ConfigFeatureFlagConfiguration}. */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static final class Options extends FragmentOptions {
-    public static final ObjectCodec<Options> CODEC =
-        new ConfigFeatureFlagConfiguration_Options_AutoCodec();
-
     /** The mapping from config_feature_flag rules to their values. */
     @Option(
       name = "config_feature_flag values (private)",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index d03fbec..ac9abc2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -51,7 +51,6 @@
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
 import com.google.devtools.build.lib.rules.cpp.FdoSupport.FdoMode;
 import com.google.devtools.build.lib.shell.ShellUtils;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.syntax.Type;
@@ -404,8 +403,6 @@
   /** A filter that removes copts from a c++ compile action according to a nocopts regex. */
   @AutoCodec
   static class CoptsFilter {
-    public static final ObjectCodec<CoptsFilter> CODEC = new CcCommon_CoptsFilter_AutoCodec();
-
     private final Pattern noCoptsPattern;
     private final boolean allPasses;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
index aa60027..c51a781 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
@@ -30,7 +30,6 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
 import com.google.devtools.build.lib.rules.cpp.CppHelper.PregreppedHeader;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.PathFragment;
@@ -48,8 +47,6 @@
 @Immutable
 @AutoCodec
 public final class CcCompilationInfo extends NativeInfo {
-  public static final ObjectCodec<CcCompilationInfo> CODEC = new CcCompilationInfo_AutoCodec();
-
   public static final NativeProvider<CcCompilationInfo> PROVIDER =
       new NativeProvider<CcCompilationInfo>(CcCompilationInfo.class, "CcCompilationInfo") {};
 
@@ -359,9 +356,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class CommandLineCcCompilationInfo {
-    public static final ObjectCodec<CommandLineCcCompilationInfo> CODEC =
-        new CcCompilationInfo_CommandLineCcCompilationInfo_AutoCodec();
-
     private final ImmutableList<PathFragment> includeDirs;
     private final ImmutableList<PathFragment> quoteIncludeDirs;
     private final ImmutableList<PathFragment> systemIncludeDirs;
@@ -765,9 +759,6 @@
   @Immutable
   @AutoCodec
   public static final class ModuleInfo {
-    public static final ObjectCodec<ModuleInfo> CODEC =
-        new CcCompilationInfo_ModuleInfo_AutoCodec();
-
     /**
      * The module built for this context. If null, then no module is being compiled for this
      * context.
@@ -901,9 +892,6 @@
   @Immutable
   @AutoCodec
   public static final class TransitiveModuleHeaders {
-    public static final ObjectCodec<TransitiveModuleHeaders> CODEC =
-        new CcCompilationInfo_TransitiveModuleHeaders_AutoCodec();
-
     /**
      * The module that we are calculating information for.
      */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcExecutionDynamicLibrariesProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcExecutionDynamicLibrariesProvider.java
index e8fd432..6ae1acf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcExecutionDynamicLibrariesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcExecutionDynamicLibrariesProvider.java
@@ -19,16 +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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /** A target that provides the execution-time dynamic libraries of a C++ rule. */
 @Immutable
 @AutoCodec
 public final class CcExecutionDynamicLibrariesProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<CcExecutionDynamicLibrariesProvider> CODEC =
-      new CcExecutionDynamicLibrariesProvider_AutoCodec();
-
   public static final CcExecutionDynamicLibrariesProvider EMPTY =
       new CcExecutionDynamicLibrariesProvider(
           NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
index 81b304f..731357c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
@@ -27,7 +27,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.rules.cpp.LinkerInputs.LibraryToLink;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import java.util.Collection;
@@ -45,8 +44,6 @@
  */
 @AutoCodec
 public final class CcLinkParams {
-  public static final ObjectCodec<CcLinkParams> CODEC = new CcLinkParams_AutoCodec();
-
   /**
    * A list of link options contributed by a single configured target.
    *
@@ -398,8 +395,6 @@
    */
   @AutoCodec
   public static final class Linkstamp {
-    public static final ObjectCodec<Linkstamp> CODEC = new CcLinkParams_Linkstamp_AutoCodec();
-
     private final Artifact artifact;
     private final NestedSet<Artifact> declaredIncludeSrcs;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
index 3c5554d..eb8b788 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.packages.NativeProvider;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParams.Builder;
 import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore.CcLinkParamsStoreImpl;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
@@ -29,8 +28,6 @@
 @Immutable
 @AutoCodec
 public final class CcLinkParamsInfo extends NativeInfo {
-  public static final ObjectCodec<CcLinkParamsInfo> CODEC = new CcLinkParamsInfo_AutoCodec();
-
   public static final NativeProvider<CcLinkParamsInfo> PROVIDER =
       new NativeProvider<CcLinkParamsInfo>(CcLinkParamsInfo.class, "link_params") {};
   public static final Function<TransitiveInfoCollection, CcLinkParamsStore> TO_LINK_PARAMS =
@@ -54,9 +51,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class CcLinkParamsInfoCollection extends CcLinkParamsStore {
-    public static final ObjectCodec<CcLinkParamsInfoCollection> CODEC =
-        new CcLinkParamsInfo_CcLinkParamsInfoCollection_AutoCodec();
-
     private final Iterable<CcLinkParamsInfo> providers;
 
     CcLinkParamsInfoCollection(Iterable<CcLinkParamsInfo> providers) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java
index e8f757f..b88be07 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -27,9 +26,6 @@
 @Immutable
 @AutoCodec
 public final class CcNativeLibraryProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<CcNativeLibraryProvider> CODEC =
-      new CcNativeLibraryProvider_AutoCodec();
-
   private final NestedSet<LinkerInput> transitiveCcNativeLibraries;
 
   public CcNativeLibraryProvider(NestedSet<LinkerInput> transitiveCcNativeLibraries) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 5664286..a63712e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -38,7 +38,6 @@
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.util.Pair;
@@ -131,10 +130,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class StringLiteralChunk implements StringChunk, Serializable {
-
-    public static final ObjectCodec<StringLiteralChunk> CODEC =
-        new CcToolchainFeatures_StringLiteralChunk_AutoCodec();
-
     private final String text;
 
     @VisibleForSerialization
@@ -169,9 +164,6 @@
   @Immutable
   @AutoCodec
   static class VariableChunk implements StringChunk, Serializable {
-    public static final ObjectCodec<VariableChunk> CODEC =
-        new CcToolchainFeatures_VariableChunk_AutoCodec();
-
     private final String variableName;
 
     @VisibleForSerialization
@@ -346,9 +338,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class Flag implements Serializable, Expandable {
-
-    public static final ObjectCodec<Flag> CODEC = new CcToolchainFeatures_Flag_AutoCodec();
-
     private final ImmutableList<StringChunk> chunks;
 
     @VisibleForSerialization
@@ -397,9 +386,6 @@
     @AutoCodec
     @VisibleForSerialization
     static class SingleChunkFlag implements Serializable, Expandable {
-      public static final ObjectCodec<SingleChunkFlag> CODEC =
-          new CcToolchainFeatures_Flag_SingleChunkFlag_AutoCodec();
-
       private final StringChunk chunk;
 
       @VisibleForSerialization
@@ -439,9 +425,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class EnvEntry implements Serializable {
-
-    public static final ObjectCodec<EnvEntry> CODEC = new CcToolchainFeatures_EnvEntry_AutoCodec();
-
     private final String key;
     private final ImmutableList<StringChunk> valueChunks;
 
@@ -493,10 +476,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class VariableWithValue {
-
-    public static final ObjectCodec<VariableWithValue> CODEC =
-        new CcToolchainFeatures_VariableWithValue_AutoCodec();
-
     public final String variable;
     public final String value;
 
@@ -514,10 +493,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class FlagGroup implements Serializable, Expandable {
-
-    public static final ObjectCodec<FlagGroup> CODEC =
-        new CcToolchainFeatures_FlagGroup_AutoCodec();
-
     private final ImmutableList<Expandable> expandables;
     private String iterateOverVariable;
     private final ImmutableSet<String> expandIfAllAvailable;
@@ -709,14 +684,11 @@
   @AutoCodec
   @VisibleForSerialization
   static class FlagSet implements Serializable {
-
-    public static final ObjectCodec<FlagSet> CODEC = new CcToolchainFeatures_FlagSet_AutoCodec();
-
     private final ImmutableSet<String> actions;
     private final ImmutableSet<String> expandIfAllAvailable;
     private final ImmutableSet<CToolchain.WithFeatureSet> withFeatureSets;
     private final ImmutableList<FlagGroup> flagGroups;
-    
+
     private FlagSet(CToolchain.FlagSet flagSet) throws InvalidConfigurationException {
       this(flagSet, ImmutableSet.copyOf(flagSet.getActionList()));
     }
@@ -795,9 +767,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class EnvSet implements Serializable {
-
-    public static final ObjectCodec<EnvSet> CODEC = new CcToolchainFeatures_EnvSet_AutoCodec();
-
     private final ImmutableSet<String> actions;
     private final ImmutableList<EnvEntry> envEntries;
     private final ImmutableSet<CToolchain.WithFeatureSet> withFeatureSets;
@@ -882,9 +851,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class Feature implements Serializable, CrosstoolSelectable {
-
-    public static final ObjectCodec<Feature> CODEC = new CcToolchainFeatures_Feature_AutoCodec();
-
     private final String name;
     private final ImmutableList<FlagSet> flagSets;
     private final ImmutableList<EnvSet> envSets;
@@ -1017,10 +983,6 @@
   @Immutable
   @AutoCodec
   static class ActionConfig implements Serializable, CrosstoolSelectable {
-
-    public static final ObjectCodec<ActionConfig> CODEC =
-        new CcToolchainFeatures_ActionConfig_AutoCodec();
-
     public static final String FLAG_SET_WITH_ACTION_ERROR =
         "action_config %s specifies actions.  An action_config's flag sets automatically apply "
             + "to the configured action.  Thus, you must not specify action lists in an "
@@ -1166,9 +1128,6 @@
   @Immutable
   @AutoCodec
   public static class Variables {
-    public static final ObjectCodec<Variables> CODEC =
-        new CcToolchainFeatures_Variables_AutoCodec();
-
     /** An empty variables instance. */
     public static final Variables EMPTY = new Variables.Builder().build();
 
@@ -1376,9 +1335,6 @@
     @AutoCodec
     @VisibleForSerialization
     static final class LazyStringSequence extends VariableValueAdapter {
-      public static final ObjectCodec<LazyStringSequence> CODEC =
-          new CcToolchainFeatures_Variables_LazyStringSequence_AutoCodec();
-
       private final Supplier<ImmutableList<String>> supplier;
 
       @VisibleForSerialization
@@ -1414,9 +1370,6 @@
     @Immutable
     @AutoCodec
     public static class LibraryToLinkValue extends VariableValueAdapter {
-      public static final ObjectCodec<LibraryToLinkValue> CODEC =
-          new CcToolchainFeatures_Variables_LibraryToLinkValue_AutoCodec();
-
       public static final String OBJECT_FILES_FIELD_NAME = "object_files";
       public static final String NAME_FIELD_NAME = "name";
       public static final String TYPE_FIELD_NAME = "type";
@@ -1548,9 +1501,6 @@
     @AutoCodec
     @VisibleForSerialization
     static final class Sequence extends VariableValueAdapter {
-      public static final ObjectCodec<Sequence> CODEC =
-          new CcToolchainFeatures_Variables_Sequence_AutoCodec();
-
       private static final String SEQUENCE_VARIABLE_TYPE_NAME = "sequence";
 
       private final ImmutableList<VariableValue> values;
@@ -1584,9 +1534,6 @@
     @AutoCodec
     @VisibleForSerialization
     static final class StructureSequence extends VariableValueAdapter {
-      public static final ObjectCodec<StructureSequence> CODEC =
-          new CcToolchainFeatures_Variables_StructureSequence_AutoCodec();
-
       private final ImmutableList<ImmutableMap<String, VariableValue>> values;
 
       @VisibleForSerialization
@@ -1623,9 +1570,6 @@
     @Immutable
     @AutoCodec
     static final class StringSequence extends VariableValueAdapter {
-      public static final ObjectCodec<StringSequence> CODEC =
-          new CcToolchainFeatures_Variables_StringSequence_AutoCodec();
-
       private final Iterable<String> values;
 
       public StringSequence(Iterable<String> values) {
@@ -1661,9 +1605,6 @@
     @AutoCodec
     @VisibleForSerialization
     static final class StructureValue extends VariableValueAdapter {
-      public static final ObjectCodec<StructureValue> CODEC =
-          new CcToolchainFeatures_Variables_StructureValue_AutoCodec();
-
       private static final String STRUCTURE_VARIABLE_TYPE_NAME = "structure";
 
       private final ImmutableMap<String, VariableValue> value;
@@ -1701,9 +1642,6 @@
     @AutoCodec
     @VisibleForSerialization
     static final class StringValue extends VariableValueAdapter {
-      public static final ObjectCodec<StringValue> CODEC =
-          new CcToolchainFeatures_Variables_StringValue_AutoCodec();
-
       private static final String STRING_VARIABLE_TYPE_NAME = "string";
 
       private final String value;
@@ -1737,9 +1675,6 @@
     @Immutable
     @AutoCodec
     static final class IntegerValue extends VariableValueAdapter {
-      public static final ObjectCodec<IntegerValue> CODEC =
-          new CcToolchainFeatures_Variables_IntegerValue_AutoCodec();
-
       private static final String INTEGER_VALUE_TYPE_NAME = "integer";
       private final int value;
 
@@ -2087,14 +2022,10 @@
   @Immutable
   @AutoCodec
   public static class FeatureConfiguration {
-
-    public static final ObjectCodec<FeatureConfiguration> CODEC =
-        new CcToolchainFeatures_FeatureConfiguration_AutoCodec();
-
     private final ImmutableSet<String> enabledFeatureNames;
     private final ImmutableList<Feature> enabledFeatures;
     private final ImmutableSet<String> enabledActionConfigActionNames;
-    
+
     private final ImmutableMap<String, ActionConfig> actionConfigByActionName;
 
     /**
@@ -2114,7 +2045,7 @@
         ImmutableSet<String> enabledActionConfigActionNames,
         ImmutableMap<String, ActionConfig> actionConfigByActionName) {
       this.enabledFeatures = enabledFeatures;
-      
+
       this.actionConfigByActionName = actionConfigByActionName;
       ImmutableSet.Builder<String> featureBuilder = ImmutableSet.builder();
       for (Feature feature : enabledFeatures) {
@@ -2123,7 +2054,7 @@
       this.enabledFeatureNames = featureBuilder.build();
       this.enabledActionConfigActionNames = enabledActionConfigActionNames;
     }
-    
+
     /**
      * @return whether the given {@code feature} is enabled.
      */
@@ -2196,7 +2127,7 @@
       }
       return envBuilder.build();
     }
-  
+
     /**
      * Returns a given action's tool under this FeatureConfiguration.
      */
@@ -2237,7 +2168,7 @@
 
   /** All artifact name patterns defined in this feature configuration. */
   private final ImmutableList<ArtifactNamePattern> artifactNamePatterns;
-  
+
   /**
    * All features and action configs in the order in which they were specified in the configuration.
    *
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
index 76d9e47..af40a0b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction.DotdFile;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.util.Pair;
@@ -34,8 +33,6 @@
 /** The compile command line for the C++ compile action. */
 @AutoCodec
 public final class CompileCommandLine {
-  public static final ObjectCodec<CompileCommandLine> CODEC = new CompileCommandLine_AutoCodec();
-
   private final Artifact sourceFile;
   private final CoptsFilter coptsFilter;
   private final FeatureConfiguration featureConfiguration;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 236439e..256b459 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -57,7 +57,6 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CppCompileActionContext.Reply;
 import com.google.devtools.build.lib.rules.cpp.CppHelper.PregreppedHeader;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.util.DependencySet;
@@ -90,8 +89,6 @@
 @ThreadCompatible
 public class CppCompileAction extends AbstractAction
     implements IncludeScannable, ExecutionInfoSpecifier, CommandAction {
-  public static final ObjectCodec<CppCompileAction> CODEC = new CppCompileAction_AutoCodec();
-
   private static final PathFragment BUILD_PATH_FRAGMENT = PathFragment.create("BUILD");
 
   private static final int VALIDATION_DEBUG = 0;  // 0==none, 1==warns/errors, 2==all
@@ -1401,8 +1398,6 @@
    */
   @AutoCodec
   public static class DotdFile {
-    public static final ObjectCodec<DotdFile> CODEC = new CppCompileAction_DotdFile_AutoCodec();
-
     private final Artifact artifact;
     private final PathFragment execPath;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index e0b1e53..75f123b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -41,7 +41,6 @@
 import com.google.devtools.build.lib.rules.cpp.CrosstoolConfigurationLoader.CrosstoolFile;
 import com.google.devtools.build.lib.rules.cpp.transitions.ContextCollectorOwnerTransition;
 import com.google.devtools.build.lib.rules.cpp.transitions.DisableLipoTransition;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -67,8 +66,6 @@
 )
 @Immutable
 public final class CppConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<CppConfiguration> CODEC = new CppConfiguration_AutoCodec();
-
   /**
    * String indicating a Mac system, for example when used in a crosstool configuration's host or
    * target system name.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugFileProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugFileProvider.java
index 4afbd08..5b1ec70 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugFileProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugFileProvider.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -27,9 +26,6 @@
 @Immutable
 @AutoCodec
 public final class CppDebugFileProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<CppDebugFileProvider> CODEC =
-      new CppDebugFileProvider_AutoCodec();
-
   private final NestedSet<Artifact> transitiveDwoFiles;
   private final NestedSet<Artifact> transitivePicDwoFiles;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugPackageProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugPackageProvider.java
index 03f666e..31d3f9d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugPackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppDebugPackageProvider.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import javax.annotation.Nullable;
 
@@ -30,9 +29,6 @@
 @Immutable
 @AutoCodec
 public final class CppDebugPackageProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<CppDebugPackageProvider> CODEC =
-      new CppDebugPackageProvider_AutoCodec();
-
   private final Label targetLabel;
   private final Artifact strippedArtifact;
   private final Artifact unstrippedArtifact;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index be41190..0aa8e4d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -65,7 +65,6 @@
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.shell.ShellUtils;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.FileTypeSet;
@@ -574,9 +573,6 @@
   @AutoCodec
   @AutoValue
   abstract static class PregreppedHeader {
-    public static final ObjectCodec<PregreppedHeader> CODEC =
-        new CppHelper_PregreppedHeader_AutoCodec();
-
     @AutoCodec.Instantiator
     static PregreppedHeader create(Artifact originalHeader, Artifact greppedHeader) {
       return new AutoValue_CppHelper_PregreppedHeader(originalHeader, greppedHeader);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMap.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMap.java
index 1e158882..ac13b85 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMap.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModuleMap.java
@@ -16,7 +16,6 @@
 import com.google.common.base.Optional;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
@@ -24,8 +23,6 @@
 @Immutable
 @AutoCodec
 public final class CppModuleMap {
-  public static final ObjectCodec<CppModuleMap> CODEC = new CppModuleMap_AutoCodec();
-
   // NOTE: If you add a field here, you'll likely need to update CppModuleMapAction.computeKey().
   private final Artifact artifact;
   private final String name;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 54ee2a9..d193589 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -25,7 +25,6 @@
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.StripMode;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.util.OptionsUtils;
@@ -47,8 +46,6 @@
 /** Command-line options for C++. */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class CppOptions extends FragmentOptions {
-  public static final ObjectCodec<CppOptions> CODEC = new CppOptions_AutoCodec();
-
   /**
    * Converts a comma-separated list of compilation mode settings to a properly typed List.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRunfilesProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRunfilesProvider.java
index e5f48e0..9eccbf6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRunfilesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRunfilesProvider.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -31,7 +30,6 @@
 @Immutable
 @AutoCodec
 public final class CppRunfilesProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<CppRunfilesProvider> CODEC = new CppRunfilesProvider_AutoCodec();
   private final Runfiles staticRunfiles;
   private final Runfiles sharedRunfiles;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
index 91f9502..4eb49ed 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
@@ -29,7 +29,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.rules.cpp.CppActionConfigs.CppPlatform;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig;
@@ -59,8 +58,6 @@
 @AutoCodec
 @Immutable
 public final class CppToolchainInfo {
-  public static final ObjectCodec<CppToolchainInfo> CODEC = new CppToolchainInfo_AutoCodec();
-
   private CToolchain toolchain;
   private final PathFragment crosstoolTopPathFragment;
   private final String toolchainIdentifier;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoader.java
index 07e722a..a57dd73 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoader.java
@@ -31,7 +31,6 @@
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.Fingerprint;
@@ -70,9 +69,6 @@
   /** A class that holds the results of reading a CROSSTOOL file. */
   @AutoCodec
   public static class CrosstoolFile {
-    public static final ObjectCodec<CrosstoolFile> CODEC =
-        new CrosstoolConfigurationLoader_CrosstoolFile_AutoCodec();
-
     private final String location;
     private final CrosstoolConfig.CrosstoolRelease proto;
     private final String md5;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java
index 4684a7d..8b1c729 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.rules.cpp;
 
 import com.google.common.collect.Lists;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import java.util.Collection;
@@ -31,9 +30,6 @@
  */
 @AutoCodec
 public final class ExtraLinkTimeLibraries {
-  public static final ObjectCodec<ExtraLinkTimeLibraries> CODEC =
-      new ExtraLinkTimeLibraries_AutoCodec();
-
   /**
    * We can have multiple different kinds of lists of libraries to include
    * at link time.  We map from the class type to an actual instance.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportProvider.java
index 4050422..72715f0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportProvider.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
@@ -28,8 +27,6 @@
 @Immutable
 @AutoCodec
 public class FdoSupportProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<FdoSupportProvider> CODEC = new FdoSupportProvider_AutoCodec();
-
   private final FdoSupport fdoSupport;
   private final Artifact profileArtifact;
   private final ImmutableMap<PathFragment, Artifact> gcdaArtifacts;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java
index da8c79d..7938c99 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.rules.cpp.FdoSupport.FdoMode;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -45,7 +44,6 @@
   @AutoCodec
   public static class Key implements SkyKey {
     private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
-    public static final ObjectCodec<Key> CODEC = new FdoSupportValue_Key_AutoCodec();
 
     private final LipoMode lipoMode;
     private final Path fdoZip;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java
index ef99252..9769141 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CToolchain;
 import java.io.Serializable;
@@ -28,14 +27,10 @@
 @AutoCodec
 @Immutable
 public class FlagList implements Serializable {
-  public static final ObjectCodec<FlagList> CODEC = new FlagList_AutoCodec();
-
   /** Represents an optional flag that can be toggled using the package features mechanism. */
   @AutoCodec
   @Immutable
   static class OptionalFlag implements Serializable {
-    public static final ObjectCodec<OptionalFlag> CODEC = new FlagList_OptionalFlag_AutoCodec();
-
     private final String name;
     private final ImmutableList<String> flags;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
index 8625cf6..a71c384 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.collect.CollectionUtils;
 import com.google.devtools.build.lib.concurrent.ThreadSafety;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
@@ -35,9 +34,6 @@
   @ThreadSafety.Immutable
   @AutoCodec
   public static class SimpleLinkerInput implements LinkerInput {
-    public static final ObjectCodec<SimpleLinkerInput> CODEC =
-        new LinkerInputs_SimpleLinkerInput_AutoCodec();
-
     private final Artifact artifact;
     private final ArtifactCategory category;
 
@@ -175,9 +171,6 @@
   @ThreadSafety.Immutable
   @AutoCodec
   public static class SolibLibraryToLink implements LibraryToLink {
-    public static final ObjectCodec<SolibLibraryToLink> CODEC =
-        new LinkerInputs_SolibLibraryToLink_AutoCodec();
-
     private final Artifact solibSymlinkArtifact;
     private final Artifact libraryArtifact;
     private final String libraryIdentifier;
@@ -278,9 +271,6 @@
   @AutoCodec
   @VisibleForSerialization
   static class CompoundLibraryToLink implements LibraryToLink {
-    public static final ObjectCodec<CompoundLibraryToLink> CODEC =
-        new LinkerInputs_CompoundLibraryToLink_AutoCodec();
-
     private final Artifact libraryArtifact;
     private final ArtifactCategory category;
     private final String libraryIdentifier;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java
index 26541d6..bf37717 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LipoContextProvider.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.Map;
@@ -34,8 +33,6 @@
 @Immutable
 @AutoCodec
 public final class LipoContextProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<LipoContextProvider> CODEC = new LipoContextProvider_AutoCodec();
-
   private final CcCompilationInfo ccCompilationInfo;
 
   private final ImmutableMap<Artifact, IncludeScannable> includeScannables;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
index 2dc2996..cb26f91 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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;
@@ -54,8 +53,6 @@
  */
 @AutoCodec
 public final class LtoBackendArtifacts {
-  public static final ObjectCodec<LtoBackendArtifacts> CODEC = new LtoBackendArtifacts_AutoCodec();
-
   // A file containing mapping of symbol => bitcode file containing the symbol.
   private final Artifact index;
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/TransitiveLipoInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/TransitiveLipoInfoProvider.java
index 650f3ed..e07ce2e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/TransitiveLipoInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/TransitiveLipoInfoProvider.java
@@ -19,7 +19,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.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -32,9 +31,6 @@
 @Immutable
 @AutoCodec
 public final class TransitiveLipoInfoProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<TransitiveLipoInfoProvider> CODEC =
-      new TransitiveLipoInfoProvider_AutoCodec();
-
   public static final String LIPO_CONTEXT_COLLECTOR = ":lipo_context_collector";
   public static final TransitiveLipoInfoProvider EMPTY =
       new TransitiveLipoInfoProvider(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java
index 35447dc..53566f3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java
@@ -16,7 +16,6 @@
 
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
@@ -24,9 +23,6 @@
 @Immutable
 @AutoCodec
 public final class FilegroupPathProvider implements TransitiveInfoProvider {
-  public static final ObjectCodec<FilegroupPathProvider> CODEC =
-      new FilegroupPathProvider_AutoCodec();
-
   private final PathFragment pathFragment;
 
   @AutoCodec.Instantiator
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
index e81118d..2d1eb2e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
@@ -28,7 +28,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -47,8 +46,6 @@
   category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
 )
 public final class JavaConfiguration extends Fragment {
-  public static final ObjectCodec<JavaConfiguration> CODEC = new JavaConfiguration_AutoCodec();
-
   /** Values for the --java_classpath option */
   public enum JavaClasspathMode {
     /** Use full transitive classpaths, the default behavior. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
index e9c6fb2..3e9484d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
@@ -25,7 +25,6 @@
 import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaClasspathMode;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaOptimizationMode;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnforcementLevel;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.EnumConverter;
 import com.google.devtools.common.options.Option;
@@ -41,8 +40,6 @@
 /** Command-line options for building Java targets */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class JavaOptions extends FragmentOptions {
-  public static final ObjectCodec<JavaOptions> CODEC = new JavaOptions_AutoCodec();
-
   /** Converter for the --java_classpath option. */
   public static class JavaClasspathModeConverter extends EnumConverter<JavaClasspathMode> {
     public JavaClasspathModeConverter() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
index dba496b..0e8c1b6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.packages.NativeProvider;
 import com.google.devtools.build.lib.packages.RuleErrorConsumer;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skylarkinterface.SkylarkCallable;
@@ -37,8 +36,6 @@
 @Immutable
 @AutoCodec
 public class JavaRuntimeInfo extends NativeInfo {
-  public static final ObjectCodec<JavaRuntimeInfo> CODEC = new JavaRuntimeInfo_AutoCodec();
-
   public static final String SKYLARK_NAME = "JavaRuntimeInfo";
 
   public static final NativeProvider<JavaRuntimeInfo> PROVIDER =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java
index e44bdac..855dd0c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
 import com.google.devtools.build.lib.concurrent.ThreadSafety;
 import com.google.devtools.build.lib.events.Location;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -28,8 +27,6 @@
 @ThreadSafety.Immutable
 @AutoCodec
 public final class JavaRuntimeToolchainInfo extends ToolchainInfo {
-  public static final ObjectCodec<JavaRuntimeToolchainInfo> CODEC =
-      new JavaRuntimeToolchainInfo_AutoCodec();
   private final JavaRuntimeInfo javaRuntime;
 
   @AutoCodec.Instantiator
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java b/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java
index 3291a40..418cfd4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/HeaderThinning.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
 import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
 import com.google.devtools.build.lib.rules.cpp.IncludeScanner.IncludeScannerSupplier;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -46,8 +45,6 @@
  */
 @AutoCodec
 public class HeaderThinning implements IncludeProcessing {
-  public static final ObjectCodec<HeaderThinning> CODEC = new HeaderThinning_AutoCodec();
-
   private final Iterable<Artifact> potentialInputs;
 
   public HeaderThinning(Iterable<Artifact> potentialInputs) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java
index ba28c36..2e0b812 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter;
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Converters;
 import com.google.devtools.common.options.Option;
@@ -31,9 +30,6 @@
  */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class J2ObjcCommandLineOptions extends FragmentOptions {
-  public static final ObjectCodec<J2ObjcCommandLineOptions> CODEC =
-      new J2ObjcCommandLineOptions_AutoCodec();
-
   @Option(
     name = "j2objc_translation_flags",
     converter = Converters.CommaSeparatedOptionListConverter.class,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
index 582453b..d71ce59 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
@@ -27,7 +27,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.util.Collections;
 import java.util.List;
@@ -40,8 +39,6 @@
 @AutoCodec
 @Immutable
 public class J2ObjcConfiguration extends Fragment {
-  public static final ObjectCodec<J2ObjcConfiguration> CODEC = new J2ObjcConfiguration_AutoCodec();
-
   /**
    * Always-on flags for J2ObjC translation. These flags are always used when invoking the J2ObjC
    * transpiler, and cannot be overridden by user-specified flags in {@link
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
index c836e34..e7e5a16 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.rules.apple.DottedVersion;
 import com.google.devtools.build.lib.rules.apple.DottedVersionConverter;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter;
 import com.google.devtools.common.options.Option;
@@ -31,9 +30,6 @@
 /** Command-line options for building Objective-C targets. */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class ObjcCommandLineOptions extends FragmentOptions {
-  public static final ObjectCodec<ObjcCommandLineOptions> CODEC =
-      new ObjcCommandLineOptions_AutoCodec();
-
   @Option(
     name = "ios_simulator_version",
     defaultValue = "9.3",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index d95e40c..b5d532a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
 import com.google.devtools.build.lib.rules.apple.DottedVersion;
 import com.google.devtools.build.lib.rules.cpp.HeaderDiscovery;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -40,8 +39,6 @@
 )
 @Immutable
 public class ObjcConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<ObjcConfiguration> CODEC = new ObjcConfiguration_AutoCodec();
-
   @VisibleForTesting
   static final ImmutableList<String> DBG_COPTS =
       ImmutableList.of("-O0", "-DDEBUG=1", "-fstack-protector", "-fstack-protector-all", "-g");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
index 2838f3a..1e2db33 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
@@ -26,7 +26,6 @@
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
@@ -48,13 +47,9 @@
   doc = "A configuration fragment representing protocol buffers."
 )
 public class ProtoConfiguration extends Fragment {
-  public static final ObjectCodec<ProtoConfiguration> CODEC = new ProtoConfiguration_AutoCodec();
-
   /** Command line options. */
   @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
   public static class Options extends FragmentOptions {
-    public static final ObjectCodec<Options> CODEC = new ProtoConfiguration_Options_AutoCodec();
-
     @Option(
       name = "protocopt",
       allowMultiple = true,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java
index f8ac8bc..b152c7a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.common.options.TriState;
@@ -34,8 +33,6 @@
 @AutoCodec
 @Immutable
 public class PythonConfiguration extends BuildConfiguration.Fragment {
-  public static final ObjectCodec<PythonConfiguration> CODEC = new PythonConfiguration_AutoCodec();
-
   private final boolean ignorePythonVersionAttribute;
   private final PythonVersion defaultPythonVersion;
   private final TriState buildPythonZip;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
index b730513..8138485 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.rules.python;
 
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.EnumConverter;
 import com.google.devtools.common.options.Option;
@@ -25,8 +24,6 @@
 /** Python-related command-line options. */
 @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
 public class PythonOptions extends FragmentOptions {
-  public static final ObjectCodec<PythonOptions> CODEC = new PythonOptions_AutoCodec();
-
   /**
    * Converter for the --force_python option.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java
index 6d443cd..39d88ab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
 import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.FileType;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -42,9 +41,6 @@
 
   @AutoCodec
   static class GetInitPyFiles implements Runfiles.EmptyFilesSupplier {
-    public static final ObjectCodec<GetInitPyFiles> CODEC =
-        new PythonUtils_GetInitPyFiles_AutoCodec();
-
     @Override
     public Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths) {
       return getInitPyFiles(manifestPaths);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
index 0536e82..dd60938 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.actions.Actions.GeneratingActions;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 
@@ -38,8 +37,6 @@
 
   @AutoCodec
   static final class ActionTemplateExpansionKey extends ActionLookupKey {
-    static final ObjectCodec<ActionTemplateExpansionKey> CODEC =
-        new ActionTemplateExpansionValue_ActionTemplateExpansionKey_AutoCodec();
     private static final Interner<ActionTemplateExpansionKey> interner =
         BlazeInterners.newWeakInterner();
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java
index 96b8d16..20d9e97 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -56,7 +55,6 @@
 @AutoCodec
 public class ArtifactSkyKey implements SkyKey {
   private static final Interner<ArtifactSkyKey> INTERNER = BlazeInterners.newWeakInterner();
-  public static final ObjectCodec<ArtifactSkyKey> CODEC = new ArtifactSkyKey_AutoCodec();
   private static final Function<Artifact, SkyKey> TO_MANDATORY_KEY =
       artifact -> key(artifact, true);
   private static final Function<ArtifactSkyKey, Artifact> TO_ARTIFACT = ArtifactSkyKey::getArtifact;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index 73ce248..08c8c06 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -34,7 +34,6 @@
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey.KeyAndHost;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.SkylarkImport;
 import com.google.devtools.build.skyframe.SkyFunctionName;
@@ -55,7 +54,6 @@
   /** A base class for a key representing an aspect applied to a particular target. */
   @AutoCodec
   public static class AspectKey extends AspectValueKey {
-    public static final ObjectCodec<AspectKey> CODEC = new AspectValue_AspectKey_AutoCodec();
     private final Label label;
     private final ImmutableList<AspectKey> baseKeys;
     private final BuildConfigurationValue.Key aspectConfigurationKey;
@@ -274,8 +272,6 @@
 
   /** An {@link AspectKey} for an aspect in the host configuration. */
   static class HostAspectKey extends AspectKey {
-    static final ObjectCodec<AspectKey> CODEC = AspectKey.CODEC;
-
     private HostAspectKey(
         Label label,
         Key aspectConfigurationKey,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
index b2e7ee3..b445cc0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
@@ -44,9 +44,6 @@
 @AutoCodec
 @ThreadSafe
 public class BuildConfigurationValue implements SkyValue {
-  public static final ObjectCodec<BuildConfigurationValue> CODEC =
-      new BuildConfigurationValue_AutoCodec();
-
   private static final Interner<Key> keyInterner = BlazeInterners.newWeakInterner();
 
   private final BuildConfiguration configuration;
@@ -81,8 +78,6 @@
   /** {@link SkyKey} for {@link BuildConfigurationValue}. */
   @VisibleForSerialization
   public static final class Key implements SkyKey, Serializable {
-    public static final ObjectCodec<Key> CODEC = new Codec();
-
     private final FragmentClassSet fragments;
     private final BuildOptions buildOptions;
     // If hashCode really is -1, we'll recompute it from scratch each time. Oh well.
@@ -136,7 +131,7 @@
       @Override
       public void serialize(SerializationContext context, Key obj, CodedOutputStream codedOut)
           throws SerializationException, IOException {
-        BuildOptions.CODEC.serialize(context, obj.buildOptions, codedOut);
+        context.serialize(obj.buildOptions, codedOut);
         codedOut.writeInt32NoTag(obj.fragments.fragmentClasses().size());
         for (Class<? extends BuildConfiguration.Fragment> fragment :
             obj.fragments.fragmentClasses()) {
@@ -148,7 +143,7 @@
       @SuppressWarnings("unchecked") // Class<? extends...> cast
       public Key deserialize(DeserializationContext context, CodedInputStream codedIn)
           throws SerializationException, IOException {
-        BuildOptions buildOptions = BuildOptions.CODEC.deserialize(context, codedIn);
+        BuildOptions buildOptions = context.deserialize(codedIn);
         int fragmentsSize = codedIn.readInt32();
         ImmutableSortedSet.Builder<Class<? extends BuildConfiguration.Fragment>> fragmentsBuilder =
             ImmutableSortedSet.orderedBy(BuildConfiguration.lexicalFragmentSorter);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
index 7d3fe84..485a6a7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import java.util.Objects;
@@ -61,8 +60,6 @@
   public static class BuildInfoKeyAndConfig extends ActionLookupKey {
     private static final Interner<BuildInfoKeyAndConfig> keyInterner =
         BlazeInterners.newWeakInterner();
-    public static final ObjectCodec<BuildInfoKeyAndConfig> CODEC =
-        new BuildInfoCollectionValue_BuildInfoKeyAndConfig_AutoCodec();
 
     private final BuildInfoFactory.BuildInfoKey infoKey;
     private final BuildConfigurationValue.Key configKey;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
index 19d5ba3..94c73f9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java
@@ -44,9 +44,6 @@
 @ThreadSafe
 @AutoCodec
 public class ConfigurationFragmentValue implements SkyValue {
-  public static final ObjectCodec<ConfigurationFragmentValue> CODEC =
-      new ConfigurationFragmentValue_AutoCodec();
-
   @Nullable
   private final BuildConfiguration.Fragment fragment;
 
@@ -75,8 +72,6 @@
   public static final class ConfigurationFragmentKey implements SkyKey {
     private static Interner<ConfigurationFragmentKey> interner = BlazeInterners.newWeakInterner();
 
-    public static final ObjectCodec<ConfigurationFragmentKey> CODEC = new Codec();
-
     private final BuildOptions buildOptions;
     private final String checksum;
     private final Class<? extends Fragment> fragmentType;
@@ -140,7 +135,7 @@
       public void serialize(
           SerializationContext context, ConfigurationFragmentKey obj, CodedOutputStream codedOut)
           throws SerializationException, IOException {
-        BuildOptions.CODEC.serialize(context, obj.buildOptions, codedOut);
+        context.serialize(obj.buildOptions, codedOut);
         StringCodecs.asciiOptimized().serialize(context, obj.fragmentType.getName(), codedOut);
       }
 
@@ -152,7 +147,7 @@
 
         try {
           return of(
-              BuildOptions.CODEC.deserialize(context, codedIn),
+              context.deserialize(codedIn),
               (Class<? extends Fragment>)
                   Class.forName(StringCodecs.asciiOptimized().deserialize(context, codedIn)));
         } catch (ClassNotFoundException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
index ab1655f..f948979 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import java.util.Objects;
@@ -34,8 +33,6 @@
  */
 @AutoCodec
 public class ConfiguredTargetKey extends ActionLookupKey {
-  public static final ObjectCodec<ConfiguredTargetKey> CODEC = new ConfiguredTargetKey_AutoCodec();
-
   private final Label label;
   @Nullable private final BuildConfigurationValue.Key configurationKey;
 
@@ -172,8 +169,6 @@
   }
 
   static class HostConfiguredTargetKey extends ConfiguredTargetKey {
-    public static final ObjectCodec<ConfiguredTargetKey> CODEC = ConfiguredTargetKey.CODEC;
-
     private HostConfiguredTargetKey(
         Label label, @Nullable BuildConfigurationValue.Key configurationKey) {
       super(label, configurationKey);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GlobDescriptor.java b/src/main/java/com/google/devtools/build/lib/skyframe/GlobDescriptor.java
index 4b20998..f64d451c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/GlobDescriptor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/GlobDescriptor.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.PathFragment;
@@ -39,8 +38,6 @@
 
   private static final Interner<GlobDescriptor> interner = BlazeInterners.newWeakInterner();
 
-  public static final ObjectCodec<GlobDescriptor> CODEC = new GlobDescriptor_AutoCodec();
-
   /**
    * Returns interned instance based on the parameters.
    *
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
index 96304a1..0314de6 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
 import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.LegacySkyKey;
 import com.google.devtools.build.skyframe.NotComparableSkyValue;
@@ -32,8 +31,6 @@
 @Immutable
 @ThreadSafe
 public class PackageValue implements NotComparableSkyValue {
-  public static final ObjectCodec<PackageValue> CODEC = new PackageValue_AutoCodec();
-
   private final Package pkg;
 
   public PackageValue(Package pkg) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java
index ef2e04b..0dcbe30 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
 import com.google.devtools.build.lib.pkgcache.FilteringPolicy;
 import com.google.devtools.build.lib.skyframe.RecursivePkgValue.RecursivePkgKey;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.RootedPath;
@@ -75,9 +74,6 @@
    */
   @AutoCodec
   public static final class PrepareDepsOfTargetsUnderDirectoryKey implements Serializable {
-    public static final ObjectCodec<PrepareDepsOfTargetsUnderDirectoryKey> CODEC =
-        new PrepareDepsOfTargetsUnderDirectoryValue_PrepareDepsOfTargetsUnderDirectoryKey_AutoCodec();
-
     private final RecursivePkgKey recursivePkgKey;
     private final FilteringPolicy filteringPolicy;
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
index 59b1201..d71cfcb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
@@ -21,7 +21,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.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.RootedPath;
@@ -38,6 +37,7 @@
 @Immutable
 @ThreadSafe
 public class RecursivePkgValue implements SkyValue {
+  @AutoCodec
   static final RecursivePkgValue EMPTY =
       new RecursivePkgValue(NestedSetBuilder.<String>emptySet(Order.STABLE_ORDER));
 
@@ -80,9 +80,6 @@
   @AutoCodec
   @ThreadSafe
   public static final class RecursivePkgKey implements Serializable {
-    public static final ObjectCodec<RecursivePkgKey> CODEC =
-        new RecursivePkgValue_RecursivePkgKey_AutoCodec();
-
     private final RepositoryName repositoryName;
     private final RootedPath rootedPath;
     private final ImmutableSet<PathFragment> excludedPaths;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
index 538a990..1f6023d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -39,11 +38,8 @@
 
   /** A {@link SkyKey} for {@code RegisteredToolchainsValue}. */
   @AutoCodec
-  @AutoCodec.VisibleForSerialization
-  // TODO(shahan): Reduce visibility and remove CODEC field once unneeded.
-  public static class Key implements SkyKey {
+  static class Key implements SkyKey {
     private static final Interner<Key> interners = BlazeInterners.newWeakInterner();
-    public static final ObjectCodec<Key> CODEC = new RegisteredToolchainsValue_Key_AutoCodec();
 
     private final BuildConfigurationValue.Key configurationKey;
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java
index 9765dd1..a62196b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -65,13 +64,9 @@
   /** {@link SkyKey} for {@link TargetCompletionValue}. */
   @AutoCodec
   @AutoValue
-  @AutoCodec.VisibleForSerialization
-  public abstract static class TargetCompletionKey implements SkyKey {
-    public static final ObjectCodec<TargetCompletionKey> CODEC =
-        new TargetCompletionValue_TargetCompletionKey_AutoCodec();
-
+  abstract static class TargetCompletionKey implements SkyKey {
     @AutoCodec.Instantiator
-    public static TargetCompletionKey create(
+    static TargetCompletionKey create(
         ConfiguredTargetKey configuredTargetKey,
         TopLevelArtifactContext topLevelArtifactContext,
         boolean willTest) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java
index cc7e84d..6e24906 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.pkgcache.LoadingResult;
 import com.google.devtools.build.lib.pkgcache.TestFilter;
 import com.google.devtools.build.lib.skyframe.serialization.NotSerializableRuntimeException;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.skyframe.SkyFunctionName;
@@ -158,9 +157,6 @@
   @VisibleForSerialization
   @AutoCodec
   public static final class TargetPatternPhaseKey implements SkyKey, Serializable {
-    public static final ObjectCodec<TargetPatternPhaseKey> CODEC =
-        new TargetPatternPhaseValue_TargetPatternPhaseKey_AutoCodec();
-
     private final ImmutableList<String> targetPatterns;
     private final String offset;
     private final boolean compileOneDependency;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java
index a4a41cb..d32af1a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.skyframe.serialization.NotSerializableRuntimeException;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -79,9 +78,6 @@
   @AutoCodec
   @ThreadSafe
   static final class TestSuiteExpansionKey implements SkyKey {
-    public static final ObjectCodec<TestSuiteExpansionKey> CODEC =
-        new TestSuiteExpansionValue_TestSuiteExpansionKey_AutoCodec();
-
     private final ImmutableSortedSet<Label> targets;
 
     public TestSuiteExpansionKey(ImmutableSortedSet<Label> targets) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java
index ee45a82..d165c6c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java
@@ -62,8 +62,12 @@
   private int repetitions = 1;
 
   public SerializationTester(Object... subjects) {
-    Preconditions.checkArgument(subjects.length > 0);
-    this.subjects = ImmutableList.copyOf(subjects);
+    this(ImmutableList.copyOf(subjects));
+  }
+
+  public SerializationTester(ImmutableList<Object> subjects) {
+    Preconditions.checkArgument(!subjects.isEmpty());
+    this.subjects = subjects;
     this.dependenciesBuilder = ImmutableMap.builder();
   }
 
@@ -73,7 +77,8 @@
   }
 
   @SuppressWarnings("rawtypes")
-  public SerializationTester setVerificationFunction(VerificationFunction verificationFunction) {
+  public <T> SerializationTester setVerificationFunction(
+      VerificationFunction<T> verificationFunction) {
     this.verificationFunction = verificationFunction;
     return this;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java
index 7e3b731..5f80c41 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.profiler.Profiler;
 import com.google.devtools.build.lib.profiler.ProfilerTask;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -167,8 +166,6 @@
   @AutoCodec
   @Immutable
   static final class LexerLocation extends Location {
-    public static final ObjectCodec<LexerLocation> CODEC = new Lexer_LexerLocation_AutoCodec();
-
     private final LineNumberTable lineNumberTable;
 
     LexerLocation(LineNumberTable lineNumberTable, int startOffset, int endOffset) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java b/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java
index 49e793a..276b5df 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java
@@ -16,7 +16,6 @@
 
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Location.LineAndColumn;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -32,8 +31,6 @@
 @AutoCodec
 @Immutable
 public class LineNumberTable implements Serializable {
-  public static final ObjectCodec<LineNumberTable> CODEC = new LineNumberTable_AutoCodec();
-
   /** A mapping from line number (line >= 1) to character offset into the file. */
   private final int[] linestart;
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
index 26fc565..dc08f4a 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.cmdline.LabelValidator;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 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.PathFragment;
@@ -86,9 +85,6 @@
   @VisibleForSerialization
   @AutoCodec
   static final class AbsolutePathImport extends SkylarkImportImpl {
-    static final ObjectCodec<AbsolutePathImport> CODEC =
-        new SkylarkImports_AbsolutePathImport_AutoCodec();
-
     private final PathFragment importPath;
 
     @VisibleForSerialization
@@ -122,9 +118,6 @@
   @VisibleForSerialization
   @AutoCodec
   static final class RelativePathImport extends SkylarkImportImpl {
-    static final ObjectCodec<RelativePathImport> CODEC =
-        new SkylarkImports_RelativePathImport_AutoCodec();
-
     private final String importFile;
 
     @VisibleForSerialization
@@ -160,9 +153,6 @@
   @VisibleForSerialization
   @AutoCodec
   static final class AbsoluteLabelImport extends SkylarkImportImpl {
-    static final ObjectCodec<AbsoluteLabelImport> CODEC =
-        new SkylarkImports_AbsoluteLabelImport_AutoCodec();
-
     private final Label importLabel;
 
     @VisibleForSerialization
@@ -188,9 +178,6 @@
   @VisibleForSerialization
   @AutoCodec
   static final class RelativeLabelImport extends SkylarkImportImpl {
-    static final ObjectCodec<RelativeLabelImport> CODEC =
-        new SkylarkImports_RelativeLabelImport_AutoCodec();
-
     private final String importTarget;
 
     @VisibleForSerialization
diff --git a/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java b/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java
index c64ea51..efd4741 100644
--- a/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java
+++ b/src/main/java/com/google/devtools/build/lib/util/RegexFilter.java
@@ -16,7 +16,6 @@
 
 import com.google.common.base.Joiner;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.common.options.Converter;
 import com.google.devtools.common.options.OptionsParsingException;
@@ -37,8 +36,6 @@
 @AutoCodec
 @Immutable
 public final class RegexFilter {
-  public static final ObjectCodec<RegexFilter> CODEC = new RegexFilter_AutoCodec();
-
   // Null inclusion or exclusion pattern means those patterns are not used.
   @Nullable private final Pattern inclusionPattern;
   @Nullable private final Pattern exclusionPattern;
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Path.java b/src/main/java/com/google/devtools/build/lib/vfs/Path.java
index b4542ec..af2b1c7 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/Path.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/Path.java
@@ -61,8 +61,6 @@
 @ThreadSafe
 public class Path
     implements Comparable<Path>, Serializable, SkylarkPrintable, FileType.HasFileType {
-  public static final ObjectCodec<Path> CODEC = new Codec();
-
   private static FileSystem fileSystemForSerialization;
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index 9f70919..72699a1 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -66,8 +66,6 @@
   private final String path;
   private final int driveStrLength; // 0 for relative paths, 1 on Unix, 3 on Windows
 
-  public static final ObjectCodec<PathFragment> CODEC = new PathFragmentCodec();
-
   /** Creates a new normalized path fragment. */
   public static PathFragment create(String path) {
     int normalizationLevel = OS.needsToNormalize(path);
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Root.java b/src/main/java/com/google/devtools/build/lib/vfs/Root.java
index c23dbeb..b39eb2e 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/Root.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/Root.java
@@ -35,8 +35,6 @@
  */
 public abstract class Root implements Comparable<Root>, Serializable {
 
-  public static final ObjectCodec<Root> CODEC = new RootCodec();
-
   /** Constructs a root from a path. */
   public static Root fromPath(Path path) {
     return new PathRoot(path);
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java b/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java
index bbc89a9..aa7a1f4 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java
@@ -14,7 +14,6 @@
 package com.google.devtools.build.lib.vfs;
 
 import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import java.io.Serializable;
 import java.util.Objects;
@@ -31,9 +30,6 @@
  */
 @AutoCodec
 public class RootedPath implements Serializable {
-
-  public static final ObjectCodec<RootedPath> CODEC = new RootedPath_AutoCodec();
-
   private final Root root;
   private final PathFragment rootRelativePath;