Add a type variable to SkylarkRuleContext in order to use the correct subtype of ConstraintValueInfoApi.
The use of the new constraint will be in a future change.
Part of the work on #10368.
PiperOrigin-RevId: 285408832
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 9858053..875cf24 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -734,6 +734,7 @@
         ":testing-support-rules",
         ":util",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/analysis/platform",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 0e94497..8d9ba30 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -50,6 +50,7 @@
 import com.google.devtools.build.lib.analysis.config.HostTransition;
 import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
 import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
@@ -109,7 +110,7 @@
  * object and makes it impossible to accidentally use this object where it's not supposed to be used
  * (such attempts will result in {@link EvalException}s).
  */
-public final class SkylarkRuleContext implements SkylarkRuleContextApi {
+public final class SkylarkRuleContext implements SkylarkRuleContextApi<ConstraintValueInfo> {
 
   public static final Function<Attribute, Object> ATTRIBUTE_VALUE_EXTRACTOR_FOR_ASPECT =
       new Function<Attribute, Object>() {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
index 41abeca..e80cd5c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
@@ -16,6 +16,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -34,7 +35,7 @@
 import javax.annotation.Nullable;
 
 /** Helper functions for Starlark to access coverage-related infrastructure. */
-public class CoverageCommon implements CoverageCommonApi<SkylarkRuleContext> {
+public class CoverageCommon implements CoverageCommonApi<ConstraintValueInfo, SkylarkRuleContext> {
 
   @Override
   @SuppressWarnings("unchecked") // Casting extensions param is verified by Starlark interpreter.
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
index 8edcef9..7ce69c8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
@@ -16,6 +16,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
 import com.google.devtools.build.lib.events.Location;
@@ -48,6 +49,7 @@
     implements BazelCcModuleApi<
         SkylarkActionFactory,
         Artifact,
+        ConstraintValueInfo,
         SkylarkRuleContext,
         CcToolchainProvider,
         FeatureConfigurationForStarlark,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
index a1a2843..c707012 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
@@ -51,6 +51,7 @@
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/go",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/build/skyframe",
         "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 2bd4929..65d8990 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -24,6 +24,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
@@ -92,6 +93,7 @@
         CcLinkingContext,
         LibraryToLink,
         CcToolchainVariables,
+        ConstraintValueInfo,
         SkylarkRuleContext,
         CcToolchainConfigInfo,
         CcCompilationOutputs> {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java
index 0ea3b08..4b563d7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/GoogleLegacyStubs.java
@@ -35,6 +35,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoConfigurationApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoContextInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoPackageInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.Depset;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Printer;
@@ -52,7 +53,8 @@
   private static class WrapCcHelper
       implements WrapCcHelperApi<
           FeatureConfigurationApi,
-          SkylarkRuleContextApi,
+          ConstraintValueInfoApi,
+          SkylarkRuleContextApi<ConstraintValueInfoApi>,
           CcToolchainProviderApi<FeatureConfigurationApi>,
           CompilationInfoApi,
           FileApi,
@@ -61,20 +63,21 @@
 
     @Override
     public FeatureConfigurationApi skylarkGetFeatureConfiguration(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain)
         throws EvalException, InterruptedException {
       return null;
     }
 
     @Override
-    public Depset skylarkCollectTransitiveSwigIncludes(SkylarkRuleContextApi skylarkRuleContext) {
+    public Depset skylarkCollectTransitiveSwigIncludes(
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
       return null;
     }
 
     @Override
     public CompilationInfoApi skylarkCreateCompileActions(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         FeatureConfigurationApi featureConfiguration,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
         FileApi ccFile,
@@ -86,21 +89,22 @@
     }
 
     @Override
-    public String skylarkGetMangledTargetName(SkylarkRuleContextApi skylarkRuleContext)
+    public String skylarkGetMangledTargetName(
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext)
         throws EvalException, InterruptedException {
       return null;
     }
 
     @Override
     public WrapCcIncludeProviderApi getWrapCcIncludeProvider(
-        SkylarkRuleContextApi skylarkRuleContext, Depset swigIncludes)
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, Depset swigIncludes)
         throws EvalException, InterruptedException {
       return null;
     }
 
     @Override
     public void registerSwigAction(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
         FeatureConfigurationApi featureConfiguration,
         CcCompilationContextApi wrapperCcCompilationContext,
@@ -125,7 +129,8 @@
   public static class PyWrapCcHelper extends WrapCcHelper
       implements PyWrapCcHelperApi<
           FileApi,
-          SkylarkRuleContextApi,
+          ConstraintValueInfoApi,
+          SkylarkRuleContextApi<ConstraintValueInfoApi>,
           CcInfoApi,
           FeatureConfigurationApi,
           CcToolchainProviderApi<FeatureConfigurationApi>,
@@ -134,25 +139,26 @@
           WrapCcIncludeProviderApi> {
 
     @Override
-    public Sequence<String> getPyExtensionLinkopts(SkylarkRuleContextApi skylarkRuleContext) {
+    public Sequence<String> getPyExtensionLinkopts(
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
       return null;
     }
 
     @Override
     public Depset getTransitivePythonSources(
-        SkylarkRuleContextApi skylarkRuleContext, FileApi pyFile) {
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, FileApi pyFile) {
       return null;
     }
 
     @Override
     public RunfilesApi getPythonRunfiles(
-        SkylarkRuleContextApi skylarkRuleContext, Depset filesToBuild) {
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, Depset filesToBuild) {
       return null;
     }
 
     @Override
     public PyWrapCcInfoApi getPyWrapCcInfo(
-        SkylarkRuleContextApi skylarkRuleContext, CcInfoApi ccInfo) {
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, CcInfoApi ccInfo) {
       return null;
     }
   }
@@ -164,7 +170,8 @@
   public static class GoWrapCcHelper extends WrapCcHelper
       implements GoWrapCcHelperApi<
           FileApi,
-          SkylarkRuleContextApi,
+          ConstraintValueInfoApi,
+          SkylarkRuleContextApi<ConstraintValueInfoApi>,
           CcInfoApi,
           FeatureConfigurationApi,
           CcToolchainProviderApi<FeatureConfigurationApi>,
@@ -177,7 +184,8 @@
           WrapCcIncludeProviderApi> {
 
     @Override
-    public RunfilesApi skylarkGetGoRunfiles(SkylarkRuleContextApi skylarkRuleContext) {
+    public RunfilesApi skylarkGetGoRunfiles(
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
       return null;
     }
 
@@ -188,7 +196,7 @@
 
     @Override
     public GoContextInfoApi skylarkCollectTransitiveGoContextGopkg(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         FileApi export,
         FileApi pkg,
         FileApi gopkg,
@@ -199,19 +207,20 @@
 
     @Override
     public GoWrapCcInfoApi getGoWrapCcInfo(
-        SkylarkRuleContextApi skylarkRuleContext, CcInfoApi ccInfo) {
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, CcInfoApi ccInfo) {
       return null;
     }
 
     @Override
     public GoCcLinkParamsInfoApi getGoCcLinkParamsProvider(
-        SkylarkRuleContextApi ruleContext, CcLinkingContextApi<FileApi> ccLinkingContext) {
+        SkylarkRuleContextApi<ConstraintValueInfoApi> ruleContext,
+        CcLinkingContextApi<FileApi> ccLinkingContext) {
       return null;
     }
 
     @Override
     public Tuple<FileApi> createGoCompileActions(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
         Sequence<?> srcs, // <FileApi>
         Sequence<?> deps /* <TransitiveInfoCollectionApi> */) {
@@ -220,7 +229,7 @@
 
     @Override
     public Tuple<FileApi> createGoCompileActionsGopkg(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
         Sequence<?> srcs, // <FileApi>
         Sequence<?> deps /* <TransitiveInfoCollectionApi> */) {
@@ -229,7 +238,7 @@
 
     @Override
     public GoPackageInfoApi createTransitiveGopackageInfo(
-        SkylarkRuleContextApi skylarkRuleContext,
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
         FileApi skylarkGopkg,
         FileApi export,
         FileApi swigOutGo) {
@@ -238,7 +247,7 @@
 
     @Override
     public Depset /*<FileApi>*/ getGopackageFilesForStarlark(
-        SkylarkRuleContextApi skylarkRuleContext, FileApi skylarkGopkg) {
+        SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, FileApi skylarkGopkg) {
       return null;
     }
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index ce6c6f9..1fe93ca 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -16,6 +16,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.PlatformOptions;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
@@ -39,6 +40,7 @@
         JavaInfo,
         JavaToolchainProvider,
         JavaRuntimeInfo,
+        ConstraintValueInfo,
         SkylarkRuleContext,
         SkylarkActionFactory> {
   private final JavaSemantics javaSemantics;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
index 6d4b5a5..f74dea9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoSkylarkCommon.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
 import com.google.devtools.build.lib.rules.java.JavaInfo;
@@ -33,7 +34,8 @@
 
 /** A class that exposes Java common methods for proto compilation. */
 public class JavaProtoSkylarkCommon
-    implements JavaProtoCommonApi<Artifact, SkylarkRuleContext, ConfiguredTarget> {
+    implements JavaProtoCommonApi<
+        Artifact, ConstraintValueInfo, SkylarkRuleContext, ConfiguredTarget> {
   @Override
   public void createProtoCompileAction(
       SkylarkRuleContext skylarkRuleContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
index b93aaad..f4d502e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
 import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.events.Location;
@@ -39,7 +40,6 @@
 import com.google.devtools.build.lib.rules.apple.XcodeVersionProperties;
 import com.google.devtools.build.lib.rules.objc.AppleBinary.AppleBinaryOutput;
 import com.google.devtools.build.lib.rules.objc.ObjcProvider.Key;
-import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleCommonApi;
 import com.google.devtools.build.lib.syntax.Depset;
@@ -54,7 +54,13 @@
 
 /** A class that exposes apple rule implementation internals to skylark. */
 public class AppleSkylarkCommon
-    implements AppleCommonApi<Artifact, ObjcProvider, XcodeConfigInfo, ApplePlatform> {
+    implements AppleCommonApi<
+        Artifact,
+        ConstraintValueInfo,
+        SkylarkRuleContext,
+        ObjcProvider,
+        XcodeConfigInfo,
+        ApplePlatform> {
 
   @VisibleForTesting
   public static final String BAD_KEY_ERROR = "Argument %s not a recognized key, 'providers',"
@@ -215,12 +221,11 @@
 
   @Override
   public StructImpl linkMultiArchBinary(
-      SkylarkRuleContextApi skylarkRuleContextApi,
+      SkylarkRuleContext skylarkRuleContext,
       Sequence<?> extraLinkopts,
       Sequence<?> extraLinkInputs,
       StarlarkThread thread)
       throws EvalException, InterruptedException {
-    SkylarkRuleContext skylarkRuleContext = (SkylarkRuleContext) skylarkRuleContextApi;
     try {
       RuleContext ruleContext = skylarkRuleContext.getRuleContext();
       AppleBinaryOutput appleBinaryOutput =
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
index eca673f..4fa981a 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.platform.ToolchainContextApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
@@ -53,7 +54,8 @@
             + " associated function. See the <a"
             + " href='../rules.$DOC_EXT#implementation-function'>Rules page</a> for more "
             + "information.")
-public interface SkylarkRuleContextApi extends StarlarkValue {
+public interface SkylarkRuleContextApi<ConstraintValueT extends ConstraintValueInfoApi>
+    extends StarlarkValue {
 
   String DOC_NEW_FILE_TAIL =
       "Does not actually create a file on the file system, just declares that some action will do"
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java
index 139d8dd..c9ed78a 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java
@@ -22,9 +22,9 @@
  */
 public class AppleBootstrap implements Bootstrap {
 
-  private final AppleCommonApi<?, ?, ?, ?> appleCommon;
+  private final AppleCommonApi<?, ?, ?, ?, ?, ?> appleCommon;
 
-  public AppleBootstrap(AppleCommonApi<?, ?, ?, ?> appleCommon) {
+  public AppleBootstrap(AppleCommonApi<?, ?, ?, ?, ?, ?> appleCommon) {
     this.appleCommon = appleCommon;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java
index d8b64ce..5bce841 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleCommonApi.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleStaticLibraryInfoApi.AppleStaticLibraryInfoProvider;
 import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -38,6 +39,8 @@
     doc = "Functions for Starlark to access internals of the apple rule implementations.")
 public interface AppleCommonApi<
         FileApiT extends FileApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         ObjcProviderApiT extends ObjcProviderApi<?>,
         XcodeConfigInfoApiT extends XcodeConfigInfoApi<?, ?>,
         ApplePlatformApiT extends ApplePlatformApi>
@@ -361,7 +364,7 @@
       useStarlarkThread = true)
   // TODO(b/70937317): Iterate on, improve, and solidify this API.
   StructApi linkMultiArchBinary(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextT skylarkRuleContext,
       Sequence<?> extraLinkopts, // <String> expected.
       Sequence<?> extraLinkInputs, // <? extends FileApi> expected.
       StarlarkThread thread)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/BUILD
index eaa26ec..13372c3 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/BUILD
@@ -25,6 +25,7 @@
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
index dfb166e..0ec433a 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -36,7 +37,8 @@
 public interface BazelCcModuleApi<
         SkylarkActionFactoryT extends SkylarkActionFactoryApi,
         FileT extends FileApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         CcToolchainProviderT extends CcToolchainProviderApi<FeatureConfigurationT>,
         FeatureConfigurationT extends FeatureConfigurationApi,
         CompilationContextT extends CcCompilationContextApi,
@@ -57,6 +59,7 @@
         LinkingContextT,
         LibraryToLinkT,
         CcToolchainVariablesT,
+        ConstraintValueT,
         SkylarkRuleContextT,
         CcToolchainConfigInfoT,
         CompilationOutputsT> {
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java
index 2909131..09c160b 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java
@@ -19,6 +19,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.Bootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.FlagGuardedValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
@@ -37,15 +38,16 @@
           ? extends CcLinkingContextApi<? extends FileApi>,
           ? extends LibraryToLinkApi<? extends FileApi>,
           ? extends CcToolchainVariablesApi,
-          ? extends SkylarkRuleContextApi,
+          ? extends ConstraintValueInfoApi,
+          ? extends SkylarkRuleContextApi<? extends ConstraintValueInfoApi>,
           ? extends CcToolchainConfigInfoApi,
           ? extends CcCompilationOutputsApi<? extends FileApi>>
       ccModule;
 
   private final CcInfoApi.Provider ccInfoProvider;
   private final CcToolchainConfigInfoApi.Provider ccToolchainConfigInfoProvider;
-  private final PyWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?> pyWrapCcHelper;
-  private final GoWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?> goWrapCcHelper;
+  private final PyWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?, ?> pyWrapCcHelper;
+  private final GoWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?> goWrapCcHelper;
   private final PyWrapCcInfoApi.Provider pyWrapCcInfoProvider;
   private final PyCcLinkParamsProviderApi.Provider pyCcLinkInfoParamsInfoProvider;
 
@@ -61,14 +63,15 @@
               ? extends CcLinkingContextApi<? extends FileApi>,
               ? extends LibraryToLinkApi<? extends FileApi>,
               ? extends CcToolchainVariablesApi,
-              ? extends SkylarkRuleContextApi,
+              ? extends ConstraintValueInfoApi,
+              ? extends SkylarkRuleContextApi<? extends ConstraintValueInfoApi>,
               ? extends CcToolchainConfigInfoApi,
               ? extends CcCompilationOutputsApi<? extends FileApi>>
           ccModule,
       CcInfoApi.Provider ccInfoProvider,
       CcToolchainConfigInfoApi.Provider ccToolchainConfigInfoProvider,
-      PyWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?> pyWrapCcHelper,
-      GoWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?> goWrapCcHelper,
+      PyWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?, ?> pyWrapCcHelper,
+      GoWrapCcHelperApi<?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?> goWrapCcHelper,
       PyWrapCcInfoApi.Provider pyWrapCcInfoProvider,
       PyCcLinkParamsProviderApi.Provider pyCcLinkInfoParamsInfoProvider) {
     this.ccModule = ccModule;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
index a5bdf32..d21d881 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -48,7 +49,8 @@
         LinkingContextT extends CcLinkingContextApi<?>,
         LibraryToLinkT extends LibraryToLinkApi<FileT>,
         CcToolchainVariablesT extends CcToolchainVariablesApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         CcToolchainConfigInfoT extends CcToolchainConfigInfoApi,
         CompilationOutputsT extends CcCompilationOutputsApi<FileT>>
     extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java
index cded84b..24d1b35 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/GoWrapCcHelperApi.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoConfigurationApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoContextInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoPackageInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -44,7 +45,8 @@
     category = SkylarkModuleCategory.TOP_LEVEL_TYPE)
 public interface GoWrapCcHelperApi<
         FileT extends FileApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         CcInfoT extends CcInfoApi,
         FeatureConfigurationT extends FeatureConfigurationApi,
         CcToolchainProviderT extends CcToolchainProviderApi<FeatureConfigurationT>,
@@ -57,6 +59,7 @@
         WrapCcIncludeProviderT extends WrapCcIncludeProviderApi>
     extends WrapCcHelperApi<
         FeatureConfigurationT,
+        ConstraintValueT,
         SkylarkRuleContextT,
         CcToolchainProviderT,
         CompilationInfoT,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java
index 73b2157..5800034 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/PyWrapCcHelperApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.RunfilesApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -39,7 +40,8 @@
     category = SkylarkModuleCategory.TOP_LEVEL_TYPE)
 public interface PyWrapCcHelperApi<
         FileT extends FileApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         CcInfoT extends CcInfoApi,
         FeatureConfigurationT extends FeatureConfigurationApi,
         CcToolchainProviderT extends CcToolchainProviderApi<FeatureConfigurationT>,
@@ -48,6 +50,7 @@
         WrapCcIncludeProviderT extends WrapCcIncludeProviderApi>
     extends WrapCcHelperApi<
         FeatureConfigurationT,
+        ConstraintValueT,
         SkylarkRuleContextT,
         CcToolchainProviderT,
         CompilationInfoT,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java
index d5782c2..9cd2edf 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/WrapCcHelperApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.FilesToRunProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -37,7 +38,8 @@
 @SkylarkModule(name = "WrapCcHelperDoNotUse", doc = "", documented = false)
 public interface WrapCcHelperApi<
         FeatureConfigurationT extends FeatureConfigurationApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         CcToolchainProviderT extends CcToolchainProviderApi<FeatureConfigurationT>,
         CompilationInfoT extends CompilationInfoApi,
         FileT extends FileApi,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
index f5fdee3..87e8a52 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
@@ -23,15 +23,15 @@
  */
 public class JavaBootstrap implements Bootstrap {
 
-  private final JavaCommonApi<?, ?, ?, ?, ?, ?> javaCommonApi;
+  private final JavaCommonApi<?, ?, ?, ?, ?, ?, ?> javaCommonApi;
   private final JavaInfoProviderApi javaInfoProviderApi;
-  private final JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi;
+  private final JavaProtoCommonApi<?, ?, ?, ?> javaProtoCommonApi;
   private final JavaCcLinkParamsProviderApi.Provider<?> javaCcLinkParamsProviderApiProvider;
 
   public JavaBootstrap(
-      JavaCommonApi<?, ?, ?, ?, ?, ?> javaCommonApi,
+      JavaCommonApi<?, ?, ?, ?, ?, ?, ?> javaCommonApi,
       JavaInfoProviderApi javaInfoProviderApi,
-      JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi,
+      JavaProtoCommonApi<?, ?, ?, ?> javaProtoCommonApi,
       JavaCcLinkParamsProviderApi.Provider<?> javaCcLinkParamsProviderApiProvider) {
     this.javaCommonApi = javaCommonApi;
     this.javaInfoProviderApi = javaInfoProviderApi;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
index 5e97471..bbefa1c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -40,7 +41,8 @@
         JavaInfoT extends JavaInfoApi<FileT>,
         JavaToolchainT extends JavaToolchainSkylarkApiProviderApi,
         JavaRuntimeT extends JavaRuntimeInfoApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         SkylarkActionFactoryT extends SkylarkActionFactoryApi>
     extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaProtoCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaProtoCommonApi.java
index f4647c2..af86838 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaProtoCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaProtoCommonApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -27,7 +28,8 @@
 @SkylarkModule(name = "java_proto_common", doc = "Helper class for Java proto compilation.")
 public interface JavaProtoCommonApi<
         FileT extends FileApi,
-        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        ConstraintValueT extends ConstraintValueInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi<ConstraintValueT>,
         TransitiveInfoCollectionT extends TransitiveInfoCollectionApi>
     extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD
index 65bd2c2..bdaa681 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/BUILD
@@ -27,6 +27,7 @@
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//third_party:guava",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
index 9e86357..bd605d6 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
@@ -16,6 +16,7 @@
 
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -27,7 +28,9 @@
 @SkylarkModule(
     name = "coverage_common",
     doc = "Helper functions to access coverage-related infrastructure.")
-public interface CoverageCommonApi<RuleContextT extends SkylarkRuleContextApi>
+public interface CoverageCommonApi<
+        ConstraintValueT extends ConstraintValueInfoApi,
+        RuleContextT extends SkylarkRuleContextApi<ConstraintValueT>>
     extends StarlarkValue {
 
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java
index 00c8356..0b5b736 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java
@@ -25,13 +25,13 @@
 public class TestingBootstrap implements Bootstrap {
 
   private final TestingModuleApi testingModule;
-  private final CoverageCommonApi<?> coverageCommon;
+  private final CoverageCommonApi<?, ?> coverageCommon;
   private final AnalysisFailureInfoProviderApi analysisFailureInfoProvider;
   private final AnalysisTestResultInfoProviderApi testResultInfoProvider;
 
   public TestingBootstrap(
       TestingModuleApi testingModule,
-      CoverageCommonApi<?> coverageCommon,
+      CoverageCommonApi<?, ?> coverageCommon,
       AnalysisFailureInfoProviderApi analysisFailureInfoProvider,
       AnalysisTestResultInfoProviderApi testResultInfoProvider) {
     this.testingModule = testingModule;
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
index d817e17..0a2d946 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
@@ -20,6 +20,7 @@
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
         "//third_party:guava",
     ],
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
index 8beca68..a660494 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
@@ -29,6 +29,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.apple.XcodeConfigInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -41,7 +42,12 @@
 /** Fake implementation of {@link AppleCommonApi}. */
 public class FakeAppleCommon
     implements AppleCommonApi<
-        FileApi, ObjcProviderApi<?>, XcodeConfigInfoApi<?, ?>, ApplePlatformApi> {
+        FileApi,
+        ConstraintValueInfoApi,
+        SkylarkRuleContextApi<ConstraintValueInfoApi>,
+        ObjcProviderApi<?>,
+        XcodeConfigInfoApi<?, ?>,
+        ApplePlatformApi> {
 
   @Override
   public AppleToolchainApi<?> getAppleToolchain() {
@@ -115,7 +121,7 @@
 
   @Override
   public StructApi linkMultiArchBinary(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       Sequence<?> extraLinkopts,
       Sequence<?> extraLinkInputs,
       StarlarkThread thread) {
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD
index 6b02d44..8242371 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD
@@ -22,6 +22,7 @@
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/go",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
         "//third_party:guava",
     ],
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
index a0d76c2..7264f4b 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
@@ -33,6 +33,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.FeatureConfigurationApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkerInputApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.Dict;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
@@ -46,7 +47,8 @@
     implements BazelCcModuleApi<
         SkylarkActionFactoryApi,
         FileApi,
-        SkylarkRuleContextApi,
+        ConstraintValueInfoApi,
+        SkylarkRuleContextApi<ConstraintValueInfoApi>,
         CcToolchainProviderApi<FeatureConfigurationApi>,
         FeatureConfigurationApi,
         CcCompilationContextApi,
@@ -214,7 +216,8 @@
   }
 
   @Override
-  public boolean isCcToolchainResolutionEnabled(SkylarkRuleContextApi ruleContext) {
+  public boolean isCcToolchainResolutionEnabled(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> context) {
     return false;
   }
 
@@ -287,7 +290,7 @@
 
   @Override
   public CcToolchainConfigInfoApi ccToolchainConfigInfoFromSkylark(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       Sequence<?> features,
       Sequence<?> actionConfigs,
       Sequence<?> artifactNamePatterns,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
index c18acbb..adf110f 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
@@ -31,6 +31,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoConfigurationApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoContextInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.go.GoPackageInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.Depset;
 import com.google.devtools.build.lib.syntax.Sequence;
 import com.google.devtools.build.lib.syntax.Tuple;
@@ -39,7 +40,8 @@
 public class FakeGoWrapCcHelper
     implements GoWrapCcHelperApi<
         FileApi,
-        SkylarkRuleContextApi,
+        ConstraintValueInfoApi,
+        SkylarkRuleContextApi<ConstraintValueInfoApi>,
         CcInfoApi,
         FeatureConfigurationApi,
         CcToolchainProviderApi<FeatureConfigurationApi>,
@@ -52,7 +54,8 @@
         WrapCcIncludeProviderApi> {
 
   @Override
-  public RunfilesApi skylarkGetGoRunfiles(SkylarkRuleContextApi skylarkRuleContext) {
+  public RunfilesApi skylarkGetGoRunfiles(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
     return null;
   }
 
@@ -63,7 +66,7 @@
 
   @Override
   public GoContextInfoApi skylarkCollectTransitiveGoContextGopkg(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       FileApi export,
       FileApi pkg,
       FileApi gopkg,
@@ -74,19 +77,20 @@
 
   @Override
   public GoWrapCcInfoApi getGoWrapCcInfo(
-      SkylarkRuleContextApi skylarkRuleContext, CcInfoApi ccInfo) {
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, CcInfoApi ccInfo) {
     return null;
   }
 
   @Override
   public GoCcLinkParamsInfoApi getGoCcLinkParamsProvider(
-      SkylarkRuleContextApi ruleContext, CcLinkingContextApi<FileApi> ccLinkingContext) {
+      SkylarkRuleContextApi<ConstraintValueInfoApi> ruleContext,
+      CcLinkingContextApi<FileApi> ccLinkingContext) {
     return null;
   }
 
   @Override
   public Tuple<FileApi> createGoCompileActions(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
       Sequence<?> srcs,
       Sequence<?> deps) {
@@ -95,7 +99,7 @@
 
   @Override
   public Tuple<FileApi> createGoCompileActionsGopkg(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchainProvider,
       Sequence<?> srcs,
       Sequence<?> deps) {
@@ -104,7 +108,7 @@
 
   @Override
   public GoPackageInfoApi createTransitiveGopackageInfo(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       FileApi skylarkGopkg,
       FileApi export,
       FileApi swigOutGo) {
@@ -119,7 +123,7 @@
 
   @Override
   public FeatureConfigurationApi skylarkGetFeatureConfiguration(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain) {
     return null;
   }
@@ -131,7 +135,7 @@
 
   @Override
   public CompilationInfoApi skylarkCreateCompileActions(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       FeatureConfigurationApi featureConfiguration,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
       FileApi ccFile,
@@ -154,7 +158,7 @@
 
   @Override
   public void registerSwigAction(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
       FeatureConfigurationApi featureConfiguration,
       CcCompilationContextApi wrapperCcCompilationContext,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
index 2c9ffcb..4a6e082 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyWrapCcHelperApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyWrapCcInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.WrapCcIncludeProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.Depset;
 import com.google.devtools.build.lib.syntax.Sequence;
 
@@ -32,7 +33,8 @@
 public class FakePyWrapCcHelper
     implements PyWrapCcHelperApi<
         FileApi,
-        SkylarkRuleContextApi,
+        ConstraintValueInfoApi,
+        SkylarkRuleContextApi<ConstraintValueInfoApi>,
         CcInfoApi,
         FeatureConfigurationApi,
         CcToolchainProviderApi<FeatureConfigurationApi>,
@@ -41,42 +43,45 @@
         WrapCcIncludeProviderApi> {
 
   @Override
-  public Sequence<String> getPyExtensionLinkopts(SkylarkRuleContextApi skylarkRuleContext) {
+  public Sequence<String> getPyExtensionLinkopts(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
     return null;
   }
 
   @Override
   public Depset getTransitivePythonSources(
-      SkylarkRuleContextApi skylarkRuleContext, FileApi pyFile) {
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, FileApi pyFile) {
     return null;
   }
 
   @Override
   public RunfilesApi getPythonRunfiles(
-      SkylarkRuleContextApi skylarkRuleContext, Depset filesToBuild) {
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, Depset filesToBuild) {
     return null;
   }
 
   @Override
   public PyWrapCcInfoApi getPyWrapCcInfo(
-      SkylarkRuleContextApi skylarkRuleContext, CcInfoApi ccInfo) {
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, CcInfoApi ccInfo) {
     return null;
   }
 
   @Override
   public FeatureConfigurationApi skylarkGetFeatureConfiguration(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain) {
     return null;
   }
 
   @Override
-  public Depset skylarkCollectTransitiveSwigIncludes(SkylarkRuleContextApi skylarkRuleContext) {
+  public Depset skylarkCollectTransitiveSwigIncludes(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
     return null;
   }
 
   @Override
-  public String skylarkGetMangledTargetName(SkylarkRuleContextApi skylarkRuleContext) {
+  public String skylarkGetMangledTargetName(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
     return null;
   }
 
@@ -88,7 +93,7 @@
 
   @Override
   public void registerSwigAction(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
       FeatureConfigurationApi featureConfiguration,
       CcCompilationContextApi wrapperCcCompilationContext,
@@ -106,7 +111,7 @@
 
   @Override
   public CompilationInfoApi skylarkCreateCompileActions(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       FeatureConfigurationApi featureConfiguration,
       CcToolchainProviderApi<FeatureConfigurationApi> ccToolchain,
       FileApi ccFile,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
index 3036d96..47a6d3f 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
@@ -22,6 +22,7 @@
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
         "//third_party:guava",
         "//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
index 3312f8a..1012b5b 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
@@ -23,6 +23,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCommonApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaToolchainSkylarkApiProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.Depset;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Sequence;
@@ -37,7 +38,8 @@
         FakeJavaInfo,
         FakeJavaToolchainSkylarkApiProviderApi,
         FakeJavaRuntimeInfoApi,
-        SkylarkRuleContextApi,
+        ConstraintValueInfoApi,
+        SkylarkRuleContextApi<ConstraintValueInfoApi>,
         SkylarkActionFactoryApi> {
 
   @Override
@@ -47,7 +49,7 @@
 
   @Override
   public FakeJavaInfo createJavaCompileAction(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       Sequence<?> sourceJars,
       Sequence<?> sourceFiles,
       FileApi outputJar,
@@ -136,7 +138,8 @@
   }
 
   @Override
-  public boolean isJavaToolchainResolutionEnabled(SkylarkRuleContextApi ruleContext) {
+  public boolean isJavaToolchainResolutionEnabled(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> ruleContext) {
     return false;
   }
 
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
index 5da89f3..f769d41 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
@@ -19,18 +19,25 @@
 import com.google.devtools.build.lib.skylarkbuildapi.core.TransitiveInfoCollectionApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaProtoCommonApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.syntax.EvalException;
 
-/**
- * Fake implementation of {@link JavaProtoCommonApi}.
- */
+/** Fake implementation of {@link JavaProtoCommonApi}. */
 public class FakeJavaProtoCommon
-    implements JavaProtoCommonApi<FileApi, SkylarkRuleContextApi, TransitiveInfoCollectionApi> {
+    implements JavaProtoCommonApi<
+        FileApi,
+        ConstraintValueInfoApi,
+        SkylarkRuleContextApi<ConstraintValueInfoApi>,
+        TransitiveInfoCollectionApi> {
 
   @Override
-  public void createProtoCompileAction(SkylarkRuleContextApi skylarkRuleContext,
-      TransitiveInfoCollectionApi target, FileApi sourceJar, String protoToolchainAttr,
-      String flavour) throws EvalException {}
+  public void createProtoCompileAction(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
+      TransitiveInfoCollectionApi target,
+      FileApi sourceJar,
+      String protoToolchainAttr,
+      String flavour)
+      throws EvalException {}
 
   @Override
   public boolean hasProtoSources(TransitiveInfoCollectionApi target) {
@@ -38,8 +45,9 @@
   }
 
   @Override
-  public JavaInfoApi<FileApi> getRuntimeToolchainProvider(SkylarkRuleContextApi skylarkRuleContext,
-      String protoToolchainAttr) throws EvalException {
+  public JavaInfoApi<FileApi> getRuntimeToolchainProvider(
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, String protoToolchainAttr)
+      throws EvalException {
     return new FakeJavaInfo();
   }
 }
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
index a1dbdeb..e30ca0c 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
@@ -18,6 +18,7 @@
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test",
         "//third_party:guava",
     ],
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
index b2d84b8..9d18026 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
@@ -16,17 +16,20 @@
 
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.test.CoverageCommonApi;
 import com.google.devtools.build.lib.skylarkbuildapi.test.InstrumentedFilesInfoApi;
 import com.google.devtools.build.lib.syntax.Printer;
 import com.google.devtools.build.lib.syntax.Sequence;
 
 /** Fake implementation of {@link CoverageCommonApi}. */
-public class FakeCoverageCommon implements CoverageCommonApi<SkylarkRuleContextApi> {
+public class FakeCoverageCommon
+    implements CoverageCommonApi<
+        ConstraintValueInfoApi, SkylarkRuleContextApi<ConstraintValueInfoApi>> {
 
   @Override
   public InstrumentedFilesInfoApi instrumentedFilesInfo(
-      SkylarkRuleContextApi skylarkRuleContext,
+      SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
       Sequence<?> sourceAttributes,
       Sequence<?> dependencyAttributes,
       Object extensions,