bazel skydoc: consolidate the fake environment

This change merges the two essentially identical functions
that populate the "fake" predeclared .bzl environment used
by skydoc and docgen. The function is in FakeApi.

Also:
- consolidate all the fake API into a single build target.
  (So much fuss for so little actual code.)
- delete TopLevelBootstrap, which is obfuscating fluff.
PiperOrigin-RevId: 332503771
diff --git a/src/main/java/com/google/devtools/build/docgen/BUILD b/src/main/java/com/google/devtools/build/docgen/BUILD
index c1d9b15..241a920 100644
--- a/src/main/java/com/google/devtools/build/docgen/BUILD
+++ b/src/main/java/com/google/devtools/build/docgen/BUILD
@@ -18,32 +18,10 @@
         "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//src/main/java/com/google/devtools/build/lib/packages",
         "//src/main/java/com/google/devtools/build/lib/pkgcache",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test",
         "//src/main/java/com/google/devtools/build/lib/util",
         "//src/main/java/com/google/devtools/build/lib/util:classpath",
         "//src/main/java/com/google/devtools/build/lib/util:filetype",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/java/net/starlark/java/annot",
         "//src/main/java/net/starlark/java/eval",
@@ -91,15 +69,6 @@
     srcs = glob(["**"]) + [
         "//src/main/java/com/google/devtools/build/docgen/annot:srcs",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test:srcs",
         "//src/main/java/com/google/devtools/build/skydoc/rendering:srcs",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
index 101c040..8bbc50c 100644
--- a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
+++ b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
@@ -18,78 +18,8 @@
 import com.google.common.collect.Lists;
 import com.google.devtools.build.docgen.starlark.StarlarkBuiltinDoc;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
-import com.google.devtools.build.lib.starlarkbuildapi.TopLevelBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.config.ConfigBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.java.JavaBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.platform.PlatformBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.python.PyBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.stubs.ProviderStub;
-import com.google.devtools.build.lib.starlarkbuildapi.stubs.StarlarkAspectStub;
-import com.google.devtools.build.lib.starlarkbuildapi.test.TestingBootstrap;
 import com.google.devtools.build.lib.util.Classpath.ClassPathException;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeActionsInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeBuildApiGlobals;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeConfigApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeDefaultInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeOutputGroupInfo.FakeOutputGroupInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkAttrModuleApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkCommandLineApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkNativeModuleApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkRuleFunctionsApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidApplicationResourceInfo.FakeAndroidApplicationResourceInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidAssetsInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidBinaryDataInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidCcLinkParamsProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidFeatureFlagSetProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdeInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdlProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryAarInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryResourceClassJarProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidManifestInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidPreDexJarProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidProguardInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSdkProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidStarlarkCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeDataBindingV2Provider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeProguardMappingProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary;
-import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigStarlarkCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcToolchainConfigInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeGoWrapCcHelper;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyCcLinkParamsProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcHelper;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeProguardSpecProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoInfo.FakeProtoInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyInfo.FakePyInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyRuntimeInfo.FakePyRuntimeInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyStarlarkTransitions;
-import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisFailureInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisTestResultInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeCoverageCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeInstrumentedFilesInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeApi;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -117,7 +47,15 @@
     this.nativeRules =
         ImmutableList.copyOf(collectNativeRules(productName, provider, inputDirs, blackList));
     this.globals = Starlark.UNIVERSE;
-    this.bzlGlobals = ImmutableMap.copyOf(collectBzlGlobals());
+
+    ImmutableMap.Builder<String, Object> env = ImmutableMap.builder();
+    FakeApi.addPredeclared(
+        env,
+        /*rules=*/ Lists.newArrayList(),
+        /*providers=*/ Lists.newArrayList(),
+        /*aspects=*/ Lists.newArrayList());
+    this.bzlGlobals = env.build();
+
     this.types = StarlarkDocumentationCollector.getAllModules();
   }
 
@@ -163,103 +101,6 @@
     return processor.getNativeRules();
   }
 
