diff --git a/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java b/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java
index 31aaa63..a876bec 100644
--- a/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java
+++ b/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.CallUtils;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -37,12 +38,11 @@
  */
 final class SkylarkDocumentationCollector {
   @SkylarkModule(
-    name = "globals",
-    title = "Globals",
-    category = SkylarkModuleCategory.TOP_LEVEL_TYPE,
-    doc = "Objects, functions and modules registered in the global environment."
-  )
-  private static final class TopLevelModule {}
+      name = "globals",
+      title = "Globals",
+      category = SkylarkModuleCategory.TOP_LEVEL_TYPE,
+      doc = "Objects, functions and modules registered in the global environment.")
+  private static final class TopLevelModule implements SkylarkValue {}
 
   private SkylarkDocumentationCollector() {}
 
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 5431c8dd..c7dec59 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -1,4 +1,5 @@
 load("@rules_java//java:defs.bzl", "java_binary", "java_library")
+load(":merge_licenses.bzl", "merge_licenses")
 
 # Description:
 #   Main Java code for Bazel
@@ -6,8 +7,6 @@
     default_visibility = ["//src:__subpackages__"],
 )
 
-load(":merge_licenses.bzl", "merge_licenses")
-
 # Generate list of all srcs via:
 # bazel query 'filter("srcs", kind("filegroup rule", //src/main/java/com/google/devtools/build/lib/...))' | sort | sed -e "s/^/\"/" | sed -e "s/$/\",/" | fgrep -v "build/lib:srcs"
 filegroup(
@@ -399,6 +398,7 @@
     ],
     deps = [
         ":skylark_semantics",
+        "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//third_party:jsr305",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
index 26df081..e6a1f9e 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
@@ -34,7 +34,7 @@
 import java.util.Set;
 
 /** A global library of Starlark functions which are available only when evaluating BUILD files. */
-@SkylarkGlobalLibrary()
+@SkylarkGlobalLibrary
 class StarlarkBuildLibrary {
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
index 025f749..9dddcc0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
@@ -27,6 +27,7 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import java.util.List;
@@ -35,7 +36,7 @@
 /** Marks configured targets that are able to supply message bundles to their dependents. */
 @AutoCodec
 @Immutable
-public final class MessageBundleInfo extends NativeInfo {
+public final class MessageBundleInfo extends NativeInfo implements SkylarkValue {
 
   public static final String SKYLARK_NAME = "MessageBundleInfo";
 
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 1a5feb0..1e5058f 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
@@ -23,6 +23,7 @@
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.common.options.TriState;
 
@@ -35,7 +36,7 @@
     name = "py",
     doc = "A configuration fragment for Python.",
     category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
-public class PythonConfiguration extends BuildConfiguration.Fragment {
+public class PythonConfiguration extends BuildConfiguration.Fragment implements SkylarkValue {
 
   private final PythonVersion version;
   private final PythonVersion defaultVersion;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/BuildConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/BuildConfigurationApi.java
index c445eb9..71ee936 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/BuildConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/BuildConfigurationApi.java
@@ -18,16 +18,17 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Interface for a configuration object which holds information about the build environment. */
 @SkylarkModule(
     name = "configuration",
     category = SkylarkModuleCategory.BUILTIN,
-    doc = "This object holds information about the environment in which the build is running. See "
-        + "the <a href='../rules.$DOC_EXT#configurations'>Rules page</a> for more on the general "
-        + "concept of configurations."
-)
-public interface BuildConfigurationApi {
+    doc =
+        "This object holds information about the environment in which the build is running. See"
+            + " the <a href='../rules.$DOC_EXT#configurations'>Rules page</a> for more on the"
+            + " general concept of configurations.")
+public interface BuildConfigurationApi extends SkylarkValue {
 
   @SkylarkCallable(name = "bin_dir", structField = true, documented = false)
   @Deprecated
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileProviderApi.java
index da52412..c645e58 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileProviderApi.java
@@ -18,13 +18,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** A representation of the concept "this builds these files". */
 @SkylarkModule(
     name = "file_provider",
     doc = "An interface for rules that provide files.",
     category = SkylarkModuleCategory.PROVIDER)
-public interface FileProviderApi {
+public interface FileProviderApi extends SkylarkValue {
 
   /**
    * Returns the set of files that are the "output" of this rule.
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesToRunProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesToRunProviderApi.java
index 6fb18ea..a55ff00 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesToRunProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesToRunProviderApi.java
@@ -17,11 +17,12 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import javax.annotation.Nullable;
 
 /** Returns information about executables produced by a target and the files needed to run it. */
 @SkylarkModule(name = "FilesToRunProvider", doc = "", category = SkylarkModuleCategory.PROVIDER)
-public interface FilesToRunProviderApi<FileT extends FileApi> {
+public interface FilesToRunProviderApi<FileT extends FileApi> extends SkylarkValue {
 
   @SkylarkCallable(
     name = "executable",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesetEntryApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesetEntryApi.java
index 53bc977..eae1e35 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesetEntryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FilesetEntryApi.java
@@ -15,13 +15,8 @@
 package com.google.devtools.build.lib.skylarkbuildapi;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * A value object used to represent an entry inside a "Fileset" BUILD rule.
- */
-@SkylarkModule(
-    name = "FilesetEntry",
-    doc = "",
-    documented = false)
-public interface FilesetEntryApi {
-}
+/** A value object used to represent an entry inside a "Fileset" BUILD rule. */
+@SkylarkModule(name = "FilesetEntry", doc = "", documented = false)
+public interface FilesetEntryApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FragmentCollectionApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FragmentCollectionApi.java
index c264b01..1401f18 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FragmentCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FragmentCollectionApi.java
@@ -16,6 +16,7 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.ClassObject;
 
 /** Represents a collection of configuration fragments in Skylark. */
@@ -31,4 +32,4 @@
             + "ex:</p><code>ctx.fragments.apple</code></p>"
             + "Note that rules have to declare their required fragments in order to access them "
             + "(see <a href=\"../rules.md#fragments\">here</a>).")
-public interface FragmentCollectionApi extends ClassObject {}
+public interface FragmentCollectionApi extends ClassObject, SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ProtoConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ProtoConfigurationApi.java
index 6082ba8..73f0f9e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ProtoConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/ProtoConfigurationApi.java
@@ -16,14 +16,11 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * A configuration fragment representing protocol buffers.
- */
+/** A configuration fragment representing protocol buffers. */
 @SkylarkModule(
     name = "proto",
     category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT,
-    doc = "A configuration fragment representing protocol buffers."
-)
-public interface ProtoConfigurationApi {
-}
+    doc = "A configuration fragment representing protocol buffers.")
+public interface ProtoConfigurationApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/RunfilesApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/RunfilesApi.java
index cdc9de0..e43073c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/RunfilesApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/RunfilesApi.java
@@ -19,13 +19,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** An interface for a set of runfiles. */
 @SkylarkModule(
     name = "runfiles",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "An interface for a set of runfiles.")
-public interface RunfilesApi {
+public interface RunfilesApi extends SkylarkValue {
 
   @SkylarkCallable(
     name = "files",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkCommandLineApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkCommandLineApi.java
index 2aaeb7a..2d14e41 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkCommandLineApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkCommandLineApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDeprecated;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
@@ -29,7 +30,7 @@
     category = SkylarkModuleCategory.TOP_LEVEL_TYPE,
     doc = "Deprecated. Module for creating memory efficient command lines.")
 @StarlarkDeprecated
-public interface SkylarkCommandLineApi {
+public interface SkylarkCommandLineApi extends SkylarkValue {
 
   @SkylarkCallable(
       name = "join_paths",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
index 228b838..e4c9d0a 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
@@ -19,15 +19,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Runtime;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
-/**
- * Interface for a module with native rule and package helper functions.
- */
+/** Interface for a module with native rule and package helper functions. */
 @SkylarkModule(
     name = "native",
     category = SkylarkModuleCategory.BUILTIN,
@@ -38,9 +37,8 @@
             + "Note that the native module is only available in the loading phase "
             + "(i.e. for macros, not for rule implementations). Attributes will ignore "
             + "<code>None</code> values, and treat them as if the attribute was unset.<br>"
-            + "The following functions are also available:"
-)
-public interface SkylarkNativeModuleApi {
+            + "The following functions are also available:")
+public interface SkylarkNativeModuleApi extends SkylarkValue {
 
   @SkylarkCallable(
       name = "glob",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TargetApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TargetApi.java
index 549e864..9bfdc5a 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TargetApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TargetApi.java
@@ -17,12 +17,11 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * A node in the build dependency graph, identified by a Label.
- */
+/** A node in the build dependency graph, identified by a Label. */
 @SkylarkModule(name = "target", doc = "", documented = false)
-public interface TargetApi {
+public interface TargetApi extends SkylarkValue {
 
   /**
    * Returns the label of this target.  (e.g. "//foo:bar")
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TransitiveInfoCollectionApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TransitiveInfoCollectionApi.java
index 790ac7d..967c4f1 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TransitiveInfoCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TransitiveInfoCollectionApi.java
@@ -18,36 +18,29 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
-/**
- * Interface for a build target.
- */
+/** Interface for a build target. */
 @SkylarkModule(
-  name = "Target",
-  category = SkylarkModuleCategory.BUILTIN,
-  doc =
-      "A BUILD target. It is essentially a <code>struct</code> with the following fields:"
-          + "<ul>"
-          + "<li><h3 id=\"modules.Target.label\">label</h3><code><a class=\"anchor\" "
-          + "href=\"Label.html\">Label</a> Target.label</code><br>The identifier of the "
-          + "target.</li>"
-          + "<li><h3 id=\"modules.Target.files\">files</h3><code><a class=\"anchor\" "
-          + "href=\"depset.html\">depset</a> Target.files </code><br>The set of "
-          + "<a class=\"anchor\" href=\"File.html\">File</a>s produced directly by this "
-          + "target.</li>"
-          + "<li><h3 id=\"modules.Target.aspect_ids\">aspect_ids</h3><code><a class=\"anchor\""
-          + "href=\"list.html\">list</a> Target.aspect_ids </code><br>The list of "
-          + "<a class=\"anchor\" href=\"ctx.html#aspect_id\">aspect_id</a>s applied to this "
-          + "target.</li>"
-          + "<li><h3 id=\"modules.Target.extraproviders\">Extra providers</h3>For rule targets all "
-          + "additional providers provided by this target are accessible as <code>struct</code> "
-          + "fields. These extra providers are defined in the <code>struct</code> returned by the "
-          + "rule implementation function.</li>"
-          + "</ul>"
-)
-public interface TransitiveInfoCollectionApi {
+    name = "Target",
+    category = SkylarkModuleCategory.BUILTIN,
+    doc =
+        "A BUILD target. It is essentially a <code>struct</code> with the following fields:"
+            + "<ul><li><h3 id=\"modules.Target.label\">label</h3><code><a class=\"anchor\""
+            + " href=\"Label.html\">Label</a> Target.label</code><br>The identifier of the "
+            + "target.</li><li><h3 id=\"modules.Target.files\">files</h3><code><a class=\"anchor\""
+            + " href=\"depset.html\">depset</a> Target.files </code><br>The set of <a"
+            + " class=\"anchor\" href=\"File.html\">File</a>s produced directly by this "
+            + "target.</li><li><h3 id=\"modules.Target.aspect_ids\">aspect_ids</h3><code><a"
+            + " class=\"anchor\"href=\"list.html\">list</a> Target.aspect_ids </code><br>The list"
+            + " of <a class=\"anchor\" href=\"ctx.html#aspect_id\">aspect_id</a>s applied to this "
+            + "target.</li><li><h3 id=\"modules.Target.extraproviders\">Extra providers</h3>For"
+            + " rule targets all additional providers provided by this target are accessible as"
+            + " <code>struct</code> fields. These extra providers are defined in the"
+            + " <code>struct</code> returned by the rule implementation function.</li></ul>")
+public interface TransitiveInfoCollectionApi extends SkylarkValue {
 
   @SkylarkCallable(
     name = "output_group",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBinaryDataSettingsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBinaryDataSettingsApi.java
index 3cc126f..92ff890 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBinaryDataSettingsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBinaryDataSettingsApi.java
@@ -14,6 +14,7 @@
 package com.google.devtools.build.lib.skylarkbuildapi.android;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Wraps common settings for working with android binary assets, resources, and manifests. */
 @SkylarkModule(
@@ -24,4 +25,4 @@
             + "Wraps common settings for working with android binary assets, resources, and "
             + "manifest",
     documented = false)
-public interface AndroidBinaryDataSettingsApi {}
+public interface AndroidBinaryDataSettingsApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidConfigurationApi.java
index 404c2ad..363fb69 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidConfigurationApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Configuration fragment for Android rules. */
 @SkylarkModule(
@@ -27,7 +28,7 @@
             + "A configuration fragment for Android.",
     documented = false,
     category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
-public interface AndroidConfigurationApi {
+public interface AndroidConfigurationApi extends SkylarkValue {
 
   @SkylarkCallable(
       name = "android_cpu",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataContextApi.java
index f6bfc56..2a03d90 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataContextApi.java
@@ -14,6 +14,7 @@
 package com.google.devtools.build.lib.skylarkbuildapi.android;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Wraps common tools and settings used for working with Android assets, resources, and manifests.
@@ -26,4 +27,4 @@
             + "Wraps common tools and settings used for working with Android assets, resources, and"
             + " manifests",
     documented = false)
-public interface AndroidDataContextApi {}
+public interface AndroidDataContextApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
index c3a26cf..920778f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
@@ -38,16 +39,17 @@
             + "This API is non-final and subject to change without warning; do not rely on it.",
     documented = false)
 public interface AndroidDataProcessingApi<
-    AndroidDataContextT extends AndroidDataContextApi,
-    TransitiveInfoCollectionT extends TransitiveInfoCollectionApi,
-    FileT extends FileApi,
-    SpecialFileT extends FileApi,
-    AndroidAssetsInfoT extends AndroidAssetsInfoApi<?, ?>,
-    AndroidResourcesInfoT extends AndroidResourcesInfoApi<?, ?, ?>,
-    AndroidManifestInfoT extends AndroidManifestInfoApi<?>,
-    AndroidLibraryAarInfoT extends AndroidLibraryAarInfoApi<?>,
-    AndroidBinaryDataInfoT extends AndroidBinaryDataInfoApi<?>,
-    ValidatedAndroidDataT extends ValidatedAndroidDataApi<?, ?>> {
+        AndroidDataContextT extends AndroidDataContextApi,
+        TransitiveInfoCollectionT extends TransitiveInfoCollectionApi,
+        FileT extends FileApi,
+        SpecialFileT extends FileApi,
+        AndroidAssetsInfoT extends AndroidAssetsInfoApi<?, ?>,
+        AndroidResourcesInfoT extends AndroidResourcesInfoApi<?, ?, ?>,
+        AndroidManifestInfoT extends AndroidManifestInfoApi<?>,
+        AndroidLibraryAarInfoT extends AndroidLibraryAarInfoApi<?>,
+        AndroidBinaryDataInfoT extends AndroidBinaryDataInfoApi<?>,
+        ValidatedAndroidDataT extends ValidatedAndroidDataApi<?, ?>>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "assets_from_deps",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java
index 5ebe825..1049f13 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java
@@ -15,6 +15,7 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Wraps an Android Manifest and provides utilities for working with it */
 @SkylarkModule(
@@ -25,4 +26,4 @@
             + "Wraps an Android Manifest and provides utilities to work with it.",
     documented = false,
     category = SkylarkModuleCategory.PROVIDER)
-public interface AndroidManifestApi {}
+public interface AndroidManifestApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkApiProviderApi.java
index be95a45..4649889 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkApiProviderApi.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import javax.annotation.Nullable;
 
 /**
@@ -38,7 +39,7 @@
             + "provides this struct, accessible as a <code>android</code> field on a "
             + "<a href=\"Target.html\">target</a>.",
     documented = false)
-public interface AndroidSkylarkApiProviderApi<FileT extends FileApi> {
+public interface AndroidSkylarkApiProviderApi<FileT extends FileApi> extends SkylarkValue {
 
   @SkylarkCallable(
       name = "apk",
@@ -152,7 +153,7 @@
               + "it, you will be broken when it is removed."
               + "Provides access to information about Android rules.",
       documented = false)
-  interface IdlInfoApi<FileT extends FileApi> {
+  interface IdlInfoApi<FileT extends FileApi> extends SkylarkValue {
     @SkylarkCallable(
         name = "import_root",
         structField = true,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkCommonApi.java
index 76c6bd1..ab0d5d2 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSkylarkCommonApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
 /** Common utilities for Skylark rules related to Android. */
@@ -28,7 +29,8 @@
             + "you will be broken when it is removed."
             + "Common utilities and functionality related to Android rules.",
     documented = false)
-public interface AndroidSkylarkCommonApi<FileT extends FileApi, JavaInfoT extends JavaInfoApi<?>> {
+public interface AndroidSkylarkCommonApi<FileT extends FileApi, JavaInfoT extends JavaInfoApi<?>>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "create_device_broker_info",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java
index bf9e66a..b7f4f9d 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/DataBindingV2ProviderApi.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import javax.annotation.Nullable;
@@ -49,7 +50,7 @@
           "Do not use this module. It is intended for migration purposes only. If you depend on "
               + "it, you will be broken when it is removed.",
       documented = false)
-  public class LabelJavaPackagePair {
+  public class LabelJavaPackagePair implements SkylarkValue {
 
     private final String label;
     private final String javaPackage;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ParsedAndroidAssetsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ParsedAndroidAssetsApi.java
index f8e772d..1b2b7d1 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ParsedAndroidAssetsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ParsedAndroidAssetsApi.java
@@ -15,6 +15,7 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Parsed Android assets which can be merged together with assets from dependencies. */
 @SkylarkModule(
@@ -25,4 +26,4 @@
             + "Information about the Android assets provided by a rule.",
     documented = false,
     category = SkylarkModuleCategory.PROVIDER)
-public interface ParsedAndroidAssetsApi {}
+public interface ParsedAndroidAssetsApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
index 30fb3a6..3e89181 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import javax.annotation.Nullable;
@@ -31,12 +32,13 @@
     documented = false,
     category = SkylarkModuleCategory.PROVIDER)
 public interface ValidatedAndroidDataApi<
-    FileT extends FileApi,
-    AndroidResourcesInfoT extends
-        AndroidResourcesInfoApi<
-                FileT,
-                ? extends ValidatedAndroidDataApi<FileT, AndroidResourcesInfoT>,
-                ? extends AndroidManifestInfoApi<FileT>>> {
+        FileT extends FileApi,
+        AndroidResourcesInfoT extends
+            AndroidResourcesInfoApi<
+                    FileT,
+                    ? extends ValidatedAndroidDataApi<FileT, AndroidResourcesInfoT>,
+                    ? extends AndroidManifestInfoApi<FileT>>>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "to_provider",
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 7f646f6..5a7c2e6 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
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
@@ -36,10 +37,11 @@
     name = "apple_common",
     doc = "Functions for Starlark to access internals of the apple rule implementations.")
 public interface AppleCommonApi<
-    FileApiT extends FileApi,
-    ObjcProviderApiT extends ObjcProviderApi<?>,
-    XcodeConfigProviderApiT extends XcodeConfigProviderApi<?, ?>,
-    ApplePlatformApiT extends ApplePlatformApi> {
+        FileApiT extends FileApi,
+        ObjcProviderApiT extends ObjcProviderApi<?>,
+        XcodeConfigProviderApiT extends XcodeConfigProviderApi<?, ?>,
+        ApplePlatformApiT extends ApplePlatformApi>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "apple_toolchain",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleConfigurationApi.java
index 8d5e042..8a7a8c6 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleConfigurationApi.java
@@ -18,15 +18,16 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDeprecated;
 
 /** An interface for a configuration type containing info for Apple platforms and tools. */
 @SkylarkModule(
     name = "apple",
     doc = "A configuration fragment for Apple platforms.",
-    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
-)
-public interface AppleConfigurationApi<ApplePlatformTypeApiT extends ApplePlatformTypeApi> {
+    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
+public interface AppleConfigurationApi<ApplePlatformTypeApiT extends ApplePlatformTypeApi>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "ios_cpu",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleToolchainApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleToolchainApi.java
index e097692..14698ea 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleToolchainApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleToolchainApi.java
@@ -17,15 +17,14 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Interface for a utility module involving the Apple toolchain.
- */
+/** Interface for a utility module involving the Apple toolchain. */
 @SkylarkModule(
     name = "apple_toolchain",
-    doc = "Utilities for resolving items from the Apple toolchain."
-)
-public interface AppleToolchainApi<AppleConfigurationApiT extends AppleConfigurationApi<?>> {
+    doc = "Utilities for resolving items from the Apple toolchain.")
+public interface AppleToolchainApi<AppleConfigurationApiT extends AppleConfigurationApi<?>>
+    extends SkylarkValue {
 
   @SkylarkCallable(
     name = "sdk_dir",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/J2ObjcConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/J2ObjcConfigurationApi.java
index 0af2f36..b4be93d 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/J2ObjcConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/J2ObjcConfigurationApi.java
@@ -18,16 +18,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * A configuration fragment for j2objc.
- */
+/** A configuration fragment for j2objc. */
 @SkylarkModule(
     name = "j2objc",
     category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT,
-    doc = "A configuration fragment for j2Objc."
-)
-public interface J2ObjcConfigurationApi {
+    doc = "A configuration fragment for j2Objc.")
+public interface J2ObjcConfigurationApi extends SkylarkValue {
 
   @SkylarkCallable(
       name = "translation_flags",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcConfigurationApi.java
index 1109e45..88e50aa 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/ObjcConfigurationApi.java
@@ -19,17 +19,16 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import javax.annotation.Nullable;
 
-/**
- * A configuration fragment for Objective C.
- */
+/** A configuration fragment for Objective C. */
 @SkylarkModule(
-  name = "objc",
-  category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT,
-  doc = "A configuration fragment for Objective-C."
-)
-public interface ObjcConfigurationApi<ApplePlatformTypeApiT extends ApplePlatformTypeApi> {
+    name = "objc",
+    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT,
+    doc = "A configuration fragment for Objective-C.")
+public interface ObjcConfigurationApi<ApplePlatformTypeApiT extends ApplePlatformTypeApi>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "ios_simulator_device",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/SwiftConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/SwiftConfigurationApi.java
index bfea060..24d5057 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/SwiftConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/SwiftConfigurationApi.java
@@ -18,16 +18,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * A configuration fragment for Swift tools.
- */
+/** A configuration fragment for Swift tools. */
 @SkylarkModule(
     name = "swift",
     doc = "A configuration fragment for Swift tools.",
-    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
-)
-public interface SwiftConfigurationApi {
+    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
+public interface SwiftConfigurationApi extends SkylarkValue {
 
   @SkylarkCallable(
     name = "copts",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java
index 73fee38..7127909 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigSkylarkCommonApi.java
@@ -17,12 +17,13 @@
 import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Helper utility containing functions regarding configurations.ss */
 @SkylarkModule(
     name = "config_common",
     doc = "Functions for Starlark to interact with Blaze's configurability APIs.")
-public interface ConfigSkylarkCommonApi {
+public interface ConfigSkylarkCommonApi extends SkylarkValue {
 
   @SkylarkCallable(
     name = "FeatureFlagInfo",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java
index fb0df89..bda0516 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /**
@@ -28,7 +29,7 @@
     doc =
         "Immutable store of information needed for C++ compilation that is aggregated across "
             + "dependencies.")
-public interface CcCompilationContextApi {
+public interface CcCompilationContextApi extends SkylarkValue {
   @SkylarkCallable(
       name = "defines",
       doc =
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
index fcb1196..fe5b519 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -30,7 +31,7 @@
     category = SkylarkModuleCategory.BUILTIN,
     documented = true,
     doc = "Helper class containing CC compilation outputs.")
-public interface CcCompilationOutputsApi<FileT extends FileApi> {
+public interface CcCompilationOutputsApi<FileT extends FileApi> extends SkylarkValue {
 
   /** @deprecated use {@link #getSkylarkObjects} or {@link #getSkylarkPicObjects}. */
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
index bdba1bc..51fa062 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
@@ -30,7 +31,7 @@
     doc =
         "Immutable store of information needed for C++ linking that is aggregated across "
             + "dependencies.")
-public interface CcLinkingContextApi<FileT extends FileApi> {
+public interface CcLinkingContextApi<FileT extends FileApi> extends SkylarkValue {
   @SkylarkCallable(
       name = "user_link_flags",
       doc = "Returns the list of user link flags passed as strings.",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java
index 71286aa..bae0f35 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Interface for a structured representation of the linking outputs of a C++ rule. */
 @SkylarkModule(
@@ -25,7 +26,7 @@
     category = SkylarkModuleCategory.BUILTIN,
     documented = true,
     doc = "Helper class containing CC compilation outputs.")
-public interface CcLinkingOutputsApi<FileT extends FileApi> {
+public interface CcLinkingOutputsApi<FileT extends FileApi> extends SkylarkValue {
   @SkylarkCallable(
       name = "library_to_link",
       structField = true,
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 542e951..668a934 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
@@ -24,6 +24,7 @@
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Runtime.NoneType;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
@@ -38,18 +39,19 @@
     name = "cc_common",
     doc = "Utilities for C++ compilation, linking, and command line generation.")
 public interface CcModuleApi<
-    SkylarkActionFactoryT extends SkylarkActionFactoryApi,
-    FileT extends FileApi,
-    CcToolchainProviderT extends CcToolchainProviderApi<?>,
-    FeatureConfigurationT extends FeatureConfigurationApi,
-    CompilationContextT extends CcCompilationContextApi,
-    LinkerInputT extends LinkerInputApi<LibraryToLinkT, FileT>,
-    LinkingContextT extends CcLinkingContextApi<?>,
-    LibraryToLinkT extends LibraryToLinkApi<FileT>,
-    CcToolchainVariablesT extends CcToolchainVariablesApi,
-    SkylarkRuleContextT extends SkylarkRuleContextApi,
-    CcToolchainConfigInfoT extends CcToolchainConfigInfoApi,
-    CompilationOutputsT extends CcCompilationOutputsApi<FileT>> {
+        SkylarkActionFactoryT extends SkylarkActionFactoryApi,
+        FileT extends FileApi,
+        CcToolchainProviderT extends CcToolchainProviderApi<?>,
+        FeatureConfigurationT extends FeatureConfigurationApi,
+        CompilationContextT extends CcCompilationContextApi,
+        LinkerInputT extends LinkerInputApi<LibraryToLinkT, FileT>,
+        LinkingContextT extends CcLinkingContextApi<?>,
+        LibraryToLinkT extends LibraryToLinkApi<FileT>,
+        CcToolchainVariablesT extends CcToolchainVariablesApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        CcToolchainConfigInfoT extends CcToolchainConfigInfoApi,
+        CompilationOutputsT extends CcCompilationOutputsApi<FileT>>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "CcToolchainInfo",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcSkylarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcSkylarkApiProviderApi.java
index 79fe8a1..3788c1b 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcSkylarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcSkylarkApiProviderApi.java
@@ -20,19 +20,17 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Object with information about C++ rules. Every C++-related target should provide this.
- */
+/** Object with information about C++ rules. Every C++-related target should provide this. */
 @SkylarkModule(
-  name = "CcSkylarkApiProvider",
-  category = SkylarkModuleCategory.PROVIDER,
-  doc =
-      "Provides access to information about C++ rules.  "
-          + "Every C++-related target provides this struct, accessible as a <code>cc</code> field "
-          + "on <a href=\"Target.html\">target</a>."
-)
-public interface CcSkylarkApiProviderApi<FileT extends FileApi> {
+    name = "CcSkylarkApiProvider",
+    category = SkylarkModuleCategory.PROVIDER,
+    doc =
+        "Provides access to information about C++ rules.  Every C++-related target provides this"
+            + " struct, accessible as a <code>cc</code> field on <a"
+            + " href=\"Target.html\">target</a>.")
+public interface CcSkylarkApiProviderApi<FileT extends FileApi> extends SkylarkValue {
 
   @SkylarkCallable(
       name = "transitive_headers",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcToolchainVariablesApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcToolchainVariablesApi.java
index 2ac30a3..6718b29 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcToolchainVariablesApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcToolchainVariablesApi.java
@@ -16,6 +16,7 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Type encapsulating build variables. */
 @SkylarkModule(
@@ -23,4 +24,4 @@
     documented = false,
     category = SkylarkModuleCategory.BUILTIN,
     doc = "Class encapsulating cc_toolchain variables.")
-public interface CcToolchainVariablesApi {}
+public interface CcToolchainVariablesApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java
index a408159..9dd0594 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java
@@ -17,17 +17,15 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Interface for a helper class containing CC compilation providers.
- */
+/** Interface for a helper class containing CC compilation providers. */
 @SkylarkModule(
     name = "compilation_info",
     documented = false,
     category = SkylarkModuleCategory.BUILTIN,
-    doc = "Helper class containing CC compilation providers."
-)
-public interface CompilationInfoApi {
+    doc = "Helper class containing CC compilation providers.")
+public interface CompilationInfoApi extends SkylarkValue {
   @SkylarkCallable(name = "cc_compilation_outputs", structField = true, documented = false)
   CcCompilationOutputsApi<?> getCcCompilationOutputs();
 
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CppConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CppConfigurationApi.java
index 55f2d43..dd403a1 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CppConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CppConfigurationApi.java
@@ -18,17 +18,16 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 
-/**
- * The C++ configuration fragment.
- */
+/** The C++ configuration fragment. */
 @SkylarkModule(
-  name = "cpp",
-  doc = "A configuration fragment for C++.",
-  category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
-)
-public interface CppConfigurationApi <InvalidConfigurationExceptionT extends Exception> {
+    name = "cpp",
+    doc = "A configuration fragment for C++.",
+    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
+public interface CppConfigurationApi<InvalidConfigurationExceptionT extends Exception>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "copts",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/FeatureConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/FeatureConfigurationApi.java
index a406c6e..c99e7bf 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/FeatureConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/FeatureConfigurationApi.java
@@ -16,10 +16,11 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Class used to construct command lines from CROSSTOOL features. */
 @SkylarkModule(
     name = "FeatureConfiguration",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "Class used to construct command lines from CROSSTOOL features.")
-public interface FeatureConfigurationApi {}
+public interface FeatureConfigurationApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
index 05eac498..1bfc17f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 
 /**
@@ -28,7 +29,7 @@
     name = "LibraryToLink",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "A library the user can link against.")
-public interface LibraryToLinkApi<FileT extends FileApi> {
+public interface LibraryToLinkApi<FileT extends FileApi> extends SkylarkValue {
   @SkylarkCallable(
       name = "objects",
       allowReturnNones = true,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
index 10371d6..a82f769 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkerInputApi.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
@@ -31,7 +32,8 @@
     category = SkylarkModuleCategory.BUILTIN,
     doc = "Either libraries, flags or other files that may be passed to the linker as inputs.")
 public interface LinkerInputApi<
-    LibraryToLinkT extends LibraryToLinkApi<FileT>, FileT extends FileApi> {
+        LibraryToLinkT extends LibraryToLinkApi<FileT>, FileT extends FileApi>
+    extends SkylarkValue {
   @SkylarkCallable(
       name = "owner",
       doc = "Returns the owner of this LinkerInput.",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkingInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkingInfoApi.java
index 3dbc4b4..7cf889c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkingInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LinkingInfoApi.java
@@ -17,17 +17,15 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Helper object containing CC linking info objects.
- */
+/** Helper object containing CC linking info objects. */
 @SkylarkModule(
-  name = "linking_info",
-  documented = false,
-  category = SkylarkModuleCategory.BUILTIN,
-  doc = "Helper class containing CC linking providers."
-)
-public interface LinkingInfoApi {
+    name = "linking_info",
+    documented = false,
+    category = SkylarkModuleCategory.BUILTIN,
+    doc = "Helper class containing CC linking providers.")
+public interface LinkingInfoApi extends SkylarkValue {
 
   @SkylarkCallable(name = "linking_context", structField = true, documented = false)
   CcLinkingContextApi<?> getCcLinkingContext();
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 07c7be6..27eede4 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
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Runtime.NoneType;
 import com.google.devtools.build.lib.syntax.SkylarkList;
@@ -35,13 +36,14 @@
  */
 @SkylarkModule(name = "WrapCcHelperDoNotUse", doc = "", documented = false)
 public interface WrapCcHelperApi<
-    FeatureConfigurationT extends FeatureConfigurationApi,
-    SkylarkRuleContextT extends SkylarkRuleContextApi,
-    CcToolchainProviderT extends CcToolchainProviderApi<FeatureConfigurationT>,
-    CompilationInfoT extends CompilationInfoApi,
-    FileT extends FileApi,
-    CcCompilationContextT extends CcCompilationContextApi,
-    WrapCcIncludeProviderT extends WrapCcIncludeProviderApi> {
+        FeatureConfigurationT extends FeatureConfigurationApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        CcToolchainProviderT extends CcToolchainProviderApi<FeatureConfigurationT>,
+        CompilationInfoT extends CompilationInfoApi,
+        FileT extends FileApi,
+        CcCompilationContextT extends CcCompilationContextApi,
+        WrapCcIncludeProviderT extends WrapCcIncludeProviderApi>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "feature_configuration",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/go/GoConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/go/GoConfigurationApi.java
index 3a72cd3..d896d56 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/go/GoConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/go/GoConfigurationApi.java
@@ -16,10 +16,11 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** A configuration fragment for Go. */
 @SkylarkModule(
     name = "go",
     doc = "A configuration fragment for Go.",
     category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
-public interface GoConfigurationApi {}
+public interface GoConfigurationApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaAnnotationProcessingApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaAnnotationProcessingApi.java
index 5fb7905..6be778c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaAnnotationProcessingApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaAnnotationProcessingApi.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import javax.annotation.Nullable;
 
 /**
@@ -30,7 +31,7 @@
     name = "java_annotation_processing",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "Information about jars that are a result of annotation processing for a Java rule.")
-public interface JavaAnnotationProcessingApi<FileTypeT extends FileApi> {
+public interface JavaAnnotationProcessingApi<FileTypeT extends FileApi> extends SkylarkValue {
 
   @SkylarkCallable(
     name = "enabled",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java
index 31b659d..23295ba 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
@@ -33,7 +34,7 @@
             + "Information about the c++ libraries to be linked into Java targets.",
     documented = true,
     category = SkylarkModuleCategory.PROVIDER)
-public interface JavaCcLinkParamsProviderApi<CcInfoApiT extends CcInfoApi> {
+public interface JavaCcLinkParamsProviderApi<CcInfoApiT extends CcInfoApi> extends SkylarkValue {
   /** Name of this info object. */
   public static String NAME = "JavaCcLinkParamsInfo";
 
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 99d5d90..bdeacba 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
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
@@ -35,12 +36,13 @@
 /** Utilities for Java compilation support in Skylark. */
 @SkylarkModule(name = "java_common", doc = "Utilities for Java compilation support in Starlark.")
 public interface JavaCommonApi<
-    FileT extends FileApi,
-    JavaInfoT extends JavaInfoApi<FileT>,
-    JavaToolchainT extends JavaToolchainSkylarkApiProviderApi,
-    JavaRuntimeT extends JavaRuntimeInfoApi,
-    SkylarkRuleContextT extends SkylarkRuleContextApi,
-    SkylarkActionFactoryT extends SkylarkActionFactoryApi> {
+        FileT extends FileApi,
+        JavaInfoT extends JavaInfoApi<FileT>,
+        JavaToolchainT extends JavaToolchainSkylarkApiProviderApi,
+        JavaRuntimeT extends JavaRuntimeInfoApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        SkylarkActionFactoryT extends SkylarkActionFactoryApi>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "provider",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCompilationInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCompilationInfoProviderApi.java
index b344eef..7127cbe 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCompilationInfoProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCompilationInfoProviderApi.java
@@ -19,6 +19,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /** Info object for compilation information for java rules. */
@@ -26,7 +27,7 @@
     name = "java_compilation_info",
     category = SkylarkModuleCategory.PROVIDER,
     doc = "Provides access to compilation information for Java rules.")
-public interface JavaCompilationInfoProviderApi<FileT extends FileApi> {
+public interface JavaCompilationInfoProviderApi<FileT extends FileApi> extends SkylarkValue {
 
   @SkylarkCallable(name = "javac_options", structField = true, doc = "Options to java compiler.")
   public ImmutableList<String> getJavacOpts();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaConfigurationApi.java
index 7f314cd..78ab970 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaConfigurationApi.java
@@ -19,16 +19,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * A java compiler configuration.
- */
+/** A java compiler configuration. */
 @SkylarkModule(
     name = "java",
     doc = "A java compiler configuration.",
-    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
-)
-public interface JavaConfigurationApi {
+    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
+public interface JavaConfigurationApi extends SkylarkValue {
 
   @SkylarkCallable(name = "default_javac_flags", structField = true,
       doc = "The default flags for the Java compiler.")
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 e06096f..7679b52 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
@@ -20,15 +20,16 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 
-/**
- * Helper class for Java proto compilation.
- */
+/** Helper class for Java proto compilation. */
 @SkylarkModule(name = "java_proto_common", doc = "Helper class for Java proto compilation.")
-public interface JavaProtoCommonApi<FileT extends FileApi,
-    SkylarkRuleContextT extends SkylarkRuleContextApi,
-    TransitiveInfoCollectionT extends TransitiveInfoCollectionApi> {
+public interface JavaProtoCommonApi<
+        FileT extends FileApi,
+        SkylarkRuleContextT extends SkylarkRuleContextApi,
+        TransitiveInfoCollectionT extends TransitiveInfoCollectionApi>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "create_java_lite_proto_compile_action",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuleOutputJarsProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuleOutputJarsProviderApi.java
index 778a1bf..faadd82 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuleOutputJarsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuleOutputJarsProviderApi.java
@@ -19,13 +19,15 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** Info object about outputs of a Java rule. */
 @SkylarkModule(
     name = "java_output_jars",
     category = SkylarkModuleCategory.PROVIDER,
     doc = "Information about outputs of a Java rule.")
-public interface JavaRuleOutputJarsProviderApi<OutputJarT extends OutputJarApi<?>> {
+public interface JavaRuleOutputJarsProviderApi<OutputJarT extends OutputJarApi<?>>
+    extends SkylarkValue {
 
   @SkylarkCallable(name = "jars", doc = "A list of jars the rule outputs.", structField = true)
   public ImmutableList<OutputJarT> getOutputJars();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeClasspathProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeClasspathProviderApi.java
index 8c80ca8..78261db 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeClasspathProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeClasspathProviderApi.java
@@ -16,11 +16,12 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 
 /** Provider for the runtime classpath contributions of a Java binary. */
 @SkylarkModule(name = "JavaRuntimeClasspathProvider", doc = "", documented = false)
-public interface JavaRuntimeClasspathProviderApi {
+public interface JavaRuntimeClasspathProviderApi extends SkylarkValue {
 
   @SkylarkCallable(name = "runtime_classpath", documented = false, structField = true)
   public SkylarkNestedSet /*<File>*/ getRuntimeClasspath();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaSkylarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaSkylarkApiProviderApi.java
index f100116..c6cd44b 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaSkylarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaSkylarkApiProviderApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkDeprecated;
 
 /**
@@ -32,4 +33,4 @@
             + " href=\"https://docs.bazel.build/versions/master/skylark/lib/JavaInfo.html\">JavaInfo</a>"
             + " instead.")
 @StarlarkDeprecated
-public interface JavaSkylarkApiProviderApi<FileT extends FileApi> {}
+public interface JavaSkylarkApiProviderApi<FileT extends FileApi> extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java
index 5ef2cd7..dcc01af 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/OutputJarApi.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 
 /** A tuple of a java classes jar and its associated source and interface archives. */
@@ -25,7 +26,7 @@
     name = "java_output",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "Java classes jar, together with their associated source and interface archives.")
-public interface OutputJarApi<FileT extends FileApi> {
+public interface OutputJarApi<FileT extends FileApi> extends SkylarkValue {
 
   @SkylarkCallable(
     name = "class_jar",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformCommonApi.java
index e07a30b..6413346 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformCommonApi.java
@@ -17,13 +17,14 @@
 import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
 /** Module containing functions to interact with the platform APIs. */
 @SkylarkModule(
     name = "platform_common",
     doc = "Functions for Starlark to interact with the platform APIs.")
-public interface PlatformCommonApi {
+public interface PlatformCommonApi extends SkylarkValue {
   @SkylarkCallable(
       name = "TemplateVariableInfo",
       doc =
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformConfigurationApi.java
index 06841e9..c2e551f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformConfigurationApi.java
@@ -19,17 +19,15 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import java.util.List;
 
-/**
- * The platform configuration.
- */
+/** The platform configuration. */
 @SkylarkModule(
     name = "platform",
     doc = "The platform configuration.",
-    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT
-)
-public interface PlatformConfigurationApi {
+    category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT)
+public interface PlatformConfigurationApi extends SkylarkValue {
 
   @SkylarkCallable(name = "host_platform", structField = true, doc = "The current host platform")
   Label getHostPlatform();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoModuleApi.java
index 3c36c85..94d9d30 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto/ProtoModuleApi.java
@@ -15,6 +15,7 @@
 package com.google.devtools.build.lib.skylarkbuildapi.proto;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Interface for protocol buffers support in Bazel.
@@ -30,4 +31,4 @@
             + "to load this symbol from <a href=\"https://github.com/bazelbuild/rules_proto\">"
             + "rules_proto</a>"
             + "</p>")
-public interface ProtoModuleApi {}
+public interface ProtoModuleApi extends SkylarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyStarlarkTransitionsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyStarlarkTransitionsApi.java
index 1cd58f3..16295b0 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyStarlarkTransitionsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyStarlarkTransitionsApi.java
@@ -29,7 +29,7 @@
         "DO NOT USE. This is intended for Python 2 to 3 migration purposes only. If you depend"
             + " on it, you will be broken when it is removed.",
     documented = false)
-public interface PyStarlarkTransitionsApi {
+public interface PyStarlarkTransitionsApi extends SkylarkValue {
 
   @SkylarkCallable(
       name = "cfg",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkExecutionResultApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkExecutionResultApi.java
index 0003f55..c0311af 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkExecutionResultApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkExecutionResultApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * A structure callable from Skylark that stores the result of repository_ctx.execute() method. It
@@ -30,7 +31,7 @@
         "A structure storing result of repository_ctx.execute() method. It contains the standard"
             + " output stream content, the standard error stream content and the execution return"
             + " code.")
-public interface SkylarkExecutionResultApi {
+public interface SkylarkExecutionResultApi extends SkylarkValue {
   @SkylarkCallable(
       name = "return_code",
       structField = true,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkOSApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkOSApi.java
index 7ac322f..51a3b71 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkOSApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkOSApi.java
@@ -18,13 +18,14 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /** A Skylark structure to deliver information about the system we are running on. */
 @SkylarkModule(
     name = "repository_os",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "Various data about the current platform Bazel is running on.")
-public interface SkylarkOSApi {
+public interface SkylarkOSApi extends SkylarkValue {
   @SkylarkCallable(name = "environ", structField = true, doc = "The list of environment variables.")
   public ImmutableMap<String, String> getEnvironmentVariables();
 
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
index 4b28d0c..3f7e470 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
@@ -34,9 +35,9 @@
         "The context of the repository rule containing"
             + " helper functions and information about attributes. You get a repository_ctx object"
             + " as an argument to the <code>implementation</code> function when you create a"
-            + " repository rule."
-)
-public interface SkylarkRepositoryContextApi<RepositoryFunctionExceptionT extends Throwable> {
+            + " repository rule.")
+public interface SkylarkRepositoryContextApi<RepositoryFunctionExceptionT extends Throwable>
+    extends SkylarkValue {
 
   @SkylarkCallable(
       name = "name",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java
index 42d7d5f..c005b20 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingModuleApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 
@@ -24,7 +25,7 @@
 @SkylarkModule(
     name = "testing",
     doc = "Helper methods for Starlark to access testing infrastructure.")
-public interface TestingModuleApi {
+public interface TestingModuleApi extends SkylarkValue {
 
   // TODO(bazel-team): Change this function to be the actual ExecutionInfo.PROVIDER.
   @SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java
index 6a6c2ac..30a4366 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkModule.java
@@ -45,9 +45,11 @@
  * them to define different methods, while annotating {@link SkylarkList} allows them to be
  * identified as a single type for the purpose of type checking, documentation, and error messages.
  *
- * <p>All {@code @SkylarkModule}-annotated types should implement {@link SkylarkValue}. Conversely,
- * all non-abstract implementations of {@link SkylarkValue} should have or inherit a {@code
- * @SkylarkModule} annotation.
+ * <p>All {@code @SkylarkModule}-annotated types must implement {@link SkylarkValue}. Nearly all
+ * non-abstract implementations of {@link SkylarkValue} have or inherit a {@code @SkylarkModule}
+ * annotation. (It is possible, though quite unusual, to declare an implementation of {@code
+ * SkylarkValue} without using the annotation mechanism defined in this package. {@code
+ * StarlarkFunction} is one example.)
  */
 @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkValue.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkValue.java
index d3f25f8..f44420c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkValue.java
@@ -14,6 +14,8 @@
 
 package com.google.devtools.build.lib.skylarkinterface;
 
+import com.google.devtools.build.lib.concurrent.ThreadSafety;
+
 /** Base interface for all Starlark values besides boxed Java primitives. */
 public interface SkylarkValue {
 
@@ -63,8 +65,14 @@
    * <p>Immutability is deep, i.e. in order for a value to be immutable, all values it is composed
    * of must be immutable, too.
    */
+  // TODO(adonovan): eliminate this concept. All uses really need to know is, is it hashable?,
+  // because Starlark values must have stable hashes: a hashable value must either be immutable or
+  // its hash must be part of its identity.
+  // But this must wait until --incompatible_disallow_hashing_frozen_mutables=true is removed.
+  // (see github.com/bazelbuild/bazel/issues/7800)
   default boolean isImmutable() {
-      return false;
+    // TODO(adonovan): this is an abuse of an unrelated annotation.
+    return getClass().isAnnotationPresent(ThreadSafety.Immutable.class);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
index 0a98d5c..48b7ea7 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
@@ -18,6 +18,8 @@
 import com.google.common.collect.SetMultimap;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import java.util.HashSet;
 import java.util.List;
@@ -49,19 +51,19 @@
  *   <li>The method must be non-static.
  *   <li>If structField=true, there must be zero user-supplied parameters.
  *   <li>Method parameters must be supplied in the following order:
- *       <pre>method([positionals]*[other user-args](Location)(FuncallExpression)(Environment))
+ *       <pre>method([positionals]*[other user-args](Location)(FuncallExpression)(StarlarkThread))
  *       </pre>
- *       where Location, FuncallExpression, and Environment are supplied by the interpreter if and
- *       only if useLocation, useAst, and useStarlarkThread are specified, respectively.
+ *       where Location, FuncallExpression, and StarlarkThread are supplied by the interpreter if
+ *       and only if useLocation, useAst, and useStarlarkThread are specified, respectively.
  *   <li>The number of method parameters must match the number of annotation-declared parameters
  *       plus the number of interpreter-supplied parameters.
  *   <li>Each parameter, if explicitly typed, may only use either 'type' or 'allowedTypes', not
  *       both.
  *   <li>Parameters may not specify their generic types (they must use the <code>?</code> wildcard
  *       exclusively.
- *   <li>Noneable parameters must have java parameter type Object (as the actual value may be either
- *       {@code None} or a value of a non-{@code None} type, which do not share a superclass other
- *       than Object (or SkylarkValue, which is typically no more descriptive than Object).
+ *   <li>Noneable parameters must have Java parameter type Object, as the actual value may be either
+ *       {@code None} or some other value, which do not share a superclass other than Object (or
+ *       SkylarkValue, which is typically no more descriptive than Object).
  *   <li>Each parameter must be positional or named (or both).
  *   <li>Positional-only parameters must be specified before any named parameters.
  *   <li>Positional parameters must be specified before any non-positional parameters.
@@ -71,12 +73,18 @@
  *   <li>Each class may only have one annotated method with selfCall=true.
  *   <li>A method annotated with selfCall=true must have a non-empty name.
  *   <li>A method annotated with selfCall=true must have structField=false.
+ *   <li>The method's class must implement SkylarkValue.
  * </ul>
  *
  * <p>These properties can be relied upon at runtime without additional checks.
  */
-@SupportedAnnotationTypes({"com.google.devtools.build.lib.skylarkinterface.SkylarkCallable"})
+@SupportedAnnotationTypes({
+  "com.google.devtools.build.lib.skylarkinterface.SkylarkCallable",
+  "com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary",
+  "com.google.devtools.build.lib.skylarkinterface.SkylarkModule"
+})
 public final class SkylarkCallableProcessor extends AbstractProcessor {
+  private ProcessingEnvironment env;
   private Messager messager;
 
   // A set containing the names of all classes which have a method with @SkylarkCallable.selfCall.
@@ -90,9 +98,12 @@
       "com.google.devtools.build.lib.syntax.SkylarkDict<?,?>";
   private static final String LOCATION = "com.google.devtools.build.lib.events.Location";
   private static final String AST = "com.google.devtools.build.lib.syntax.FuncallExpression";
-  private static final String ENVIRONMENT = "com.google.devtools.build.lib.syntax.StarlarkThread";
+  private static final String STARLARK_THREAD =
+      "com.google.devtools.build.lib.syntax.StarlarkThread";
   private static final String STARLARK_SEMANTICS =
       "com.google.devtools.build.lib.syntax.StarlarkSemantics";
+  private static final String SKYLARK_VALUE =
+      "com.google.devtools.build.lib.skylarkinterface.SkylarkValue";
 
   @Override
   public SourceVersion getSupportedSourceVersion() {
@@ -100,17 +111,41 @@
   }
 
   @Override
-  public synchronized void init(ProcessingEnvironment processingEnv) {
-    super.init(processingEnv);
-    messager = processingEnv.getMessager();
+  public synchronized void init(ProcessingEnvironment env) {
+    super.init(env);
+    this.env = env;
+    messager = env.getMessager();
     classesWithSelfcall = new HashSet<>();
     processedClassMethods = LinkedHashMultimap.create();
   }
 
   @Override
   public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
-    for (Element element : roundEnv.getElementsAnnotatedWith(SkylarkCallable.class)) {
+    // Ensure SkylarkModule-annotated classes implement SkylarkValue.
+    TypeElement skylarkValueType = env.getElementUtils().getTypeElement(SKYLARK_VALUE);
+    if (skylarkValueType == null) {
+      messager.printMessage(Diagnostic.Kind.ERROR, "no SkylarkValue type in compilation unit");
+      return true;
+    }
+    for (Element cls : roundEnv.getElementsAnnotatedWith(SkylarkModule.class)) {
+      if (!env.getTypeUtils().isAssignable(cls.asType(), skylarkValueType.asType())) {
+        error(
+            cls,
+            String.format(
+                "class %s has @SkylarkModule annotation but does not implement SkylarkValue",
+                cls.getSimpleName()));
+      }
+    }
 
+    // TODO(adonovan): reject a SkylarkCallable-annotated method whose class doesn't have (or
+    // inherit) a SkylarkModule documentation annotation.
+
+    // Only SkylarkGlobalLibrary-annotated classes, and those that implement SkylarkValue,
+    // are allowed SkylarkCallable-annotated methods.
+    Set<Element> okClasses =
+        new HashSet<>(roundEnv.getElementsAnnotatedWith(SkylarkGlobalLibrary.class));
+
+    for (Element element : roundEnv.getElementsAnnotatedWith(SkylarkCallable.class)) {
       // Only methods are annotated with SkylarkCallable. This is verified by the
       // @Target(ElementType.METHOD) annotation.
       ExecutableElement methodElement = (ExecutableElement) element;
@@ -136,8 +171,23 @@
         verifyFlagToggles(methodElement, annotation);
         verifyNoNameConflict(methodElement, annotation);
       } catch (SkylarkCallableProcessorException exception) {
+        // TODO(adonovan): don't use exceptions; report multiple errors per pass
+        // as this saves time in compiler-driven refactoring.
         error(exception.methodElement, exception.errorMessage);
       }
+
+      // Check that the method's class is SkylarkGlobalLibrary-annotated,
+      // or implements SkylarkValue, or an error has already been reported.
+      Element cls = methodElement.getEnclosingElement();
+      if (okClasses.add(cls)
+          && !env.getTypeUtils().isAssignable(cls.asType(), skylarkValueType.asType())) {
+        error(
+            cls,
+            String.format(
+                "method %s has @SkylarkCallable annotation but enclosing class %s does not"
+                    + " implement SkylarkValue nor has @SkylarkGlobalLibrary annotation",
+                methodElement.getSimpleName(), cls.getSimpleName()));
+      }
     }
 
     return true;
@@ -472,14 +522,14 @@
       currentIndex++;
     }
     if (annotation.useStarlarkThread()) {
-      if (!ENVIRONMENT.equals(methodSignatureParams.get(currentIndex).asType().toString())) {
+      if (!STARLARK_THREAD.equals(methodSignatureParams.get(currentIndex).asType().toString())) {
         throw new SkylarkCallableProcessorException(
             methodElement,
             String.format(
                 "Expected parameter index %d to be the %s type, matching useStarlarkThread, "
                     + "but was %s",
                 currentIndex,
-                ENVIRONMENT,
+                STARLARK_THREAD,
                 methodSignatureParams.get(currentIndex).asType().toString()));
       }
       currentIndex++;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index 08c71f5..370ccd6 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -162,14 +162,15 @@
   }
 
   /**
-   * Is this class known to be *recursively* immutable by Skylark?
-   * For instance, class Tuple is not it, because it can contain mutable values.
+   * Is this class known to be *recursively* immutable by Skylark? For instance, class Tuple is not
+   * it, because it can contain mutable values.
+   *
    * @param c a Class
    * @return true if the class is known to represent only recursively immutable values.
    */
   // NB: This is used as the basis for accepting objects in SkylarkNestedSet-s,
   // as well as for accepting objects as keys for Skylark dict-s.
-  static boolean isImmutable(Class<?> c) {
+  private static boolean isImmutable(Class<?> c) {
     return c.isAnnotationPresent(Immutable.class) // TODO(bazel-team): beware of containers!
         || c.equals(String.class)
         || c.equals(Integer.class)
@@ -184,6 +185,7 @@
         || c.equals(String.class) // basic values
         || c.equals(Integer.class)
         || c.equals(Boolean.class)
+        // TODO(adonovan): delete those below, and order those above by cost.
         // there is a registered Skylark ancestor class (useful e.g. when using AutoValue)
         || SkylarkInterfaceUtils.getSkylarkModule(c) != null
         || ImmutableMap.class.isAssignableFrom(c); // will be converted to SkylarkDict
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index a81b058..6d6758c 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -31,6 +31,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalUtils.ComparisonException;
 import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
@@ -1232,7 +1233,7 @@
               + "100 % -7  # -5 (unlike in some other languages)\n"
               + "int(\"18\")\n"
               + "</pre>")
-  public static final class IntModule {}
+  static final class IntModule implements SkylarkValue {} // (documentation only)
 
   /** Skylark bool type. */
   @SkylarkModule(
@@ -1244,7 +1245,7 @@
               + "<a href=\"globals.html#False\">False</a>. "
               + "Any value can be converted to a boolean using the "
               + "<a href=\"globals.html#bool\">bool</a> function.")
-  public static final class BoolModule {}
+  static final class BoolModule implements SkylarkValue {} // (documentation only)
 
   /** Adds bindings for all the builtin functions of this class to the given map builder. */
   public static void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java b/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java
index ef57182..3c3e6f6 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StringModule.java
@@ -24,6 +24,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
 import java.util.ArrayList;
@@ -43,30 +44,29 @@
  * 'String self' parameter as the first parameter of the method.
  */
 @SkylarkModule(
-  name = "string",
-  category = SkylarkModuleCategory.BUILTIN,
-  doc =
-      "A language built-in type to support strings. "
-          + "Examples of string literals:<br>"
-          + "<pre class=\"language-python\">a = 'abc\\ndef'\n"
-          + "b = \"ab'cd\"\n"
-          + "c = \"\"\"multiline string\"\"\"\n"
-          + "\n"
-          + "# Strings support slicing (negative index starts from the end):\n"
-          + "x = \"hello\"[2:4]  # \"ll\"\n"
-          + "y = \"hello\"[1:-1]  # \"ell\"\n"
-          + "z = \"hello\"[:4]  # \"hell\""
-          + "# Slice steps can be used, too:\n"
-          + "s = \"hello\"[::2] # \"hlo\"\n"
-          + "t = \"hello\"[3:0:-1] # \"lle\"\n</pre>"
-          + "Strings are iterable and support the <code>in</code> operator. Examples:<br>"
-          + "<pre class=\"language-python\">\"bc\" in \"abcd\"   # evaluates to True\n"
-          + "x = [s for s in \"abc\"]  # x == [\"a\", \"b\", \"c\"]</pre>\n"
-          + "Implicit concatenation of strings is not allowed; use the <code>+</code> "
-          + "operator instead. Comparison operators perform a lexicographical comparison; "
-          + "use <code>==</code> to test for equality."
-)
-public final class StringModule {
+    name = "string",
+    category = SkylarkModuleCategory.BUILTIN,
+    doc =
+        "A language built-in type to support strings. "
+            + "Examples of string literals:<br>"
+            + "<pre class=\"language-python\">a = 'abc\\ndef'\n"
+            + "b = \"ab'cd\"\n"
+            + "c = \"\"\"multiline string\"\"\"\n"
+            + "\n"
+            + "# Strings support slicing (negative index starts from the end):\n"
+            + "x = \"hello\"[2:4]  # \"ll\"\n"
+            + "y = \"hello\"[1:-1]  # \"ell\"\n"
+            + "z = \"hello\"[:4]  # \"hell\""
+            + "# Slice steps can be used, too:\n"
+            + "s = \"hello\"[::2] # \"hlo\"\n"
+            + "t = \"hello\"[3:0:-1] # \"lle\"\n</pre>"
+            + "Strings are iterable and support the <code>in</code> operator. Examples:<br>"
+            + "<pre class=\"language-python\">\"bc\" in \"abcd\"   # evaluates to True\n"
+            + "x = [s for s in \"abc\"]  # x == [\"a\", \"b\", \"c\"]</pre>\n"
+            + "Implicit concatenation of strings is not allowed; use the <code>+</code> "
+            + "operator instead. Comparison operators perform a lexicographical comparison; "
+            + "use <code>==</code> to test for equality.")
+public final class StringModule implements SkylarkValue {
 
   private StringModule() {}
 
@@ -1116,5 +1116,5 @@
     return false;
   }
 
-  public static final StringModule INSTANCE = new StringModule();
+  static final StringModule INSTANCE = new StringModule();
 }
diff --git a/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationFailuresTest.java b/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationFailuresTest.java
index a4d0c20..05962c2 100644
--- a/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationFailuresTest.java
+++ b/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationFailuresTest.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -32,9 +33,8 @@
 public final class SkylarkDocumentationFailuresTest {
 
   /** MockClassCommonNameOne */
-  @SkylarkModule(name = "MockClassCommonName",
-      doc = "MockClassCommonName")
-  private static class MockClassCommonNameOne {
+  @SkylarkModule(name = "MockClassCommonName", doc = "MockClassCommonName")
+  private static class MockClassCommonNameOne implements SkylarkValue {
 
     @SkylarkCallable(name = "one", doc = "one")
     public Integer one() {
@@ -43,9 +43,8 @@
   }
 
   /** MockClassCommonNameTwo */
-  @SkylarkModule(name = "MockClassCommonName",
-      doc = "MockClassCommonName")
-  private static class MockClassCommonNameTwo {
+  @SkylarkModule(name = "MockClassCommonName", doc = "MockClassCommonName")
+  private static class MockClassCommonNameTwo implements SkylarkValue {
 
     @SkylarkCallable(name = "two", doc = "two")
     public Integer two() {
@@ -54,9 +53,8 @@
   }
 
   /** PointsToCommonName */
-  @SkylarkModule(name = "PointsToCommonName",
-      doc = "PointsToCommonName")
-  private static class PointsToCommonName {
+  @SkylarkModule(name = "PointsToCommonName", doc = "PointsToCommonName")
+  private static class PointsToCommonName implements SkylarkValue {
     @SkylarkCallable(name = "one", doc = "one")
     public MockClassCommonNameOne getOne() {
       return null;
diff --git a/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java b/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java
index f312932..2d89c1a 100644
--- a/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java
+++ b/src/test/java/com/google/devtools/build/docgen/SkylarkDocumentationTest.java
@@ -26,6 +26,7 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
@@ -95,7 +96,7 @@
 
   /** MockClassA */
   @SkylarkModule(name = "MockClassA", doc = "MockClassA")
-  private static class MockClassA {
+  private static class MockClassA implements SkylarkValue {
     @SkylarkCallable(name = "get", doc = "MockClassA#get")
     public Integer get() {
       return 0;
@@ -104,7 +105,7 @@
 
   /** MockClassD */
   @SkylarkModule(name = "MockClassD", doc = "MockClassD")
-  private static class MockClassD {
+  private static class MockClassD implements SkylarkValue {
     @SkylarkCallable(
       name = "test",
       doc = "MockClassD#test",
@@ -131,7 +132,7 @@
 
   /** MockClassF */
   @SkylarkModule(name = "MockClassF", doc = "MockClassF")
-  private static class MockClassF {
+  private static class MockClassF implements SkylarkValue {
     @SkylarkCallable(
       name = "test",
       doc = "MockClassF#test",
@@ -150,7 +151,7 @@
 
   /** MockClassG */
   @SkylarkModule(name = "MockClassG", doc = "MockClassG")
-  private static class MockClassG {
+  private static class MockClassG implements SkylarkValue {
     @SkylarkCallable(
       name = "test",
       doc = "MockClassG#test",
@@ -169,7 +170,7 @@
 
   /** MockClassH */
   @SkylarkModule(name = "MockClassH", doc = "MockClassH")
-  private static class MockClassH {
+  private static class MockClassH implements SkylarkValue {
     @SkylarkCallable(
       name = "test",
       doc = "MockClassH#test",
@@ -216,7 +217,7 @@
   @SkylarkModule(
       name = "MockClassWithContainerReturnValues",
       doc = "MockClassWithContainerReturnValues")
-  private static class MockClassWithContainerReturnValues {
+  private static class MockClassWithContainerReturnValues implements SkylarkValue {
 
     @SkylarkCallable(name = "depset", doc = "depset")
     public SkylarkNestedSet /*<Integer>*/ getNestedSet() {
@@ -245,9 +246,8 @@
   }
 
   /** MockClassCommonNameOne */
-  @SkylarkModule(name = "MockClassCommonName",
-      doc = "MockClassCommonName")
-  private static class MockClassCommonNameOne {
+  @SkylarkModule(name = "MockClassCommonName", doc = "MockClassCommonName")
+  private static class MockClassCommonNameOne implements SkylarkValue {
 
     @SkylarkCallable(name = "one", doc = "one")
     public Integer one() {
@@ -267,9 +267,10 @@
   }
 
   /** PointsToCommonNameOneWithSubclass */
-  @SkylarkModule(name = "PointsToCommonNameOneWithSubclass",
+  @SkylarkModule(
+      name = "PointsToCommonNameOneWithSubclass",
       doc = "PointsToCommonNameOneWithSubclass")
-  private static class PointsToCommonNameOneWithSubclass {
+  private static class PointsToCommonNameOneWithSubclass implements SkylarkValue {
     @SkylarkCallable(name = "one", doc = "one")
     public MockClassCommonNameOne getOne() {
       return null;
@@ -282,10 +283,8 @@
   }
 
   /** MockClassCommonNameOneUndocumented */
-  @SkylarkModule(name = "MockClassCommonName",
-      documented = false,
-      doc = "")
-  private static class MockClassCommonNameUndocumented {
+  @SkylarkModule(name = "MockClassCommonName", documented = false, doc = "")
+  private static class MockClassCommonNameUndocumented implements SkylarkValue {
 
     @SkylarkCallable(name = "two", doc = "two")
     public Integer two() {
@@ -294,9 +293,10 @@
   }
 
   /** PointsToCommonNameAndUndocumentedModule */
-  @SkylarkModule(name = "PointsToCommonNameAndUndocumentedModule",
+  @SkylarkModule(
+      name = "PointsToCommonNameAndUndocumentedModule",
       doc = "PointsToCommonNameAndUndocumentedModule")
-  private static class PointsToCommonNameAndUndocumentedModule {
+  private static class PointsToCommonNameAndUndocumentedModule implements SkylarkValue {
     @SkylarkCallable(name = "one", doc = "one")
     public MockClassCommonNameOne getOne() {
       return null;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java
index ee74719..400594a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisCachingTest.java
@@ -34,6 +34,7 @@
 import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
 import com.google.devtools.build.lib.skyframe.AspectValue;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.testutil.Suite;
 import com.google.devtools.build.lib.testutil.TestConstants.InternalTestExecutionMode;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -601,7 +602,8 @@
   }
 
   @SkylarkModule(name = "test_diff_fragment", doc = "fragment for testing differy fragments")
-  private static final class DiffResetFragment extends BuildConfiguration.Fragment {}
+  private static final class DiffResetFragment extends BuildConfiguration.Fragment
+      implements SkylarkValue {}
 
   private static final class DiffResetFactory implements ConfigurationFragmentFactory {
     @Override
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
index e22f62e..b92c36e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
@@ -35,6 +35,7 @@
 import com.google.devtools.build.lib.packages.NativeAspectClass;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.util.FileTypeSet;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -309,5 +310,5 @@
   }
 
   @SkylarkModule(name = "test_fragment", doc = "test fragment")
-  private static final class TestFragment {}
+  private static final class TestFragment implements SkylarkValue {}
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java b/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java
index 93b4d04..f196288 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
 import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -34,13 +35,13 @@
 public final class ConfigurationFragmentPolicyTest {
 
   @SkylarkModule(name = "test_fragment", doc = "first fragment")
-  private static final class TestFragment {}
+  private static final class TestFragment implements SkylarkValue {}
 
   @SkylarkModule(name = "other_fragment", doc = "second fragment")
-  private static final class OtherFragment {}
+  private static final class OtherFragment implements SkylarkValue {}
 
   @SkylarkModule(name = "unknown_fragment", doc = "useless waste of permgen")
-  private static final class UnknownFragment {}
+  private static final class UnknownFragment implements SkylarkValue {}
 
   @Test
   public void testMissingFragmentPolicy() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/trimming/TrimmableTestConfigurationFragments.java b/src/test/java/com/google/devtools/build/lib/skyframe/trimming/TrimmableTestConfigurationFragments.java
index 953363c..783b58b 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/trimming/TrimmableTestConfigurationFragments.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/trimming/TrimmableTestConfigurationFragments.java
@@ -60,6 +60,7 @@
 import com.google.devtools.build.lib.rules.repository.BindRule;
 import com.google.devtools.build.lib.rules.repository.WorkspaceBaseRule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Printer;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
@@ -445,7 +446,7 @@
 
   /** Test configuration fragment. */
   @SkylarkModule(name = "alpha", doc = "Test config fragment.")
-  public static final class AConfig extends BuildConfiguration.Fragment {
+  public static final class AConfig extends BuildConfiguration.Fragment implements SkylarkValue {
     public static final ConfigurationFragmentFactory FACTORY =
         new FragmentLoader<>(
             AConfig.class, AOptions.class, (options) -> new AConfig(options.alpha));
@@ -474,7 +475,7 @@
 
   /** Test configuration fragment. */
   @SkylarkModule(name = "bravo", doc = "Test config fragment.")
-  public static final class BConfig extends BuildConfiguration.Fragment {
+  public static final class BConfig extends BuildConfiguration.Fragment implements SkylarkValue {
     public static final ConfigurationFragmentFactory FACTORY =
         new FragmentLoader<>(
             BConfig.class, BOptions.class, (options) -> new BConfig(options.bravo));
@@ -503,7 +504,7 @@
 
   /** Test configuration fragment. */
   @SkylarkModule(name = "charlie", doc = "Test config fragment.")
-  public static final class CConfig extends BuildConfiguration.Fragment {
+  public static final class CConfig extends BuildConfiguration.Fragment implements SkylarkValue {
     public static final ConfigurationFragmentFactory FACTORY =
         new FragmentLoader<>(
             CConfig.class, COptions.class, (options) -> new CConfig(options.charlie));
@@ -532,7 +533,7 @@
 
   /** Test configuration fragment. */
   @SkylarkModule(name = "delta", doc = "Test config fragment.")
-  public static final class DConfig extends BuildConfiguration.Fragment {
+  public static final class DConfig extends BuildConfiguration.Fragment implements SkylarkValue {
     public static final ConfigurationFragmentFactory FACTORY =
         new FragmentLoader<>(
             DConfig.class, DOptions.class, (options) -> new DConfig(options.delta));
@@ -564,7 +565,7 @@
 
   /** Test configuration fragment. */
   @SkylarkModule(name = "echo", doc = "Test config fragment.")
-  public static final class EConfig extends BuildConfiguration.Fragment {
+  public static final class EConfig extends BuildConfiguration.Fragment implements SkylarkValue {
     public static final ConfigurationFragmentFactory FACTORY =
         new FragmentLoader<>(EConfig.class, EOptions.class, (options) -> new EConfig(options.echo));
 
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
index 1aad801..898c6fe 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
@@ -387,4 +387,16 @@
             "Expected type 'Object' but got type 'java.lang.String' "
                 + "for noneable parameter 'aParameter'.");
   }
+
+  @Test
+  public void testDoesntImplementSkylarkValue() throws Exception {
+    assertAbout(javaSource())
+        .that(getFile("DoesntImplementSkylarkValue.java"))
+        .processedWith(new SkylarkCallableProcessor())
+        .failsToCompile()
+        .withErrorContaining(
+            "method x has @SkylarkCallable annotation but enclosing class"
+                + " DoesntImplementSkylarkValue does not implement SkylarkValue nor has"
+                + " @SkylarkGlobalLibrary annotation");
+  }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ArgumentMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ArgumentMissing.java
index 9265adc..fcfdb32 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ArgumentMissing.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ArgumentMissing.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has no arguments when the annotation indicates it
  * should.
  */
-public class ArgumentMissing {
+public class ArgumentMissing implements SkylarkValue {
 
   @SkylarkCallable(
     name = "method_with_params",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ConflictingMethodNames.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ConflictingMethodNames.java
index e721402..028841c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ConflictingMethodNames.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ConflictingMethodNames.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
- * Test case for a class which contains multiple SkylarkCallable methods with the same name.
- * This should cause a compile failure -- overrides are not allowed.
+ * Test case for a class which contains multiple SkylarkCallable methods with the same name. This
+ * should cause a compile failure -- overrides are not allowed.
  */
-public class ConflictingMethodNames {
+public class ConflictingMethodNames implements SkylarkValue {
 
   @SkylarkCallable(
       name = "conflicting_method",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DisabledValueParamNoToggle.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DisabledValueParamNoToggle.java
index 16e4edb..2ea9c46 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DisabledValueParamNoToggle.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DisabledValueParamNoToggle.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter which has a "disabled value" set but
  * is always-on.
  */
-public class DisabledValueParamNoToggle {
+public class DisabledValueParamNoToggle implements SkylarkValue {
 
   @SkylarkCallable(
       name = "no_toggle_method",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DocumentationMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DocumentationMissing.java
index 5efd975..8778472 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DocumentationMissing.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DocumentationMissing.java
@@ -15,12 +15,13 @@
 package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has no documentation and is not explicitly marked
  * "documented=false".
  */
-public class DocumentationMissing {
+public class DocumentationMissing implements SkylarkValue {
 
   @SkylarkCallable(name = "undocumented_method")
   public String undocumentedMethod() {
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DoesntImplementSkylarkValue.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DoesntImplementSkylarkValue.java
new file mode 100644
index 0000000..16c7cf3
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/DoesntImplementSkylarkValue.java
@@ -0,0 +1,25 @@
+// Copyright 2019 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.skylarkinterface.processor.testsources;
+
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+
+/** A SkylarkCallable-annotated method whose class doesn't implement SkylarkValue. */
+class DoesntImplementSkylarkValue {
+  @SkylarkCallable(name = "x", documented = false)
+  public Object x() {
+    return null;
+  }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java
index 1200f7f..b3d4618 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
 /**
  * Test case for a SkylarkCallable method which has both enablingFlag and disablingFlag specified.
  */
-public class EnablingAndDisablingFlag {
+public class EnablingAndDisablingFlag implements SkylarkValue {
 
   @SkylarkCallable(
       name = "someMethod",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlagParam.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlagParam.java
index 43db843..27d2820 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlagParam.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlagParam.java
@@ -16,13 +16,14 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter with both enableOnlyWithFlag and
  * disableWithFlag specified.
  */
-public class EnablingAndDisablingFlagParam {
+public class EnablingAndDisablingFlagParam implements SkylarkValue {
 
   @SkylarkCallable(
       name = "someMethod",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java
index 69d4d91..c46a66e 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
@@ -24,7 +25,7 @@
  * Test case for a SkylarkCallable method which specifies extraKeywords, but specifies the argument
  * out of order.
  */
-public class ExtraKeywordsOutOfOrder {
+public class ExtraKeywordsOutOfOrder implements SkylarkValue {
 
   @SkylarkCallable(
       name = "extra_kwargs_out_of_order",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java
index 55c7dd6..038c007 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java
@@ -17,12 +17,13 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /**
  * Test case for a SkylarkCallable method which specifies extraPositionals, but omits that argument.
  */
-public class ExtraPositionalsMissing {
+public class ExtraPositionalsMissing implements SkylarkValue {
 
   @SkylarkCallable(
       name = "extra_positionals_missing",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
index de7f3f1..a3200bf 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
@@ -18,16 +18,15 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
-/**
- * Test source file verifying various proper uses of SkylarkCallable.
- */
-public class GoldenCase {
+/** Test source file verifying various proper uses of SkylarkCallable. */
+public class GoldenCase implements SkylarkValue {
 
   @SkylarkCallable(
     name = "struct_field_method",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidNoneableParameter.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidNoneableParameter.java
index 69fbb36..b96f94b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidNoneableParameter.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidNoneableParameter.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter with both type and allowedTypes
  * specified.
  */
-public class InvalidNoneableParameter {
+public class InvalidNoneableParameter implements SkylarkValue {
 
   @SkylarkCallable(
       name = "invalid_noneable_parameter",
@@ -32,4 +33,5 @@
   public Integer invalidNoneableParameter(String aParameter) {
     return 42;
   }
+
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java
index a34cb5c..57767c6 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
- * Test case for a SkylarkCallable method which has a parameter with "None" set as the default,
- * but noneable is not true.
+ * Test case for a SkylarkCallable method which has a parameter with "None" set as the default, but
+ * noneable is not true.
  */
-public class InvalidParamNoneDefault {
+public class InvalidParamNoneDefault implements SkylarkValue {
 
   @SkylarkCallable(
       name = "method_with_invalid_default",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java
index fcac8b0..458c56c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java
@@ -16,13 +16,14 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /**
  * Test case for a SkylarkCallable method which does not have an appropriate StarlarkThread
  * parameter despite having useLocation set.
  */
-public class LocationMissing {
+public class LocationMissing implements SkylarkValue {
 
   @SkylarkCallable(
       name = "three_arg_method_missing_location",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/MultipleSelfCallMethods.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/MultipleSelfCallMethods.java
index 674df67..65fca81 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/MultipleSelfCallMethods.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/MultipleSelfCallMethods.java
@@ -16,11 +16,10 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Test case for a class with multiple SkylarkCallable methods which have selfCall=true.
- */
-public class MultipleSelfCallMethods {
+/** Test case for a class with multiple SkylarkCallable methods which have selfCall=true. */
+public class MultipleSelfCallMethods implements SkylarkValue {
 
   @SkylarkCallable(
       name = "selfCallMethod",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/NonDefaultParamAfterDefault.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/NonDefaultParamAfterDefault.java
index 3e736f8..98bb529 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/NonDefaultParamAfterDefault.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/NonDefaultParamAfterDefault.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has a positional parameter with no default value
  * specified after a positional parameter with a default value.
  */
-public class NonDefaultParamAfterDefault {
+public class NonDefaultParamAfterDefault implements SkylarkValue {
 
   @SkylarkCallable(
       name = "non_default_after_default",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamNeitherNamedNorPositional.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamNeitherNamedNorPositional.java
index 7c7bb1c..b02234b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamNeitherNamedNorPositional.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamNeitherNamedNorPositional.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter with is neither named nor
  * positional.
  */
-public class ParamNeitherNamedNorPositional {
+public class ParamNeitherNamedNorPositional implements SkylarkValue {
 
   @SkylarkCallable(
       name = "param_neither_named_nor_positional",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java
index a3b601d..86669e6 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java
@@ -17,12 +17,13 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.ParamType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter with both type and allowedTypes
  * specified.
  */
-public class ParamTypeConflict {
+public class ParamTypeConflict implements SkylarkValue {
 
   @SkylarkCallable(
     name = "param_type_conflict",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalOnlyParamAfterNamed.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalOnlyParamAfterNamed.java
index 74ae4ea..6485738 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalOnlyParamAfterNamed.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalOnlyParamAfterNamed.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has a positional-only parameter specified after a
  * named positional parameter.
  */
-public class PositionalOnlyParamAfterNamed {
+public class PositionalOnlyParamAfterNamed implements SkylarkValue {
 
   @SkylarkCallable(
       name = "positional_only_after_named",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalParamAfterNonPositional.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalParamAfterNonPositional.java
index 713f52e..1ee618a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalParamAfterNonPositional.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PositionalParamAfterNonPositional.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
- * Test case for a SkylarkCallable method which has a positional parameter specified after a
- * non positional parameter.
+ * Test case for a SkylarkCallable method which has a positional parameter specified after a non
+ * positional parameter.
  */
-public class PositionalParamAfterNonPositional {
+public class PositionalParamAfterNonPositional implements SkylarkValue {
 
   @SkylarkCallable(
       name = "positional_after_non_positional",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PrivateMethod.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PrivateMethod.java
index 88d2c14..369f98c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PrivateMethod.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/PrivateMethod.java
@@ -15,11 +15,10 @@
 package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Test case which verifies a method annotated with SkylarkCallable cannot be private.
- */
-public class PrivateMethod {
+/** Test case which verifies a method annotated with SkylarkCallable cannot be private. */
+public class PrivateMethod implements SkylarkValue {
 
   @SkylarkCallable(name = "private_method", doc = "A private method")
   private String privateMethod() {
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithNoName.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithNoName.java
index 769600d..4b17a3c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithNoName.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithNoName.java
@@ -15,11 +15,10 @@
 package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Test case for a class with a SkylarkCallable method which has selfCall=true but no name.
- */
-public class SelfCallWithNoName {
+/** Test case for a class with a SkylarkCallable method which has selfCall=true but no name. */
+public class SelfCallWithNoName implements SkylarkValue {
 
   @SkylarkCallable(
       name = "",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithStructField.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithStructField.java
index e096bf5..a3f76b5 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithStructField.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SelfCallWithStructField.java
@@ -15,12 +15,12 @@
 package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
- * Test case for a class with a SkylarkCallable method which has selfCall=true and
- * structField=true.
+ * Test case for a class with a SkylarkCallable method which has selfCall=true and structField=true.
  */
-public class SelfCallWithStructField {
+public class SelfCallWithStructField implements SkylarkValue {
 
   @SkylarkCallable(
       name = "selfCallMethod",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java
index 9eeed84..f0545f5 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java
@@ -17,13 +17,14 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /**
  * Test case for a SkylarkCallable method which specifies skylark-info parameters (for example
  * StarlarkThread) before other parameters.
  */
-public class SkylarkInfoBeforeParams {
+public class SkylarkInfoBeforeParams implements SkylarkValue {
 
   @SkylarkCallable(
       name = "skylark_info_wrong_order",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java
index 770d944..721d78a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java
@@ -17,13 +17,14 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkThread;
 
 /**
  * Test case for a SkylarkCallable method which specifies skylark-info parameters in the incorrect
  * relative order.
  */
-public class SkylarkInfoParamsWrongOrder {
+public class SkylarkInfoParamsWrongOrder implements SkylarkValue {
 
   @SkylarkCallable(
       name = "skylark_info_params_wrong_order",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java
index c852451..0d0755c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SpecifiedGenericType.java
@@ -16,6 +16,7 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 
@@ -24,7 +25,7 @@
  * type. (Parameters, if generic, may only have wildcards, as the types of these parameters must be
  * validated dynamically.)
  */
-public class SpecifiedGenericType {
+public class SpecifiedGenericType implements SkylarkValue {
 
   @SkylarkCallable(
       name = "specified_generic_type",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StarlarkThreadMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StarlarkThreadMissing.java
index 21e4021..76ed47e 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StarlarkThreadMissing.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StarlarkThreadMissing.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which does not have an appropriate StarlarkThread
  * parameter despite having useStarlarkThread set.
  */
-public class StarlarkThreadMissing {
+public class StarlarkThreadMissing implements SkylarkValue {
 
   @SkylarkCallable(
       name = "three_arg_method_missing_env",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StaticMethod.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StaticMethod.java
index fd0e498..b929c9a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StaticMethod.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StaticMethod.java
@@ -15,11 +15,10 @@
 package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Test case which verifies a method annotated with SkylarkCallable cannot be static.
- */
-public class StaticMethod {
+/** Test case which verifies a method annotated with SkylarkCallable cannot be static. */
+public class StaticMethod implements SkylarkValue {
 
   @SkylarkCallable(name = "private_method", doc = "A private method")
   public static String staticMethod() {
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java
index 9ec6166..eaadbcc 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java
@@ -16,11 +16,10 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
-/**
- * Test case which verifies a struct field method cannot have arguments.
- */
-public class StructFieldWithArguments {
+/** Test case which verifies a struct field method cannot have arguments. */
+public class StructFieldWithArguments implements SkylarkValue {
 
   @SkylarkCallable(name = "struct_field_method",
       parameters = {
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java
index 8c8c508..1472480 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraArgs.java
@@ -16,10 +16,11 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 
 /** Test case which verifies a struct field method cannot specify extraArgs. */
-public class StructFieldWithExtraArgs {
+public class StructFieldWithExtraArgs implements SkylarkValue {
 
   @SkylarkCallable(
     name = "struct_field_method_with_extra_args",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraKeywords.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraKeywords.java
index 9055172..a98f7dc 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraKeywords.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithExtraKeywords.java
@@ -16,10 +16,11 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 
 /** Test case which verifies a struct field method cannot specify extraArgs. */
-public class StructFieldWithExtraKeywords {
+public class StructFieldWithExtraKeywords implements SkylarkValue {
 
   @SkylarkCallable(
     name = "struct_field_method_with_extra_kwargs",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithInvalidInfo.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithInvalidInfo.java
index 0bab6a8..4d77ae6 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithInvalidInfo.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithInvalidInfo.java
@@ -15,10 +15,11 @@
 package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 
 /** Test case which verifies a struct field method cannot specify useStarlarkThread. */
-public class StructFieldWithInvalidInfo {
+public class StructFieldWithInvalidInfo implements SkylarkValue {
 
   @SkylarkCallable(
     name = "struct_field_method_with_info",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java
index 63e9638..d0eded9 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledKwargsParam.java
@@ -16,6 +16,7 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
@@ -25,7 +26,7 @@
  * Test case for a SkylarkCallable method which has a "extraKeywords" parameter which has
  * enableOnlyWithFlag set. (This is unsupported.)
  */
-public class ToggledKwargsParam {
+public class ToggledKwargsParam implements SkylarkValue {
 
   @SkylarkCallable(
       name = "toggled_kwargs_method",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledParamNoDisabledValue.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledParamNoDisabledValue.java
index ed2d8d3..e75acee 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledParamNoDisabledValue.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ToggledParamNoDisabledValue.java
@@ -16,13 +16,14 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 
 /**
  * Test case for a SkylarkCallable method which has a parameter which may be disabled with semantic
  * flag but has no "disabled value".
  */
-public class ToggledParamNoDisabledValue {
+public class ToggledParamNoDisabledValue implements SkylarkValue {
 
   @SkylarkCallable(
       name = "no_disabled_value_method",
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/TooManyArguments.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/TooManyArguments.java
index 2c6e17f..cd0540b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/TooManyArguments.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/TooManyArguments.java
@@ -16,12 +16,13 @@
 
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 
 /**
  * Test case for a SkylarkCallable method which has more arguments than are declared by the
  * annotation.
  */
-public class TooManyArguments {
+public class TooManyArguments implements SkylarkValue {
 
   @SkylarkCallable(
     name = "method_with_too_many_arguments",
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
index a24a691..a834dcb 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
@@ -48,8 +48,7 @@
 
   /** MockClassA */
   @SkylarkModule(name = "MockClassA", doc = "MockClassA")
-  public static class MockClassA {
-  }
+  public static class MockClassA implements SkylarkValue {}
 
   /** MockClassB */
   public static class MockClassB extends MockClassA {
@@ -127,11 +126,8 @@
         () -> EvalUtils.SKYLARK_COMPARATOR.compare(Runtime.NONE, Runtime.NONE));
   }
 
-  @SkylarkModule(
-      name = "ParentType",
-      doc = "A parent class annotated with @SkylarkModule."
-  )
-  private static class ParentClassWithSkylarkModule {}
+  @SkylarkModule(name = "ParentType", doc = "A parent class annotated with @SkylarkModule.")
+  private static class ParentClassWithSkylarkModule implements SkylarkValue {}
 
   private static class ChildClass extends ParentClassWithSkylarkModule {}
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
index 5ca992a..d1756bc 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.util.EvaluationTestCase;
 import org.junit.Before;
 import org.junit.Test;
@@ -176,7 +177,7 @@
   }
 
   @SkylarkModule(name = "AStruct", documented = false, doc = "")
-  static final class AStruct implements ClassObject {
+  static final class AStruct implements ClassObject, SkylarkValue {
     @Override
     public Object getValue(String name) {
       switch (name) {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index 3287dcc..829bdc1 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -126,7 +126,7 @@
   }
 
   @SkylarkModule(name = "Mock", doc = "")
-  static class Mock {
+  static class Mock implements SkylarkValue {
     @SkylarkCallable(
         name = "MockFn",
         selfCall = true,
@@ -513,7 +513,7 @@
   }
 
   @SkylarkModule(name = "MockInterface", doc = "")
-  static interface MockInterface {
+  static interface MockInterface extends SkylarkValue {
     @SkylarkCallable(name = "is_empty_interface",
         parameters = { @Param(name = "str", type = String.class) },
         documented = false)
@@ -533,7 +533,7 @@
   }
 
   @SkylarkModule(name = "MockClassObject", documented = false, doc = "")
-  static final class MockClassObject implements ClassObject {
+  static final class MockClassObject implements ClassObject, SkylarkValue {
     @Override
     public Object getValue(String name) {
       switch (name) {
@@ -555,7 +555,7 @@
   }
 
   @SkylarkModule(name = "ParamterizedMock", doc = "")
-  static interface ParameterizedApi<ObjectT> {
+  static interface ParameterizedApi<ObjectT> extends SkylarkValue {
     @SkylarkCallable(
         name = "method",
         documented = false,
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java
index f20be49..f2d358a 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java
@@ -20,20 +20,19 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkInterfaceUtils;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import java.lang.reflect.Method;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-/**
- *  Test Skylark interface annotations and utilities.
- */
+/** Test Skylark interface annotations and utilities. */
 @RunWith(JUnit4.class)
 public class SkylarkInterfaceUtilsTest {
 
   /** MockClassA */
   @SkylarkModule(name = "MockClassA", doc = "MockClassA")
-  public static class MockClassA {
+  public static class MockClassA implements SkylarkValue {
     @SkylarkCallable(name = "foo", doc = "MockClassA#foo")
     public void foo() {}
     @SkylarkCallable(name = "bar", doc = "MockClassA#bar")
@@ -43,7 +42,7 @@
 
   /** MockInterfaceB1 */
   @SkylarkModule(name = "MockInterfaceB1", doc = "MockInterfaceB1")
-  public static interface MockInterfaceB1 {
+  public static interface MockInterfaceB1 extends SkylarkValue {
     @SkylarkCallable(name = "foo", doc = "MockInterfaceB1#foo")
     void foo();
     @SkylarkCallable(name = "bar", doc = "MockInterfaceB1#bar")
@@ -54,7 +53,7 @@
 
   /** MockInterfaceB2 */
   @SkylarkModule(name = "MockInterfaceB2", doc = "MockInterfaceB2")
-  public static interface MockInterfaceB2 {
+  public static interface MockInterfaceB2 extends SkylarkValue {
     @SkylarkCallable(name = "baz", doc = "MockInterfaceB2#baz")
     void baz();
     @SkylarkCallable(name = "qux", doc = "MockInterfaceB2#qux")
@@ -100,14 +99,14 @@
 
   /** ClassAModule test class */
   @SkylarkModule(name = "ClassAModule", doc = "ClassAModule")
-  public static class ClassAModule {}
+  public static class ClassAModule implements SkylarkValue {}
 
   /** ExtendsClassA test class */
   public static class ExtendsClassA extends ClassAModule {}
 
   /** InterfaceBModule test interface */
   @SkylarkModule(name = "InterfaceBModule", doc = "InterfaceBModule")
-  public static interface InterfaceBModule {}
+  public static interface InterfaceBModule extends SkylarkValue {}
 
   /** ExtendsInterfaceB test interface */
   public static interface ExtendsInterfaceB extends InterfaceBModule {}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkTypeTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkTypeTest.java
index 7e09c96..a30bb36 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkTypeTest.java
@@ -17,6 +17,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -25,11 +26,8 @@
 @RunWith(JUnit4.class)
 public final class SkylarkTypeTest {
 
-  @SkylarkModule(
-      name = "ParentType",
-      doc = "A parent class annotated with @SkylarkModule."
-  )
-  private static class ParentClassWithSkylarkModule {}
+  @SkylarkModule(name = "ParentType", doc = "A parent class annotated with @SkylarkModule.")
+  private static class ParentClassWithSkylarkModule implements SkylarkValue {}
 
   private static class ChildClass extends ParentClassWithSkylarkModule {}
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFlagGuardingTest.java b/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFlagGuardingTest.java
index faa7339..04321ad 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFlagGuardingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/StarlarkFlagGuardingTest.java
@@ -16,6 +16,7 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
 import com.google.devtools.build.lib.syntax.util.EvaluationTestCase;
 import com.google.devtools.build.lib.testutil.TestMode;
@@ -38,7 +39,7 @@
 
   /** Mock containing exposed methods for flag-guarding tests. */
   @SkylarkModule(name = "Mock", doc = "")
-  public static class Mock {
+  public static class Mock implements SkylarkValue {
 
     @SkylarkCallable(
         name = "positionals_only_method",