-  /*
-   * Collects a mapping between names and Starlark entities that are available only in BZL files
-   */
-  private Map<String, Object> collectBzlGlobals() {
-    ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder();
-    TopLevelBootstrap topLevelBootstrap =
-        new TopLevelBootstrap(
-            new FakeBuildApiGlobals(),
-            new FakeStarlarkAttrModuleApi(),
-            new FakeStarlarkCommandLineApi(),
-            new FakeStarlarkNativeModuleApi(),
-            new FakeStarlarkRuleFunctionsApi(
-                Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList()),
-            new FakeStructProviderApi(),
-            new FakeOutputGroupInfoProvider(),
-            new FakeActionsInfoProvider(),
-            new FakeDefaultInfoProvider());
-    AndroidBootstrap androidBootstrap =
-        new AndroidBootstrap(
-            new FakeAndroidStarlarkCommon(),
-            new FakeApkInfoProvider(),
-            new FakeAndroidInstrumentationInfoProvider(),
-            new FakeAndroidDeviceBrokerInfoProvider(),
-            new FakeAndroidResourcesInfoProvider(),
-            new FakeAndroidNativeLibsInfoProvider(),
-            new FakeAndroidApplicationResourceInfoProvider(),
-            new FakeAndroidSdkProvider.FakeProvider(),
-            new FakeAndroidManifestInfo.FakeProvider(),
-            new FakeAndroidAssetsInfo.FakeProvider(),
-            new FakeAndroidLibraryAarInfo.FakeProvider(),
-            new FakeAndroidProguardInfo.FakeProvider(),
-            new FakeAndroidIdlProvider.FakeProvider(),
-            new FakeAndroidIdeInfoProvider.FakeProvider(),
-            new FakeAndroidPreDexJarProvider.FakeProvider(),
-            new FakeAndroidCcLinkParamsProvider.FakeProvider(),
-            new FakeDataBindingV2Provider.FakeProvider(),
-            new FakeAndroidLibraryResourceClassJarProvider.FakeProvider(),
-            new FakeAndroidFeatureFlagSetProvider.FakeProvider(),
-            new FakeProguardMappingProvider.FakeProvider(),
-            new FakeAndroidBinaryDataInfo.FakeProvider());
-    AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
-    ConfigBootstrap configBootstrap =
-        new ConfigBootstrap(
-            new FakeConfigStarlarkCommon(), new FakeConfigApi(), new FakeConfigGlobalLibrary());
-    CcBootstrap ccBootstrap =
-        new CcBootstrap(
-            new FakeCcModule(),
-            new FakeCcInfo.Provider(),
-            new FakeCcToolchainConfigInfo.Provider(),
-            new FakePyWrapCcHelper(),
-            new FakeGoWrapCcHelper(),
-            new FakePyWrapCcInfo.Provider(),
-            new FakePyCcLinkParamsProvider.Provider());
-    JavaBootstrap javaBootstrap =
-        new JavaBootstrap(
-            new FakeJavaCommon(),
-            new FakeJavaInfoProvider(),
-            new FakeJavaProtoCommon(),
-            new FakeJavaCcLinkParamsProvider.Provider(),
-            new FakeProguardSpecProvider.FakeProvider());
-    PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
-    ProtoBootstrap protoBootstrap =
-        new ProtoBootstrap(
-            new FakeProtoInfoProvider(),
-            new FakeProtoCommon(),
-            new StarlarkAspectStub(),
-            new ProviderStub());
-    PyBootstrap pyBootstrap =
-        new PyBootstrap(
-            new FakePyInfoProvider(),
-            new FakePyRuntimeInfoProvider(),
-            new FakePyStarlarkTransitions());
-    RepositoryBootstrap repositoryBootstrap =
-        new RepositoryBootstrap(new FakeRepositoryModule(Lists.newArrayList()));
-    TestingBootstrap testingBootstrap =
-        new TestingBootstrap(
-            new FakeTestingModule(),
-            new FakeCoverageCommon(),
-            new FakeInstrumentedFilesInfoProvider(),
-            new FakeAnalysisFailureInfoProvider(),
-            new FakeAnalysisTestResultInfoProvider());
-
-    topLevelBootstrap.addBindingsToBuilder(envBuilder);
-    androidBootstrap.addBindingsToBuilder(envBuilder);
-    appleBootstrap.addBindingsToBuilder(envBuilder);
-    ccBootstrap.addBindingsToBuilder(envBuilder);
-    configBootstrap.addBindingsToBuilder(envBuilder);
-    javaBootstrap.addBindingsToBuilder(envBuilder);
-    platformBootstrap.addBindingsToBuilder(envBuilder);
-    protoBootstrap.addBindingsToBuilder(envBuilder);
-    pyBootstrap.addBindingsToBuilder(envBuilder);
-    repositoryBootstrap.addBindingsToBuilder(envBuilder);
-    testingBootstrap.addBindingsToBuilder(envBuilder);
-
-    return envBuilder.build();
-  }
-
   private ConfiguredRuleClassProvider createRuleClassProvider(String classProvider)
       throws NoSuchMethodException, InvocationTargetException, IllegalAccessException,
           ClassNotFoundException {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index 923fe95..dab01e4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -743,7 +743,7 @@
       ImmutableMap<String, Object> nativeRuleSpecificBindings) {
     ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder();
     // Add predeclared symbols of the Bazel build language.
-    StarlarkModules.addStarlarkGlobalsToBuilder(envBuilder);
+    StarlarkModules.addPredeclared(envBuilder);
     // Add all the extensions registered with the rule class provider.
     envBuilder.putAll(nativeRuleSpecificBindings);
     return envBuilder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java
index 3cd7b44..854b0af 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java
@@ -21,30 +21,26 @@
 import com.google.devtools.build.lib.packages.StarlarkLibrary;
 import com.google.devtools.build.lib.packages.StarlarkNativeModule;
 import com.google.devtools.build.lib.packages.StructProvider;
-import com.google.devtools.build.lib.starlarkbuildapi.TopLevelBootstrap;
+import net.starlark.java.eval.Starlark;
 
-/** The basis for a Starlark Environment with all build-related modules registered. */
+/** The basis for a Starlark Environment with various build-related modules registered. */
 public final class StarlarkModules {
 
-  private StarlarkModules() { }
+  private StarlarkModules() {}
 
-  /** A bootstrap for non-rules-specific built-ins of the build API. */
-  private static TopLevelBootstrap topLevelBootstrap =
-      new TopLevelBootstrap(
-          new BazelBuildApiGlobals(),
-          new StarlarkAttrModule(),
-          new StarlarkCommandLine(),
-          new StarlarkNativeModule(),
-          new StarlarkRuleClassFunctions(),
-          StructProvider.STRUCT,
-          OutputGroupInfo.STARLARK_CONSTRUCTOR,
-          ActionsProvider.INSTANCE,
-          DefaultInfo.PROVIDER);
+  // excludes native. platform_common, UNIVRESE
 
   /** Adds predeclared Starlark bindings for the Bazel build language. */
-  // TODO(adonovan): rename "globals" -> "builtins"
-  public static void addStarlarkGlobalsToBuilder(ImmutableMap.Builder<String, Object> predeclared) {
+  public static void addPredeclared(ImmutableMap.Builder<String, Object> predeclared) {
     predeclared.putAll(StarlarkLibrary.COMMON); // e.g. select, depset
-    topLevelBootstrap.addBindingsToBuilder(predeclared);
+    Starlark.addMethods(predeclared, new BazelBuildApiGlobals()); // e.g. configuration_field
+    Starlark.addMethods(predeclared, new StarlarkRuleClassFunctions()); // e.g. rule
+    Starlark.addModule(predeclared, new StarlarkCommandLine()); // cmd_helper module
+    Starlark.addModule(predeclared, new StarlarkAttrModule()); // attr module
+    Starlark.addModule(predeclared, new StarlarkNativeModule()); // native module
+    predeclared.put("struct", StructProvider.STRUCT);
+    predeclared.put("OutputGroupInfo", OutputGroupInfo.STARLARK_CONSTRUCTOR);
+    predeclared.put("Actions", ActionsProvider.INSTANCE);
+    predeclared.put("DefaultInfo", DefaultInfo.PROVIDER);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TopLevelBootstrap.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TopLevelBootstrap.java
deleted file mode 100644
index 42070ee..0000000
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TopLevelBootstrap.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2018 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.starlarkbuildapi;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.starlarkbuildapi.DefaultInfoApi.DefaultInfoApiProvider;
-import com.google.devtools.build.lib.starlarkbuildapi.OutputGroupInfoApi.OutputGroupInfoApiProvider;
-import com.google.devtools.build.lib.starlarkbuildapi.core.Bootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
-import net.starlark.java.eval.Starlark;
-
-/**
- * A {@link Bootstrap} for top-level libraries of the build API.
- */
-public class TopLevelBootstrap implements Bootstrap {
-  private final StarlarkBuildApiGlobals starlarkBuildApiGlobals;
-  private final StarlarkAttrModuleApi starlarkAttrModuleApi;
-  private final StarlarkCommandLineApi starlarkCommandLineApi;
-  private final StarlarkNativeModuleApi starlarkNativeModuleApi;
-  private final StarlarkRuleFunctionsApi<?> starlarkRuleFunctionsApi;
-  private final StructApi.StructProviderApi structProvider;
-  private final OutputGroupInfoApiProvider outputGroupInfoProvider;
-  private final ActionsInfoProviderApi actionsInfoProviderApi;
-  private final DefaultInfoApiProvider<?, ?> defaultInfoProvider;
-
-  public TopLevelBootstrap(
-      StarlarkBuildApiGlobals starlarkBuildApiGlobals,
-      StarlarkAttrModuleApi starlarkAttrModuleApi,
-      StarlarkCommandLineApi starlarkCommandLineApi,
-      StarlarkNativeModuleApi starlarkNativeModuleApi,
-      StarlarkRuleFunctionsApi<?> starlarkRuleFunctionsApi,
-      StructApi.StructProviderApi structProvider,
-      OutputGroupInfoApiProvider outputGroupInfoProvider,
-      ActionsInfoProviderApi actionsInfoProviderApi,
-      DefaultInfoApiProvider<?, ?> defaultInfoProvider) {
-    this.starlarkAttrModuleApi = starlarkAttrModuleApi;
-    this.starlarkBuildApiGlobals = starlarkBuildApiGlobals;
-    this.starlarkCommandLineApi = starlarkCommandLineApi;
-    this.starlarkNativeModuleApi = starlarkNativeModuleApi;
-    this.starlarkRuleFunctionsApi = starlarkRuleFunctionsApi;
-    this.structProvider = structProvider;
-    this.outputGroupInfoProvider = outputGroupInfoProvider;
-    this.actionsInfoProviderApi = actionsInfoProviderApi;
-    this.defaultInfoProvider = defaultInfoProvider;
-  }
-
-  @Override
-  public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) {
-    Starlark.addMethods(builder, starlarkBuildApiGlobals);
-    Starlark.addMethods(builder, starlarkRuleFunctionsApi);
-    Starlark.addModule(builder, starlarkAttrModuleApi); // "attr"
-    Starlark.addModule(builder, starlarkCommandLineApi); // "cmd_helper"
-    Starlark.addModule(builder, starlarkNativeModuleApi); // "native"
-    builder.put("struct", structProvider);
-    builder.put("OutputGroupInfo", outputGroupInfoProvider);
-    builder.put("Actions", actionsInfoProviderApi);
-    builder.put("DefaultInfo", defaultInfoProvider);
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD
index 3d02297..9904520 100644
--- a/src/main/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -12,22 +12,12 @@
     default_visibility = ["//src:__subpackages__"],
 )
 
-licenses(["notice"])  # Apache 2.0
+licenses(["notice"])
 
 filegroup(
     name = "srcs",
     srcs = glob(["**"]) + [
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository:srcs",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test:srcs",
         "//src/main/java/com/google/devtools/build/skydoc/renderer:srcs",
         "//src/main/java/com/google/devtools/build/skydoc/rendering:srcs",
         "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:srcs",
@@ -76,16 +66,6 @@
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test",
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test",
         "//src/main/java/com/google/devtools/build/skydoc/rendering",
         "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto",
         "//src/main/java/com/google/devtools/common/options",
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
index 664a54c..c235d4e 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -28,83 +28,13 @@
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
-import com.google.devtools.build.lib.starlarkbuildapi.TopLevelBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBootstrap;
 import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidDex2OatInfoApi;
 import com.google.devtools.build.lib.starlarkbuildapi.android.UsesDataBindingProviderApi;
-import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.config.ConfigBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcBootstrap;
 import com.google.devtools.build.lib.starlarkbuildapi.java.GeneratedExtensionRegistryProviderApi;
-import com.google.devtools.build.lib.starlarkbuildapi.java.JavaBootstrap;
 import com.google.devtools.build.lib.starlarkbuildapi.java.JavaNativeLibraryInfoApi;
 import com.google.devtools.build.lib.starlarkbuildapi.javascript.JsModuleInfoApi;
-import com.google.devtools.build.lib.starlarkbuildapi.platform.PlatformBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.python.PyBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap;
-import com.google.devtools.build.lib.starlarkbuildapi.stubs.ProviderStub;
-import com.google.devtools.build.lib.starlarkbuildapi.stubs.StarlarkAspectStub;
-import com.google.devtools.build.lib.starlarkbuildapi.test.TestingBootstrap;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeActionsInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeBuildApiGlobals;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeConfigApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeDefaultInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeOutputGroupInfo.FakeOutputGroupInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkAttrModuleApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkCommandLineApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkNativeModuleApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkRuleFunctionsApi;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeApi;
 import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi;
-import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidApplicationResourceInfo.FakeAndroidApplicationResourceInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidAssetsInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidBinaryDataInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidCcLinkParamsProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidFeatureFlagSetProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdeInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdlProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryAarInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryResourceClassJarProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidManifestInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidPreDexJarProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidProguardInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSdkProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidStarlarkCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeDataBindingV2Provider;
-import com.google.devtools.build.skydoc.fakebuildapi.android.FakeProguardMappingProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary;
-import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigStarlarkCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcToolchainConfigInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeGoWrapCcHelper;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyCcLinkParamsProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcHelper;
-import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcInfo;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.java.FakeProguardSpecProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoInfo.FakeProtoInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyInfo.FakePyInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyRuntimeInfo.FakePyRuntimeInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyStarlarkTransitions;
-import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisFailureInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisTestResultInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeCoverageCommon;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeInstrumentedFilesInfoProvider;
-import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule;
 import com.google.devtools.build.skydoc.rendering.AspectInfoWrapper;
 import com.google.devtools.build.skydoc.rendering.DocstringParseException;
 import com.google.devtools.build.skydoc.rendering.ProtoRenderer;
@@ -440,9 +370,11 @@
     }
     pending.add(path);
 
-    Module module =
-        Module.withPredeclared(
-            semantics, getPredeclaredEnvironment(ruleInfoList, providerInfoList, aspectInfoList));
+    // Add fake build API.
+    ImmutableMap.Builder<String, Object> env = ImmutableMap.builder();
+    FakeApi.addPredeclared(env, ruleInfoList, providerInfoList, aspectInfoList);
+    addMorePredeclared(env);
+    Module module = Module.withPredeclared(semantics, env.build());
 
     // parse & compile (and get doc)
     ParserInput input = getInputSource(path.toString());
@@ -517,110 +449,12 @@
     throw new NoSuchFileException(bzlWorkspacePath);
   }
 
-  /**
-   * Return the predeclared environment containing the fake build API.
-   *
-   * @param ruleInfoList the list of {@link RuleInfo} objects, to which rule() invocation
-   *     information will be added
-   * @param providerInfoList the list of {@link ProviderInfo} objects, to which provider()
-   *     invocation information will be added
-   */
-  private static ImmutableMap<String, Object> getPredeclaredEnvironment(
-      List<RuleInfoWrapper> ruleInfoList,
-      List<ProviderInfoWrapper> providerInfoList,
-      List<AspectInfoWrapper> aspectInfoList) {
-    TopLevelBootstrap topLevelBootstrap =
-        new TopLevelBootstrap(
-            new FakeBuildApiGlobals(),
-            new FakeStarlarkAttrModuleApi(),
-            new FakeStarlarkCommandLineApi(),
-            new FakeStarlarkNativeModuleApi(),
-            new FakeStarlarkRuleFunctionsApi(ruleInfoList, providerInfoList, aspectInfoList),
-            new FakeStructProviderApi(),
-            new FakeOutputGroupInfoProvider(),
-            new FakeActionsInfoProvider(),
-            new FakeDefaultInfoProvider());
-    AndroidBootstrap androidBootstrap =
-        new AndroidBootstrap(
-            new FakeAndroidStarlarkCommon(),
-            new FakeApkInfoProvider(),
-            new FakeAndroidInstrumentationInfoProvider(),
-            new FakeAndroidDeviceBrokerInfoProvider(),
-            new FakeAndroidResourcesInfoProvider(),
-            new FakeAndroidNativeLibsInfoProvider(),
-            new FakeAndroidApplicationResourceInfoProvider(),
-            new FakeAndroidSdkProvider.FakeProvider(),
-            new FakeAndroidManifestInfo.FakeProvider(),
-            new FakeAndroidAssetsInfo.FakeProvider(),
-            new FakeAndroidLibraryAarInfo.FakeProvider(),
-            new FakeAndroidProguardInfo.FakeProvider(),
-            new FakeAndroidIdlProvider.FakeProvider(),
-            new FakeAndroidIdeInfoProvider.FakeProvider(),
-            new FakeAndroidPreDexJarProvider.FakeProvider(),
-            new FakeAndroidCcLinkParamsProvider.FakeProvider(),
-            new FakeDataBindingV2Provider.FakeProvider(),
-            new FakeAndroidLibraryResourceClassJarProvider.FakeProvider(),
-            new FakeAndroidFeatureFlagSetProvider.FakeProvider(),
-            new FakeProguardMappingProvider.FakeProvider(),
-            new FakeAndroidBinaryDataInfo.FakeProvider());
-    AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
-    ConfigBootstrap configBootstrap =
-        new ConfigBootstrap(
-            new FakeConfigStarlarkCommon(), new FakeConfigApi(), new FakeConfigGlobalLibrary());
-    CcBootstrap ccBootstrap =
-        new CcBootstrap(
-            new FakeCcModule(),
-            new FakeCcInfo.Provider(),
-            new FakeCcToolchainConfigInfo.Provider(),
-            new FakePyWrapCcHelper(),
-            new FakeGoWrapCcHelper(),
-            new FakePyWrapCcInfo.Provider(),
-            new FakePyCcLinkParamsProvider.Provider());
-    JavaBootstrap javaBootstrap =
-        new JavaBootstrap(
-            new FakeJavaCommon(),
-            new FakeJavaInfoProvider(),
-            new FakeJavaProtoCommon(),
-            new FakeJavaCcLinkParamsProvider.Provider(),
-            new FakeProguardSpecProvider.FakeProvider());
-    PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
-    ProtoBootstrap protoBootstrap =
-        new ProtoBootstrap(
-            new FakeProtoInfoProvider(),
-            new FakeProtoCommon(),
-            new StarlarkAspectStub(),
-            new ProviderStub());
-    PyBootstrap pyBootstrap =
-        new PyBootstrap(
-            new FakePyInfoProvider(),
-            new FakePyRuntimeInfoProvider(),
-            new FakePyStarlarkTransitions());
-    RepositoryBootstrap repositoryBootstrap =
-        new RepositoryBootstrap(new FakeRepositoryModule(ruleInfoList));
-    TestingBootstrap testingBootstrap =
-        new TestingBootstrap(
-            new FakeTestingModule(),
-            new FakeCoverageCommon(),
-            new FakeInstrumentedFilesInfoProvider(),
-            new FakeAnalysisFailureInfoProvider(),
-            new FakeAnalysisTestResultInfoProvider());
-
-    ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder();
-
-    // Add stub declarations for Blaze-only things as a quick fix
-    // for a broken test; see b/155126966 and b/155178103.
-    // TODO(adonovan): fix properly ASAP.
-    for (String name :
-        new String[] {
-          "js_common",
-          "pkg_common",
-        }) {
-      envBuilder.put(name, Starlark.NONE);
-    }
+  private static void addMorePredeclared(ImmutableMap.Builder<String, Object> env) {
+    addNonBootstrapGlobals(env);
 
     // Add dummy declarations that would come from packages.StarlarkLibrary.COMMON
     // were Skydoc allowed to depend on it. See hack for select below.
-    envBuilder.put(
+    env.put(
         "depset",
         new StarlarkCallable() {
           @Override
@@ -639,7 +473,7 @@
     // Declare a fake implementation of select that just returns the first
     // value in the dict. (This program is forbidden from depending on the real
     // implementation of 'select' in lib.packages, and so the hacks multiply.)
-    envBuilder.put(
+    env.put(
         "select",
         new StarlarkCallable() {
           @Override
@@ -656,21 +490,6 @@
             return "select";
           }
         });
-
-    topLevelBootstrap.addBindingsToBuilder(envBuilder);
-    androidBootstrap.addBindingsToBuilder(envBuilder);
-    appleBootstrap.addBindingsToBuilder(envBuilder);
-    ccBootstrap.addBindingsToBuilder(envBuilder);
-    configBootstrap.addBindingsToBuilder(envBuilder);
-    javaBootstrap.addBindingsToBuilder(envBuilder);
-    platformBootstrap.addBindingsToBuilder(envBuilder);
-    protoBootstrap.addBindingsToBuilder(envBuilder);
-    pyBootstrap.addBindingsToBuilder(envBuilder);
-    repositoryBootstrap.addBindingsToBuilder(envBuilder);
-    testingBootstrap.addBindingsToBuilder(envBuilder);
-    addNonBootstrapGlobals(envBuilder);
-
-    return envBuilder.build();
   }
 
   // TODO(cparsons): Remove this constant by migrating the contained symbols to bootstraps.
@@ -681,7 +500,9 @@
     GeneratedExtensionRegistryProviderApi.NAME,
     JavaNativeLibraryInfoApi.NAME,
     JsModuleInfoApi.NAME,
-    "JsInfo"
+    "JsInfo",
+    "js_common",
+    "pkg_common",
   };
 
   /**
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD
index 802fdbb..27f81b0 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD
@@ -13,13 +13,25 @@
 
 java_library(
     name = "fakebuildapi",
-    srcs = glob(["*.java"]),
+    srcs = glob(["**/*.java"]),
     deps = [
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/events",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs",
+        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test",
         "//src/main/java/com/google/devtools/build/skydoc/rendering",
         "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto",
         "//src/main/java/net/starlark/java/eval",
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeApi.java
new file mode 100644
index 0000000..11ea82d
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeApi.java
@@ -0,0 +1,188 @@
+// Copyright 2020 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.skydoc.fakebuildapi;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.config.ConfigBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.java.JavaBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.platform.PlatformBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.python.PyBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap;
+import com.google.devtools.build.lib.starlarkbuildapi.stubs.ProviderStub;
+import com.google.devtools.build.lib.starlarkbuildapi.stubs.StarlarkAspectStub;
+import com.google.devtools.build.lib.starlarkbuildapi.test.TestingBootstrap;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeOutputGroupInfo.FakeOutputGroupInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidApplicationResourceInfo.FakeAndroidApplicationResourceInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidAssetsInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidBinaryDataInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidCcLinkParamsProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidFeatureFlagSetProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdeInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdlProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryAarInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryResourceClassJarProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidManifestInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidPreDexJarProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidProguardInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSdkProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidStarlarkCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeDataBindingV2Provider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeProguardMappingProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary;
+import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigStarlarkCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcToolchainConfigInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeGoWrapCcHelper;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyCcLinkParamsProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcHelper;
+import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcInfo;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeProguardSpecProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoInfo.FakeProtoInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyInfo.FakePyInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyRuntimeInfo.FakePyRuntimeInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyStarlarkTransitions;
+import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule;
+import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisFailureInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisTestResultInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.test.FakeCoverageCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.test.FakeInstrumentedFilesInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule;
+import com.google.devtools.build.skydoc.rendering.AspectInfoWrapper;
+import com.google.devtools.build.skydoc.rendering.ProviderInfoWrapper;
+import com.google.devtools.build.skydoc.rendering.RuleInfoWrapper;
+import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.AspectInfo;
+import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.ProviderInfo;
+import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.RuleInfo;
+import java.util.List;
+import net.starlark.java.eval.Starlark;
+
+/** Defines the fake .bzl environment. */
+public final class FakeApi {
+
+  private FakeApi() {} // uninstantiable
+
+  /**
+   * Adds the predeclared environment containing the fake build API.
+   *
+   * @param rules the list of {@link RuleInfo} objects, to which 'rule' and 'repository_rule'
+   *     invocation information will be added
+   * @param providers the list of {@link ProviderInfo} objects, to which 'provider' invocation
+   *     information will be added
+   * @param aspects the list of {@link AspectInfo} objects, to which 'aspect' invocation information
+   *     will be added
+   */
+  public static void addPredeclared(
+      ImmutableMap.Builder<String, Object> env,
+      /* out parameters: */
+      List<RuleInfoWrapper> rules,
+      List<ProviderInfoWrapper> providers,
+      List<AspectInfoWrapper> aspects) {
+
+    Starlark.addMethods(env, new FakeBuildApiGlobals()); // e.g. configuration_field func
+    Starlark.addMethods(
+        env, new FakeStarlarkRuleFunctionsApi(rules, providers, aspects)); // e.g. rule func
+    Starlark.addModule(env, new FakeStarlarkAttrModuleApi()); // attr module
+    Starlark.addModule(env, new FakeStarlarkCommandLineApi()); // cmd_helper module
+    Starlark.addModule(env, new FakeStarlarkNativeModuleApi()); // native module
+    env.put("struct", new FakeStructProviderApi());
+    env.put("OutputGroupInfo", new FakeOutputGroupInfoProvider());
+    env.put("Actions", new FakeActionsInfoProvider());
+    env.put("DefaultInfo", new FakeDefaultInfoProvider());
+
+    new AndroidBootstrap(
+            new FakeAndroidStarlarkCommon(),
+            new FakeApkInfoProvider(),
+            new FakeAndroidInstrumentationInfoProvider(),
+            new FakeAndroidDeviceBrokerInfoProvider(),
+            new FakeAndroidResourcesInfoProvider(),
+            new FakeAndroidNativeLibsInfoProvider(),
+            new FakeAndroidApplicationResourceInfoProvider(),
+            new FakeAndroidSdkProvider.FakeProvider(),
+            new FakeAndroidManifestInfo.FakeProvider(),
+            new FakeAndroidAssetsInfo.FakeProvider(),
+            new FakeAndroidLibraryAarInfo.FakeProvider(),
+            new FakeAndroidProguardInfo.FakeProvider(),
+            new FakeAndroidIdlProvider.FakeProvider(),
+            new FakeAndroidIdeInfoProvider.FakeProvider(),
+            new FakeAndroidPreDexJarProvider.FakeProvider(),
+            new FakeAndroidCcLinkParamsProvider.FakeProvider(),
+            new FakeDataBindingV2Provider.FakeProvider(),
+            new FakeAndroidLibraryResourceClassJarProvider.FakeProvider(),
+            new FakeAndroidFeatureFlagSetProvider.FakeProvider(),
+            new FakeProguardMappingProvider.FakeProvider(),
+            new FakeAndroidBinaryDataInfo.FakeProvider())
+        .addBindingsToBuilder(env);
+    new AppleBootstrap(new FakeAppleCommon()).addBindingsToBuilder(env);
+    new ConfigBootstrap(
+            new FakeConfigStarlarkCommon(), //
+            new FakeConfigApi(),
+            new FakeConfigGlobalLibrary())
+        .addBindingsToBuilder(env);
+    new CcBootstrap(
+            new FakeCcModule(),
+            new FakeCcInfo.Provider(),
+            new FakeCcToolchainConfigInfo.Provider(),
+            new FakePyWrapCcHelper(),
+            new FakeGoWrapCcHelper(),
+            new FakePyWrapCcInfo.Provider(),
+            new FakePyCcLinkParamsProvider.Provider())
+        .addBindingsToBuilder(env);
+    new JavaBootstrap(
+            new FakeJavaCommon(),
+            new FakeJavaInfoProvider(),
+            new FakeJavaProtoCommon(),
+            new FakeJavaCcLinkParamsProvider.Provider(),
+            new FakeProguardSpecProvider.FakeProvider())
+        .addBindingsToBuilder(env);
+    new PlatformBootstrap(new FakePlatformCommon()).addBindingsToBuilder(env);
+    new ProtoBootstrap(
+            new FakeProtoInfoProvider(),
+            new FakeProtoCommon(),
+            new StarlarkAspectStub(),
+            new ProviderStub())
+        .addBindingsToBuilder(env);
+    new PyBootstrap(
+            new FakePyInfoProvider(),
+            new FakePyRuntimeInfoProvider(),
+            new FakePyStarlarkTransitions())
+        .addBindingsToBuilder(env);
+    new RepositoryBootstrap(new FakeRepositoryModule(rules)).addBindingsToBuilder(env);
+    new TestingBootstrap(
+            new FakeTestingModule(),
+            new FakeCoverageCommon(),
+            new FakeInstrumentedFilesInfoProvider(),
+            new FakeAnalysisFailureInfoProvider(),
+            new FakeAnalysisTestResultInfoProvider())
+        .addBindingsToBuilder(env);
+  }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
deleted file mode 100644
index 1877c02..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
+++ /dev/null
@@ -1,31 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "android",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/events",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
deleted file mode 100644
index 4ffa5c3..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
+++ /dev/null
@@ -1,29 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "apple",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD
deleted file mode 100644
index 85207b9..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "config",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/events",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD
deleted file mode 100644
index 72c92d1..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD
+++ /dev/null
@@ -1,31 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "cpp",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/events",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
deleted file mode 100644
index 89b4c3a..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
+++ /dev/null
@@ -1,32 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "java",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/events",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD
deleted file mode 100644
index f6539f1..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD
+++ /dev/null
@@ -1,22 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "platform",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto/BUILD
deleted file mode 100644
index fff143f..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto/BUILD
+++ /dev/null
@@ -1,26 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "proto",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/BUILD
deleted file mode 100644
index e0d840c..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/BUILD
+++ /dev/null
@@ -1,26 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "python",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/events",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD
deleted file mode 100644
index f0b9960..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD
+++ /dev/null
@@ -1,28 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "repository",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/events",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository",
-        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
-        "//src/main/java/com/google/devtools/build/skydoc/rendering",
-        "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
deleted file mode 100644
index e3b9720..0000000
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
+++ /dev/null
@@ -1,26 +0,0 @@
-load("@rules_java//java:defs.bzl", "java_library")
-
-package(
-    default_visibility = ["//src:__subpackages__"],
-)
-
-licenses(["notice"])  # Apache 2.0
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-java_library(
-    name = "test",
-    srcs = glob(["*.java"]),
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
-        "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test",
-        "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
-        "//third_party:guava",
-    ],
-)
diff --git a/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java b/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
index 5b708e7..485b817 100644
--- a/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
+++ b/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
@@ -55,7 +55,7 @@
   @Test
   public void testStarlarkRuleClassBuiltInItemsAreDocumented() throws Exception {
     ImmutableMap.Builder<String, Object> env = ImmutableMap.builder();
-    StarlarkModules.addStarlarkGlobalsToBuilder(env);
+    StarlarkModules.addPredeclared(env);
     checkStarlarkTopLevelEnvItemsAreDocumented(env.build());
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java b/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java
index 25825a4..a49d14b 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java
@@ -36,7 +36,7 @@
 
   @Override
   protected Object newModuleHook(ImmutableMap.Builder<String, Object> predeclared) {
-    StarlarkModules.addStarlarkGlobalsToBuilder(predeclared);
+    StarlarkModules.addPredeclared(predeclared);
     Starlark.addModule(predeclared, new PlatformCommon());
 
     // Return the module's client data. (This one uses dummy values for tests.)