starlark: move StarlarkDocumentationCategory into docgen

...since the categories are Bazel-specific.

Also:
- introduce a new category, "core", for the built-in
  types of the core Starlark language (int, bool, etc).
  These now appear in their own index.
- Eliminate StarlarkBuiltin.title, whose sole effect
  was to ensure the "G" in <h1>Globals</h1> was uppercase.
PiperOrigin-RevId: 334244374
diff --git a/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationCollector.java b/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationCollector.java
index a3ee2a3..7c3b218 100644
--- a/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationCollector.java
+++ b/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationCollector.java
@@ -16,6 +16,7 @@
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.DocumentMethods;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.docgen.starlark.StarlarkBuiltinDoc;
@@ -28,7 +29,6 @@
 import java.util.TreeMap;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkInterfaceUtils;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Starlark;
@@ -39,8 +39,7 @@
 final class StarlarkDocumentationCollector {
   @StarlarkBuiltin(
       name = "globals",
-      title = "Globals",
-      category = StarlarkDocumentationCategory.TOP_LEVEL_TYPE,
+      category = DocCategory.TOP_LEVEL_TYPE,
       doc = "Objects, functions and modules registered in the global environment.")
   private static final class TopLevelModule implements StarlarkValue {}
 
@@ -76,7 +75,8 @@
     // (This is a special case of {@link StarlarkBuiltinDoc} as it has no object name).
     StarlarkBuiltin topLevelModule = getTopLevelModule();
     modules.put(
-        topLevelModule.name(), new StarlarkBuiltinDoc(topLevelModule, TopLevelModule.class));
+        topLevelModule.name(),
+        new StarlarkBuiltinDoc(topLevelModule, /*title=*/ "Globals", TopLevelModule.class));
 
     // Creating module documentation is done in three passes.
     // 1. Add all classes/interfaces annotated with @StarlarkBuiltin with documented = true.
@@ -149,7 +149,9 @@
     if (moduleAnnotation.documented()) {
       StarlarkBuiltinDoc previousModuleDoc = modules.get(moduleAnnotation.name());
       if (previousModuleDoc == null) {
-        modules.put(moduleAnnotation.name(), new StarlarkBuiltinDoc(moduleAnnotation, moduleClass));
+        modules.put(
+            moduleAnnotation.name(),
+            new StarlarkBuiltinDoc(moduleAnnotation, moduleAnnotation.name(), moduleClass));
       } else {
         // Handle a strange corner-case: If moduleClass has a subclass which is also
         // annotated with {@link StarlarkBuiltin} with the same name, and also has the same
@@ -161,7 +163,9 @@
         if (previousModuleDoc.getClassObject().isAssignableFrom(moduleClass)) {
           // The new module is a subclass of the old module, so use the subclass.
           modules.put(
-              moduleAnnotation.name(), new StarlarkBuiltinDoc(moduleAnnotation, moduleClass));
+              moduleAnnotation.name(),
+              new StarlarkBuiltinDoc(
+                  moduleAnnotation, /*title=*/ moduleAnnotation.name(), moduleClass));
         }
       }
     }
diff --git a/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationProcessor.java b/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationProcessor.java
index 6b44636..49ebafe 100644
--- a/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationProcessor.java
+++ b/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationProcessor.java
@@ -14,6 +14,7 @@
 package com.google.devtools.build.docgen;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.starlark.StarlarkBuiltinDoc;
 import com.google.devtools.build.docgen.starlark.StarlarkDocUtils;
 import com.google.devtools.build.docgen.starlark.StarlarkMethodDoc;
@@ -28,14 +29,13 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.TreeMap;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
+import net.starlark.java.annot.StarlarkBuiltin;
 
 /** A class to assemble documentation for Starlark. */
 public final class StarlarkDocumentationProcessor {
 
-  private static final ImmutableList<StarlarkDocumentationCategory> GLOBAL_CATEGORIES =
-      ImmutableList.<StarlarkDocumentationCategory>of(
-          StarlarkDocumentationCategory.NONE, StarlarkDocumentationCategory.TOP_LEVEL_TYPE);
+  private static final ImmutableList<Category> GLOBAL_CATEGORIES =
+      ImmutableList.<Category>of(Category.NONE, Category.TOP_LEVEL_TYPE);
 
   private StarlarkDocumentationProcessor() {}
 
@@ -54,29 +54,28 @@
 
     // Use a LinkedHashMap to preserve ordering of categories, as the output iterates over
     // this map's entry set to determine category ordering.
-    Map<StarlarkDocumentationCategory, List<StarlarkBuiltinDoc>> modulesByCategory =
-        new LinkedHashMap<>();
-    for (StarlarkDocumentationCategory c : StarlarkDocumentationCategory.values()) {
+    Map<Category, List<StarlarkBuiltinDoc>> modulesByCategory = new LinkedHashMap<>();
+    for (Category c : Category.values()) {
       modulesByCategory.put(c, new ArrayList<StarlarkBuiltinDoc>());
     }
 
-    modulesByCategory.get(topLevelModule.getAnnotation().category()).add(topLevelModule);
+    modulesByCategory.get(Category.of(topLevelModule.getAnnotation())).add(topLevelModule);
 
     for (StarlarkBuiltinDoc module : modules.values()) {
       if (module.getAnnotation().documented()) {
         writePage(outputDir, module);
-        modulesByCategory.get(module.getAnnotation().category()).add(module);
+        modulesByCategory.get(Category.of(module.getAnnotation())).add(module);
       }
     }
     Collator us = Collator.getInstance(Locale.US);
     for (List<StarlarkBuiltinDoc> module : modulesByCategory.values()) {
       Collections.sort(module, (doc1, doc2) -> us.compare(doc1.getTitle(), doc2.getTitle()));
     }
-    writeCategoryPage(
-        StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT, outputDir, modulesByCategory);
-    writeCategoryPage(StarlarkDocumentationCategory.BUILTIN, outputDir, modulesByCategory);
-    writeCategoryPage(StarlarkDocumentationCategory.PROVIDER, outputDir, modulesByCategory);
-    writeNavPage(outputDir, modulesByCategory.get(StarlarkDocumentationCategory.TOP_LEVEL_TYPE));
+    writeCategoryPage(Category.CORE, outputDir, modulesByCategory);
+    writeCategoryPage(Category.CONFIGURATION_FRAGMENT, outputDir, modulesByCategory);
+    writeCategoryPage(Category.BUILTIN, outputDir, modulesByCategory);
+    writeCategoryPage(Category.PROVIDER, outputDir, modulesByCategory);
+    writeNavPage(outputDir, modulesByCategory.get(Category.TOP_LEVEL_TYPE));
 
     // In the code, there are two StarlarkModuleCategory instances that have no heading:
     // TOP_LEVEL_TYPE and NONE.
@@ -100,7 +99,7 @@
     }
 
     List<StarlarkBuiltinDoc> globalModules = new ArrayList<>();
-    for (StarlarkDocumentationCategory globalCategory : GLOBAL_CATEGORIES) {
+    for (Category globalCategory : GLOBAL_CATEGORIES) {
       for (StarlarkBuiltinDoc module : modulesByCategory.remove(globalCategory)) {
         if (!module.getName().equals(globalModule.getName())) {
           globalModules.add(module);
@@ -119,9 +118,8 @@
   }
 
   private static StarlarkBuiltinDoc findGlobalModule(
-      Map<StarlarkDocumentationCategory, List<StarlarkBuiltinDoc>> modulesByCategory) {
-    List<StarlarkBuiltinDoc> topLevelModules =
-        modulesByCategory.get(StarlarkDocumentationCategory.TOP_LEVEL_TYPE);
+      Map<Category, List<StarlarkBuiltinDoc>> modulesByCategory) {
+    List<StarlarkBuiltinDoc> topLevelModules = modulesByCategory.get(Category.TOP_LEVEL_TYPE);
     String globalModuleName = StarlarkDocumentationCollector.getTopLevelModule().name();
     for (StarlarkBuiltinDoc module : topLevelModules) {
       if (module.getName().equals(globalModuleName)) {
@@ -140,16 +138,14 @@
   }
 
   private static void writeCategoryPage(
-      StarlarkDocumentationCategory category,
-      String outputDir,
-      Map<StarlarkDocumentationCategory, List<StarlarkBuiltinDoc>> modules)
+      Category category, String outputDir, Map<Category, List<StarlarkBuiltinDoc>> modules)
       throws IOException {
     File starlarkDocPath =
         new File(String.format("%s/skylark-%s.html", outputDir, category.getTemplateIdentifier()));
     Page page = TemplateEngine.newPage(DocgenConsts.STARLARK_MODULE_CATEGORY_TEMPLATE);
     page.add("category", category);
     page.add("modules", modules.get(category));
-    page.add("description", StarlarkDocUtils.substituteVariables(category.getDescription()));
+    page.add("description", StarlarkDocUtils.substituteVariables(category.description));
     page.write(starlarkDocPath);
   }
 
@@ -167,7 +163,7 @@
       List<String> globalFunctions,
       List<String> globalConstants,
       List<StarlarkBuiltinDoc> globalModules,
-      Map<StarlarkDocumentationCategory, List<StarlarkBuiltinDoc>> modulesPerCategory)
+      Map<Category, List<StarlarkBuiltinDoc>> modulesPerCategory)
       throws IOException {
     File starlarkDocPath = new File(outputDir + "/skylark-overview.html");
     Page page = TemplateEngine.newPage(DocgenConsts.STARLARK_OVERVIEW_TEMPLATE);
@@ -189,4 +185,86 @@
       }
     }
   }
+
+  /**
+   * An enumeration of categories used to organize the API index. Instances of this class are
+   * accessed by templates, using reflection.
+   */
+  public enum Category {
+    CONFIGURATION_FRAGMENT(
+        "Configuration Fragments",
+        "Configuration fragments give rules access to "
+            + "language-specific parts of <a href=\"configuration.html\">"
+            + "configuration</a>. "
+            + "<p>Rule implementations can get them using "
+            + "<code><a href=\"ctx.html#fragments\">ctx."
+            + "fragments</a>.<i>[fragment name]</i></code>"),
+
+    PROVIDER(
+        "Providers",
+        "This section lists providers available on built-in rules. See the "
+            + "<a href='../rules.$DOC_EXT#providers'>Rules page</a> for more on providers."),
+
+    BUILTIN("Built-in Types", "This section lists types of Starlark objects."),
+
+    // Used for top-level modules of functions in the global namespace. Such modules will always
+    // be usable solely by accessing their members, via modulename.funcname() or
+    // modulename.constantname.
+    // Examples: attr, cc_common, config, java_common
+    TOP_LEVEL_TYPE(null, null),
+
+    CORE(
+        "Core Starlark data types",
+        "This section lists the data types of the <a"
+            + " href='https://github.com/bazelbuild/starlark/blob/master/spec.md#built-in-constants-and-functions'>Starlark"
+            + " core language</a>."),
+
+    // Legacy uncategorized type; these are treated like TOP_LEVEL_TYPE in documentation.
+    NONE(null, null);
+
+    // Maps (essentially free-form) strings in annotations to permitted categories.
+    static Category of(StarlarkBuiltin annot) {
+      switch (annot.category()) {
+        case DocCategory.CONFIGURATION_FRAGMENT:
+          return CONFIGURATION_FRAGMENT;
+        case DocCategory.PROVIDER:
+          return PROVIDER;
+        case DocCategory.BUILTIN:
+          return BUILTIN;
+        case DocCategory.TOP_LEVEL_TYPE:
+          return TOP_LEVEL_TYPE;
+        case DocCategory.NONE:
+          return NONE;
+        case "core": // interpreter built-ins (e.g. int)
+          return CORE;
+        case "": // no annotation
+          return TOP_LEVEL_TYPE;
+        default:
+          throw new IllegalStateException(
+              String.format(
+                  "docgen does not recognize DocCategory '%s' for StarlarkBuiltin '%s'",
+                  annot.category(), annot.name()));
+      }
+    }
+
+    private Category(String title, String description) {
+      this.title = title;
+      this.description = description;
+    }
+
+    private final String title;
+    private final String description;
+
+    public String getTitle() {
+      return title;
+    }
+
+    public String getDescription() {
+      return description;
+    }
+
+    public String getTemplateIdentifier() {
+      return name().toLowerCase().replace("_", "-");
+    }
+  }
 }
diff --git a/src/main/java/com/google/devtools/build/docgen/annot/BUILD b/src/main/java/com/google/devtools/build/docgen/annot/BUILD
index 9051d16..e9eba0e 100644
--- a/src/main/java/com/google/devtools/build/docgen/annot/BUILD
+++ b/src/main/java/com/google/devtools/build/docgen/annot/BUILD
@@ -13,6 +13,7 @@
 java_library(
     name = "annot",
     srcs = [
+        "DocCategory.java",
         "DocumentMethods.java",
         "StarlarkConstructor.java",
     ],
diff --git a/src/main/java/com/google/devtools/build/docgen/annot/DocCategory.java b/src/main/java/com/google/devtools/build/docgen/annot/DocCategory.java
new file mode 100644
index 0000000..cd6e56b
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/docgen/annot/DocCategory.java
@@ -0,0 +1,32 @@
+// 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.docgen.annot;
+
+/** Sections of the API reference for the Bazel build language. */
+public final class DocCategory {
+
+  private DocCategory() {} // uninstantiable
+
+  public static final String CONFIGURATION_FRAGMENT = "CONFIGURATION_FRAGMENT";
+
+  // TODO(adonovan): be more rigorous about distinguishing providers
+  // from provider instances (aka structs/infos).
+  public static final String PROVIDER = "PROVIDER";
+
+  public static final String BUILTIN = "BUILTIN";
+
+  public static final String TOP_LEVEL_TYPE = "TOP_LEVEL_TYPE";
+
+  public static final String NONE = "NONE";
+}
diff --git a/src/main/java/com/google/devtools/build/docgen/starlark/StarlarkBuiltinDoc.java b/src/main/java/com/google/devtools/build/docgen/starlark/StarlarkBuiltinDoc.java
index 46bae35e..e6c3f3c 100644
--- a/src/main/java/com/google/devtools/build/docgen/starlark/StarlarkBuiltinDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/starlark/StarlarkBuiltinDoc.java
@@ -33,24 +33,20 @@
  */
 public final class StarlarkBuiltinDoc extends StarlarkDoc {
   private final StarlarkBuiltin module;
+  private final String title;
   private final Class<?> classObject;
   private final Multimap<String, StarlarkJavaMethodDoc> javaMethods;
   private TreeMap<String, StarlarkMethodDoc> methodMap;
-  private final String title;
   @Nullable private StarlarkConstructorMethodDoc javaConstructor;
 
-  public StarlarkBuiltinDoc(StarlarkBuiltin module, Class<?> classObject) {
+  public StarlarkBuiltinDoc(StarlarkBuiltin module, String title, Class<?> classObject) {
     this.module =
         Preconditions.checkNotNull(
             module, "Class has to be annotated with StarlarkBuiltin: %s", classObject);
+    this.title = title;
     this.classObject = classObject;
     this.methodMap = new TreeMap<>(Collator.getInstance(Locale.US));
     this.javaMethods = HashMultimap.<String, StarlarkJavaMethodDoc>create();
-    if (module.title().isEmpty()) {
-      this.title = module.name();
-    } else {
-      this.title = module.title();
-    }
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
index 638d4e4..abbbb69 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
@@ -24,6 +24,7 @@
     deps = [
         ":LabelValidator",
         ":cmdline-primitives",
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/actions:commandline_item",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index 8febf16..ba2b185 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Interner;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.actions.CommandLineItem;
 import com.google.devtools.build.lib.cmdline.LabelValidator.BadLabelException;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
@@ -36,7 +37,6 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Printer;
 import net.starlark.java.eval.StarlarkSemantics;
@@ -51,10 +51,7 @@
  *
  * <p>Parsing is robust against bad input, for example, from the command line.
  */
-@StarlarkBuiltin(
-    name = "Label",
-    category = StarlarkDocumentationCategory.BUILTIN,
-    doc = "A BUILD target identifier.")
+@StarlarkBuiltin(name = "Label", category = DocCategory.BUILTIN, doc = "A BUILD target identifier.")
 @AutoCodec
 @Immutable
 @ThreadSafe
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
index 1bef09e..5546df0 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
@@ -23,6 +23,7 @@
         "Order.java",
     ],
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/bugreport",
         "//src/main/java/com/google/devtools/build/lib/collect/compacthashset",
         "//src/main/java/com/google/devtools/build/lib/concurrent",
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java
index 0254fb7..1f3efa2 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java
@@ -15,6 +15,7 @@
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -22,7 +23,6 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkInterfaceUtils;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Debug;
@@ -52,7 +52,7 @@
  */
 @StarlarkBuiltin(
     name = "depset",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "<p>A specialized data structure that supports efficient merge operations and has a"
             + " defined traversal order. Commonly used for accumulating data from transitive"
diff --git a/src/main/java/com/google/devtools/build/lib/packages/InternalModule.java b/src/main/java/com/google/devtools/build/lib/packages/InternalModule.java
index 10bed35..3069e1a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/InternalModule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/InternalModule.java
@@ -14,8 +14,8 @@
 
 package com.google.devtools.build.lib.packages;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.Printer;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -24,7 +24,7 @@
 /** The {@code _internal} Starlark object, visible only to {@code @builtins} .bzls. */
 @StarlarkBuiltin(
     name = "_internal",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     documented = false,
     doc =
         "A module accessible only to @builtins .bzls, that permits access to the original "
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
index ed76b78..6a49446 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
@@ -32,6 +32,7 @@
     deps = [
         ":cpp_interface",
         ":denied_implicit_outputs_marker_provider",
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/actions:action_lookup_key",
         "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 178ae1d..c692633 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -25,6 +25,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.ExecutionRequirements;
@@ -84,7 +85,6 @@
 import java.util.Queue;
 import java.util.Set;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.Starlark;
@@ -137,7 +137,7 @@
       doc =
           "Provider that signals that rules that use launchers can use this target as "
               + "the launcher.",
-      category = StarlarkDocumentationCategory.TOP_LEVEL_TYPE)
+      category = DocCategory.TOP_LEVEL_TYPE)
   public static class CcLauncherInfo extends NativeInfo {
     private static final String RESTRICTION_ERROR_MESSAGE =
         "This provider is restricted to native.java_binary, native.py_binary and native.java_test. "
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/BUILD b/src/main/java/com/google/devtools/build/lib/rules/python/BUILD
index 186f585..8a12107 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/BUILD
@@ -14,6 +14,7 @@
         ["*.java"],
     ),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib:build-request-options",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
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 61661f2..4be9689 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
@@ -16,12 +16,12 @@
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Verify;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.common.options.TriState;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /**
@@ -32,7 +32,7 @@
 @StarlarkBuiltin(
     name = "py",
     doc = "A configuration fragment for Python.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public class PythonConfiguration extends Fragment implements StarlarkValue {
 
   private final PythonVersion version;
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionApi.java
index 2c04544..6479955 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import java.io.IOException;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -29,7 +29,7 @@
 /** Interface for actions in Starlark. */
 @StarlarkBuiltin(
     name = "Action",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "An action created during rule analysis."
             + "<p>This object is visible for the purpose of testing, and may be obtained from an "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionsInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionsInfoProviderApi.java
index d1e91a2..27fdd82 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionsInfoProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ActionsInfoProviderApi.java
@@ -14,15 +14,15 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** Provider for structs containing actions created during the analysis of a rule. */
 @StarlarkBuiltin(
     name = "Actions",
     doc = "<b>Deprecated and subject to imminent removal. Please do not use.</b>",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 // TODO(cparsons): Deprecate and remove this API.
 public interface ActionsInfoProviderApi extends ProviderApi {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/BuildConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/BuildConfigurationApi.java
index 0b58466..4889d60 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/BuildConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/BuildConfigurationApi.java
@@ -15,15 +15,15 @@
 package com.google.devtools.build.lib.starlarkbuildapi;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Interface for a configuration object which holds information about the build environment. */
 @StarlarkBuiltin(
     name = "configuration",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.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"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/CommandLineArgsApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/CommandLineArgsApi.java
index f6fb50b..b6e6f87 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/CommandLineArgsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/CommandLineArgsApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -29,7 +29,7 @@
 /** Command line args module. */
 @StarlarkBuiltin(
     name = "Args",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "An object that encapsulates, in a memory-efficient way, the data needed to build part or "
             + "all of a command line."
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DefaultInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DefaultInfoApi.java
index c06469d..4335554 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DefaultInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DefaultInfoApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkThread;
@@ -28,7 +28,7 @@
 /** A provider that gives general information about a target's direct and transitive files. */
 @StarlarkBuiltin(
     name = "DefaultInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider that gives general information about a target's direct and transitive files. "
             + "Every rule type has this provider, even if it is not returned explicitly by the "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DirectoryExpander.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DirectoryExpander.java
index 3bcdfbe..074dfbf 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DirectoryExpander.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DirectoryExpander.java
@@ -15,16 +15,16 @@
 package com.google.devtools.build.lib.starlarkbuildapi;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A class that can be used to expand directories at execution time. */
 @StarlarkBuiltin(
     name = "DirectoryExpander",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Expands directories created by <a href='actions.html#declare_directory'>"
             + "<code>ctx.actions.declare_directory</code></a>"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ExecGroupApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ExecGroupApi.java
index 0366c93..897b1ab 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ExecGroupApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ExecGroupApi.java
@@ -14,13 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A unit of toolchain resolution. Every rule has one or more of these. */
-@StarlarkBuiltin(
-    name = "exec_group",
-    category = StarlarkDocumentationCategory.BUILTIN,
-    documented = false)
+@StarlarkBuiltin(name = "exec_group", category = DocCategory.BUILTIN, documented = false)
 public interface ExecGroupApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileApi.java
index 5e494f5..9b0097a 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkValue;
@@ -24,7 +24,7 @@
 /** The interface for files in Starlark. */
 @StarlarkBuiltin(
     name = "File",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "This object is created during the analysis phase to represent a file or directory that "
             + "will be read or written during the execution phase. It is not an open file"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileProviderApi.java
index 781f90e..1d15b5d 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileProviderApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -24,7 +24,7 @@
 @StarlarkBuiltin(
     name = "file_provider",
     doc = "An interface for rules that provide files.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface FileProviderApi extends StarlarkValue {
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileRootApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileRootApi.java
index f836d7f..2f1379f 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileRootApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FileRootApi.java
@@ -14,8 +14,8 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -25,7 +25,7 @@
  */
 @StarlarkBuiltin(
     name = "root",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A root for files. The roots are the directories containing files, and they are mapped "
             + "together into a single directory tree to form the execution environment.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FilesToRunProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FilesToRunProviderApi.java
index 559c64e..7dab417 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FilesToRunProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FilesToRunProviderApi.java
@@ -14,17 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Returns information about executables produced by a target and the files needed to run it. */
-@StarlarkBuiltin(
-    name = "FilesToRunProvider",
-    doc = "",
-    category = StarlarkDocumentationCategory.PROVIDER)
+@StarlarkBuiltin(name = "FilesToRunProvider", doc = "", category = DocCategory.PROVIDER)
 public interface FilesToRunProviderApi<FileT extends FileApi> extends StarlarkValue {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FragmentCollectionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FragmentCollectionApi.java
index 72c2968..54ccf23 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FragmentCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/FragmentCollectionApi.java
@@ -14,15 +14,15 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.ClassObject;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Represents a collection of configuration fragments in Starlark. */
 @StarlarkBuiltin(
     name = "fragments",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A collection of configuration fragments available in the current rule implementation "
             + "context. Access a specific fragment by its field name. For example, "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LateBoundDefaultApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LateBoundDefaultApi.java
index 38d42f7..9664323 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LateBoundDefaultApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LateBoundDefaultApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** The interface for late bound defaults in Starlark. */
 @StarlarkBuiltin(
     name = "LateBoundDefault",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Represents a late-bound default attribute value of type 'Label'. The value of a"
             + " LateBoundDefault is only resolvable in the context of a rule implementation"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LicenseApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LicenseApi.java
index 287fbe3..3e4bf0c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LicenseApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/LicenseApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** The interface for a license in Starlark. */
 @StarlarkBuiltin(
     name = "License",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     documented = true,
     doc =
         "This API is deprecated and will be removed. Please do not depend on it. "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/OutputGroupInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/OutputGroupInfoApi.java
index 12ca92d..86fcd40 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/OutputGroupInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/OutputGroupInfoApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -27,7 +27,7 @@
 /** Interface for an info object that indicates what output groups a rule has. */
 @StarlarkBuiltin(
     name = "OutputGroupInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider that indicates what output groups a rule has.<br>"
             + "See <a href=\"../rules.$DOC_EXT#requesting-output-files\">Requesting output files"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoConfigurationApi.java
index b88cd92..8a2ea04 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoConfigurationApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A configuration fragment representing protocol buffers. */
 @StarlarkBuiltin(
     name = "proto",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT,
+    category = DocCategory.CONFIGURATION_FRAGMENT,
     doc = "A configuration fragment representing protocol buffers.")
 public interface ProtoConfigurationApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoInfoApi.java
index 97bd46f..0ab92c3 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/ProtoInfoApi.java
@@ -15,17 +15,17 @@
 package com.google.devtools.build.lib.starlarkbuildapi;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** Info object propagating information about protocol buffer sources. */
 @StarlarkBuiltin(
     name = "ProtoInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Encapsulates information provided by <a href=\""
             + "../../be/protocol-buffer.html#proto_library\">proto_library.</a>"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/RunfilesApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/RunfilesApi.java
index fa35845..7749582 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/RunfilesApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/RunfilesApi.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** An interface for a set of runfiles. */
 @StarlarkBuiltin(
     name = "runfiles",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A container of information regarding a set of files required at runtime execution. This"
             + " object should be passed via <a href=\"DefaultInfo.html\">DefaultInfo</a> in order"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkActionFactoryApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkActionFactoryApi.java
index 2694b95..0ea30a9 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkActionFactoryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkActionFactoryApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -30,7 +30,7 @@
 /** Module providing functions to create actions. */
 @StarlarkBuiltin(
     name = "actions",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Module providing functions to create actions. "
             + "Access this module using <a href=\"ctx.html#actions\"><code>ctx.actions</code></a>.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAspectApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAspectApi.java
index 8d5667b..7985f8b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAspectApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAspectApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** The interface for Starlark-defined aspects in the Build API. */
 @StarlarkBuiltin(
     name = "Aspect",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "For more information about Aspects, please consult the <a href=\"globals.html#aspect\">"
             + "documentation of the aspect function</a> or the "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttrModuleApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttrModuleApi.java
index ef423da..4f18029 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttrModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttrModuleApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -36,7 +36,7 @@
  */
 @StarlarkBuiltin(
     name = "attr",
-    category = StarlarkDocumentationCategory.TOP_LEVEL_TYPE,
+    category = DocCategory.TOP_LEVEL_TYPE,
     doc =
         "This is a top-level module for defining the attribute schemas of a rule or aspect. Each "
             + "function returns an object representing the schema of a single attribute. These "
@@ -845,7 +845,7 @@
   /** An attribute descriptor. */
   @StarlarkBuiltin(
       name = "Attribute",
-      category = StarlarkDocumentationCategory.BUILTIN,
+      category = DocCategory.BUILTIN,
       doc =
           "Representation of a definition of an attribute. Use the <a href=\"attr.html\">attr</a> "
               + "module to create an Attribute. They are only for use with a "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttributesCollectionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttributesCollectionApi.java
index b7f61d5..208f2e0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttributesCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkAttributesCollectionApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkValue;
@@ -24,7 +24,7 @@
 /** Interface for a type containing information about the attributes of a rule. */
 @StarlarkBuiltin(
     name = "rule_attributes",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Information about attributes of a rule an aspect is applied to.")
 public interface StarlarkAttributesCollectionApi extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkCommandLineApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkCommandLineApi.java
index 5ebb5c7..3bba574 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkCommandLineApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkCommandLineApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkValue;
@@ -25,7 +25,7 @@
 /** Interface for a module associated with creating efficient command lines. */
 @StarlarkBuiltin(
     name = "cmd_helper",
-    category = StarlarkDocumentationCategory.TOP_LEVEL_TYPE,
+    category = DocCategory.TOP_LEVEL_TYPE,
     doc = "Deprecated. Module for creating memory efficient command lines.")
 public interface StarlarkCommandLineApi extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkConfigApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkConfigApi.java
index 67b901e..d2d7ddd 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkConfigApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkConfigApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -29,7 +29,7 @@
  */
 @StarlarkBuiltin(
     name = "config",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "This is a top-level module for creating configuration transitions and build "
             + "setting descriptors which describe what kind of build setting (if any) a rule is. "
@@ -108,7 +108,7 @@
   /** The API for build setting descriptors. */
   @StarlarkBuiltin(
       name = "BuildSetting",
-      category = StarlarkDocumentationCategory.BUILTIN,
+      category = DocCategory.BUILTIN,
       doc =
           "The descriptor for a single piece of configuration information. If configuration is a "
               + "key-value map of settings like {'cpu': 'ppc', 'copt': '-DFoo'}, this describes a "
@@ -136,7 +136,7 @@
   /** The api for exec transitions. */
   @StarlarkBuiltin(
       name = "ExecTransitionFactory",
-      category = StarlarkDocumentationCategory.BUILTIN,
+      category = DocCategory.BUILTIN,
       doc = "<i>experimental</i> an execution transition.")
   interface ExecTransitionFactoryApi extends StarlarkValue {}
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkNativeModuleApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkNativeModuleApi.java
index e7995b8..55a56aa 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkNativeModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkNativeModuleApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -28,7 +28,7 @@
 /** Interface for a module with native rule and package helper functions. */
 @StarlarkBuiltin(
     name = "native",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A built-in module to support native rules and other package helper functions. "
             + "All native rules appear as functions in this module, e.g. "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java
index 7963a17..4a1aac6 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleContextApi.java
@@ -15,6 +15,7 @@
 package com.google.devtools.build.lib.starlarkbuildapi;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
@@ -28,7 +29,6 @@
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.ClassObject;
 import net.starlark.java.eval.Dict;
@@ -41,7 +41,7 @@
 /** Interface for a context object given to rule implementation functions. */
 @StarlarkBuiltin(
     name = "ctx",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A context object that is passed to the implementation function for a rule or aspect. It"
             + " provides access to the information and methods needed to analyze the current"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/SymlinkEntryApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/SymlinkEntryApi.java
index 07f770e..1992326 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/SymlinkEntryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/SymlinkEntryApi.java
@@ -14,15 +14,15 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Interface for a single runfiles symlink represented by a link name and target. */
 @StarlarkBuiltin(
     name = "SymlinkEntry",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "A single runfiles symlink represented by a link name and target.")
 public interface SymlinkEntryApi extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TemplateVariableInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TemplateVariableInfoApi.java
index 6af8770..43c7ac7 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TemplateVariableInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TemplateVariableInfoApi.java
@@ -15,11 +15,11 @@
 package com.google.devtools.build.lib.starlarkbuildapi;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -28,7 +28,7 @@
 /** Provides access to make variables from the current fragments. */
 @StarlarkBuiltin(
     name = "TemplateVariableInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Encapsulates template variables, that is, variables that can be referenced by strings"
             + " like <code>$(VARIABLE)</code> in BUILD files and expanded by"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidAssetsInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidAssetsInfoApi.java
index f34adbb..cad04f9 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidAssetsInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidAssetsInfoApi.java
@@ -14,6 +14,7 @@
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
@@ -23,7 +24,6 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -35,7 +35,7 @@
             + "you will be broken when it is removed."
             + "Information about the Android assets provided by a rule.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidAssetsInfoApi<FileT extends FileApi, AssetsT extends ParsedAndroidAssetsApi>
     extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryDataInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryDataInfoApi.java
index 0d735d9..8073c53 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryDataInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryDataInfoApi.java
@@ -13,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -34,7 +34,7 @@
             + "Information about Android resource, asset, and manifest information specific to "
             + "binaries",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidBinaryDataInfoApi<FileT extends FileApi> extends StructApi {
 
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidCcLinkParamsProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidCcLinkParamsProviderApi.java
index 830f3cd..d6a6743 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidCcLinkParamsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidCcLinkParamsProviderApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
@@ -21,7 +22,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcInfoApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -33,7 +33,7 @@
             + "you will be broken when it is removed."
             + "Information about the c++ libraries to be linked into Android targets.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidCcLinkParamsProviderApi<
         FileT extends FileApi, CcInfoT extends CcInfoApi<FileT>>
     extends StructApi {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidConfigurationApi.java
index 7105b44..5832df4 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidConfigurationApi.java
@@ -14,8 +14,8 @@
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -27,7 +27,7 @@
             + "you will be broken when it is removed. "
             + "A configuration fragment for Android.",
     documented = false,
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface AndroidConfigurationApi extends StarlarkValue {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java
index 8463063..f061fff 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidFeatureFlagSetProviderApi.java
@@ -14,13 +14,13 @@
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -33,7 +33,7 @@
             + "you will be broken when it is removed."
             + "Information about the android_binary feature flags",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidFeatureFlagSetProviderApi extends StructApi {
 
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdlProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdlProviderApi.java
index 1569829..9e82f4f 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdlProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdlProviderApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -20,7 +21,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -35,7 +35,7 @@
             + "you will be broken when it is removed."
             + "Information about Android IDLs",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidIdlProviderApi<FileT extends FileApi> extends StructApi {
 
   /** Name of this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidInstrumentationInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidInstrumentationInfoApi.java
index f8d3911..1a3ada2 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidInstrumentationInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidInstrumentationInfoApi.java
@@ -13,12 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -32,7 +32,7 @@
             + "you will be broken when it is removed."
             + "Android instrumentation and target APKs to run in a test",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidInstrumentationInfoApi<ApkT extends ApkInfoApi<?>> extends StructApi {
 
   /** Name of this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryAarInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryAarInfoApi.java
index 64bf396..ef103a3 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryAarInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryAarInfoApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -20,7 +21,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -33,7 +33,7 @@
             + "you will be broken when it is removed."
             + "Android AARs provided by a library rule and its dependencies",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidLibraryAarInfoApi<FileT extends FileApi> extends StructApi {
 
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryResourceClassJarProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryResourceClassJarProviderApi.java
index b9bf62b..6ad4dce 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryResourceClassJarProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidLibraryResourceClassJarProviderApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -20,7 +21,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -32,7 +32,7 @@
             + "you will be broken when it is removed."
             + "Resource class jars from android_library rules.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidLibraryResourceClassJarProviderApi<FileT extends FileApi>
     extends StructApi {
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestApi.java
index d55d25d..8a93771 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestApi.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Wraps an Android Manifest and provides utilities for working with it */
@@ -25,5 +25,5 @@
             + "you will be broken when it is removed."
             + "Wraps an Android Manifest and provides utilities to work with it.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidManifestApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestInfoApi.java
index 14dc173..b591b94 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidManifestInfoApi.java
@@ -13,12 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -30,7 +30,7 @@
             + "you will be broken when it is removed."
             + "Information about the Android manifest provided by a rule.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidManifestInfoApi<FileT extends FileApi> extends StructApi {
 
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidPreDexJarProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidPreDexJarProviderApi.java
index 555b695..b23c63d 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidPreDexJarProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidPreDexJarProviderApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -32,7 +32,7 @@
             + "you will be broken when it is removed."
             + "Information about the final Jar to be dexed for targets that build APKs.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidPreDexJarProviderApi<FileT extends FileApi> extends StructApi {
   /** Name of this info object. */
   String NAME = "AndroidPreDexJarInfo";
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidResourcesInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidResourcesInfoApi.java
index f2071aa..3322c8a 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidResourcesInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidResourcesInfoApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
@@ -21,7 +22,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -33,7 +33,7 @@
             + "you will be broken when it is removed."
             + "Android resources provided by a rule",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface AndroidResourcesInfoApi<
         FileT extends FileApi,
         ValidatedAndroidDataT extends ValidatedAndroidDataApi<?, ?>,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidStarlarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidStarlarkApiProviderApi.java
index 227ddf3..954f124 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidStarlarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidStarlarkApiProviderApi.java
@@ -15,12 +15,12 @@
 
 import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.java.OutputJarApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -30,8 +30,7 @@
  */
 @StarlarkBuiltin(
     name = "AndroidStarlarkApiProvider",
-    title = "android",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "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."
@@ -147,7 +146,7 @@
   /** Helper class to provide information about IDLs related to this rule. */
   @StarlarkBuiltin(
       name = "AndroidStarlarkIdlInfo",
-      category = StarlarkDocumentationCategory.NONE,
+      category = DocCategory.NONE,
       doc =
           "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."
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java
index 00ba636..eb213ac 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java
@@ -14,12 +14,12 @@
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -32,7 +32,7 @@
             + "you will be broken when it is removed."
             + "APKs provided by a rule",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ApkInfoApi<FileT extends FileApi> extends StructApi {
 
   /** Name of this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ParsedAndroidAssetsApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ParsedAndroidAssetsApi.java
index 3a6c682..d795681 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ParsedAndroidAssetsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ParsedAndroidAssetsApi.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Parsed Android assets which can be merged together with assets from dependencies. */
@@ -25,5 +25,5 @@
             + "you will be broken when it is removed."
             + "Information about the Android assets provided by a rule.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ParsedAndroidAssetsApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ProguardMappingProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ProguardMappingProviderApi.java
index 07acd73..cd5cd99 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ProguardMappingProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ProguardMappingProviderApi.java
@@ -13,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -31,7 +31,7 @@
             + "you will be broken when it is removed."
             + "Information about the Proguard mapping provided by a rule.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ProguardMappingProviderApi<FileT extends FileApi> extends StructApi {
 
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ValidatedAndroidDataApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ValidatedAndroidDataApi.java
index 3911e4b..3705839 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ValidatedAndroidDataApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ValidatedAndroidDataApi.java
@@ -13,11 +13,11 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.StarlarkValue;
@@ -30,7 +30,7 @@
             + "you will be broken when it is removed."
             + "Validated Android data which can be merged together with assets from dependencies.",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ValidatedAndroidDataApi<
         FileT extends FileApi,
         AndroidResourcesInfoT extends
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleBitcodeModeApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleBitcodeModeApi.java
index 97c7409..f62d0e7 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleBitcodeModeApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleBitcodeModeApi.java
@@ -14,8 +14,8 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /**
@@ -24,7 +24,7 @@
  */
 @StarlarkBuiltin(
     name = "apple_bitcode_mode",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "The Bitcode mode to use when compiling Objective-C and Swift code on Apple platforms. "
             + "Possible values are:<br><ul>"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleConfigurationApi.java
index ef5b565..64b2300 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleConfigurationApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -24,7 +24,7 @@
 @StarlarkBuiltin(
     name = "apple",
     doc = "A configuration fragment for Apple platforms.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface AppleConfigurationApi<ApplePlatformTypeApiT extends ApplePlatformTypeApi>
     extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDebugOutputsApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDebugOutputsApi.java
index 313040d..1889b5e 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDebugOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDebugOutputsApi.java
@@ -15,16 +15,16 @@
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** A provider that holds debug outputs of an apple_binary target. */
 @StarlarkBuiltin(
     name = "AppleDebugOutputs",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "A provider that holds debug outputs of an apple_binary target.")
 public interface AppleDebugOutputsApi<FileT extends FileApi> extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDylibBinaryApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDylibBinaryApi.java
index d60af31..ad120a4 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDylibBinaryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDylibBinaryApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -26,7 +26,7 @@
  */
 @StarlarkBuiltin(
     name = "AppleDylibBinary",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider containing the executable binary output that was built using an apple_binary "
             + "target with the 'dylib' type.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDynamicFrameworkInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDynamicFrameworkInfoApi.java
index b29bc6a..332748b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDynamicFrameworkInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleDynamicFrameworkInfoApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -27,7 +27,7 @@
  */
 @StarlarkBuiltin(
     name = "AppleDynamicFramework",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "A provider containing information about an Apple dynamic framework.")
 public interface AppleDynamicFrameworkInfoApi<FileApiT extends FileApi> extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleExecutableBinaryApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleExecutableBinaryApi.java
index 80baadb..9a93e927 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleExecutableBinaryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleExecutableBinaryApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -26,7 +26,7 @@
  */
 @StarlarkBuiltin(
     name = "AppleExecutableBinary",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider containing the executable binary output that was built using an "
             + "apple_binary target with the 'executable' type.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleLoadableBundleBinaryApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleLoadableBundleBinaryApi.java
index 720b8cd..4f0bc6a 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleLoadableBundleBinaryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleLoadableBundleBinaryApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -26,7 +26,7 @@
  */
 @StarlarkBuiltin(
     name = "AppleLoadableBundleBinary",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider containing the executable binary output that was built using an "
             + "apple_binary target with the 'loadable_bundle' type.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformApi.java
index 5b5f5f0..15908e1 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformApi.java
@@ -14,15 +14,15 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** An interface for an object representing an Apple platform. */
 @StarlarkBuiltin(
     name = "apple_platform",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Corresponds to Xcode's notion of a platform as would be found in"
             + " <code>Xcode.app/Contents/Developer/Platforms</code>. Each platform represents an"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformTypeApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformTypeApi.java
index 6ce8302..e110ad9 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformTypeApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ApplePlatformTypeApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Interface for a descriptor for an Apple platform type, such as such as iOS or macOS. */
 @StarlarkBuiltin(
     name = "apple_platform_type",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Describes an Apple \"platform type\", such as iOS, macOS, tvOS, or watchOS. This is"
             + " distinct from a \"platform\", which is the platform type combined with one or more"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleStaticLibraryInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleStaticLibraryInfoApi.java
index 05c441c..e039616 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleStaticLibraryInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/AppleStaticLibraryInfoApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -30,7 +30,7 @@
  */
 @StarlarkBuiltin(
     name = "AppleStaticLibrary",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider containing information regarding multi-architecture Apple static libraries, "
             + "as is propagated by the apple_static_library rule.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/DottedVersionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/DottedVersionApi.java
index 124f05b..b8a35db 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/DottedVersionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/DottedVersionApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -26,7 +26,7 @@
  */
 @StarlarkBuiltin(
     name = "DottedVersion",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A value representing a version with multiple components, separated by periods, such as "
             + "1.2.3.4.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/J2ObjcConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/J2ObjcConfigurationApi.java
index 0a1865c..127567c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/J2ObjcConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/J2ObjcConfigurationApi.java
@@ -15,15 +15,15 @@
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A configuration fragment for j2objc. */
 @StarlarkBuiltin(
     name = "j2objc",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT,
+    category = DocCategory.CONFIGURATION_FRAGMENT,
     doc = "A configuration fragment for j2Objc.")
 public interface J2ObjcConfigurationApi extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java
index a4929e2..646cd80 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java
@@ -15,17 +15,17 @@
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A configuration fragment for Objective C. */
 @StarlarkBuiltin(
     name = "objc",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT,
+    category = DocCategory.CONFIGURATION_FRAGMENT,
     doc = "A configuration fragment for Objective-C.")
 public interface ObjcConfigurationApi<ApplePlatformTypeApiT extends ApplePlatformTypeApi>
     extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcProviderApi.java
index 75a13f8..d413c5c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcProviderApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcCompilationContextApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.StarlarkValue;
@@ -30,7 +30,7 @@
  */
 @StarlarkBuiltin(
     name = "ObjcProvider",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "A provider for compilation and linking of objc.")
 public interface ObjcProviderApi<FileApiT extends FileApi> extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/SwiftConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/SwiftConfigurationApi.java
index b4d5c75..5dff210 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/SwiftConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/SwiftConfigurationApi.java
@@ -15,8 +15,8 @@
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -24,7 +24,7 @@
 @StarlarkBuiltin(
     name = "swift",
     doc = "A configuration fragment for Swift tools.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface SwiftConfigurationApi extends StarlarkValue {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodeConfigInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodeConfigInfoApi.java
index 4a1e3cd..822bfc8 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodeConfigInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodeConfigInfoApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -30,7 +30,7 @@
  */
 @StarlarkBuiltin(
     name = "XcodeVersionConfig",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "The set of Apple versions computed from command line options and the xcode_config rule.")
 public interface XcodeConfigInfoApi<
         ApplePlatformApiT extends ApplePlatformApi,
@@ -90,11 +90,7 @@
   public Dict<String, String> getExecutionRequirementsDict();
 
   /** An interface for the provider of {@link XcodeConfigInfoApi}. */
-  @StarlarkBuiltin(
-      name = "Provider",
-      category = StarlarkDocumentationCategory.PROVIDER,
-      documented = false,
-      doc = "")
+  @StarlarkBuiltin(name = "Provider", category = DocCategory.PROVIDER, documented = false, doc = "")
   interface XcodeConfigProviderApi extends ProviderApi {
 
     @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodePropertiesApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodePropertiesApi.java
index f59a59a..4ad4b56 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodePropertiesApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/XcodePropertiesApi.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** A provider containing information about a version of Xcode and its properties. */
 @StarlarkBuiltin(
     name = "XcodeProperties",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "A provider containing information about a version of Xcode and its properties.")
 public interface XcodePropertiesApi extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigFeatureFlagProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigFeatureFlagProviderApi.java
index b5780a6..1919101 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigFeatureFlagProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigFeatureFlagProviderApi.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.config;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** An info object for config_feature_flag rules. */
 @StarlarkBuiltin(
     name = "FeatureFlagInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "A provider used to access information about config_feature_flag rules.")
 public interface ConfigFeatureFlagProviderApi extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigurationTransitionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigurationTransitionApi.java
index 36b38de..68b31a8 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigurationTransitionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigurationTransitionApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.config;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Represents a configuration transition across a dependency edge. */
 @StarlarkBuiltin(
     name = "transition",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "<p>Represents a configuration transition across a dependency edge. For example, if"
             + " <code>//package:foo</code> depends on <code>//package:bar</code> with a"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/ProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/ProviderApi.java
index 9e5bec0..986f64f 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/ProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/ProviderApi.java
@@ -13,14 +13,14 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.core;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Interface for provider objects (constructors for {@link StructApi} objects). */
 @StarlarkBuiltin(
     name = "Provider",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A constructor for simple value objects, known as provider instances."
             + "<br>"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/StructApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/StructApi.java
index 3481cba..bbc43be 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/StructApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/StructApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.core;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -27,7 +27,7 @@
 /** Interface for the "struct" object in the build API. */
 @StarlarkBuiltin(
     name = "struct",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "A generic object with fields."
             + "<p>Structs fields cannot be reassigned once the struct is created. Two structs are "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java
index c4b8400..53e95c4 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.core;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Interface for a build target. */
 @StarlarkBuiltin(
     name = "Target",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.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\""
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationContextApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationContextApi.java
index 0fee722..73ef88b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationContextApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkList;
 import net.starlark.java.eval.StarlarkValue;
@@ -27,7 +27,7 @@
  */
 @StarlarkBuiltin(
     name = "CompilationContext",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Immutable store of information needed for C++ compilation that is aggregated across "
             + "dependencies.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationOutputsApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationOutputsApi.java
index 6fd33da..7643a10 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcCompilationOutputsApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -25,7 +25,7 @@
 /** Interface for a structured representation of the compilation outputs of a C++ rule. */
 @StarlarkBuiltin(
     name = "CcCompilationOutputs",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     documented = true,
     doc = "Helper class containing CC compilation outputs.")
 public interface CcCompilationOutputsApi<FileT extends FileApi> extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcInfoApi.java
index d9b3cb1..074b7e0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcInfoApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
@@ -21,7 +22,6 @@
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.NoneType;
@@ -29,7 +29,7 @@
 /** Wrapper for every C++ compilation and linking provider. */
 @StarlarkBuiltin(
     name = "CcInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "A provider for compilation and linking of C++. This "
             + "is also a marking provider telling C++ rules that they can depend on the rule "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingContextApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingContextApi.java
index ea1db27..6e0a183 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingContextApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.StarlarkSemantics;
@@ -27,7 +27,7 @@
 /** Wrapper for every C++ linking provider. */
 @StarlarkBuiltin(
     name = "LinkingContext",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Immutable store of information needed for C++ linking that is aggregated across "
             + "dependencies.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingOutputsApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingOutputsApi.java
index 05b03e0..f0d65c6 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcLinkingOutputsApi.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Interface for a structured representation of the linking outputs of a C++ rule. */
 @StarlarkBuiltin(
     name = "CcLinkingOutputs",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     documented = true,
     doc = "Helper class containing CC compilation outputs.")
 public interface CcLinkingOutputsApi<FileT extends FileApi> extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcStarlarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcStarlarkApiProviderApi.java
index 2e842f6..ca19582 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcStarlarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcStarlarkApiProviderApi.java
@@ -15,17 +15,17 @@
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Object with information about C++ rules. Every C++-related target should provide this. */
 @StarlarkBuiltin(
     name = "CcStarlarkApiProvider",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.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"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainConfigInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainConfigInfoApi.java
index 880e2d7..b1e9816 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainConfigInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainConfigInfoApi.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** Additional layer of configurability for c++ rules through features and actions. */
 @StarlarkBuiltin(
     name = "CcToolchainConfigInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Additional layer of configurability for C++ rules. Encapsulates platform-dependent "
             + "specifics of C++ actions through features and action configs. It is used to "
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainProviderApi.java
index 4684e35..c04747b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainProviderApi.java
@@ -15,19 +15,19 @@
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.platform.ToolchainInfoApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
 /** Information about the C++ toolchain. */
 @StarlarkBuiltin(
     name = "CcToolchainInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "Information about the C++ compiler being used.")
 public interface CcToolchainProviderApi<FeatureConfigurationT extends FeatureConfigurationApi>
     extends ToolchainInfoApi {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainVariablesApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainVariablesApi.java
index 05ccff8..3c65772 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainVariablesApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcToolchainVariablesApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Type encapsulating build variables. */
 @StarlarkBuiltin(
     name = "Variables",
     documented = false,
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Class encapsulating cc_toolchain variables.")
 public interface CcToolchainVariablesApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CompilationInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CompilationInfoApi.java
index 4c82da0..2524e02 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CompilationInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CompilationInfoApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -24,7 +24,7 @@
 @StarlarkBuiltin(
     name = "compilation_info",
     documented = false,
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Helper class containing CC compilation providers.")
 public interface CompilationInfoApi<FileT extends FileApi> extends StarlarkValue {
   @StarlarkMethod(name = "cc_compilation_outputs", structField = true, documented = false)
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java
index 3e179a6..bf65a92 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java
@@ -15,9 +15,9 @@
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkValue;
@@ -26,7 +26,7 @@
 @StarlarkBuiltin(
     name = "cpp",
     doc = "A configuration fragment for C++.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface CppConfigurationApi<InvalidConfigurationExceptionT extends Exception>
     extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/FeatureConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/FeatureConfigurationApi.java
index 25a3bab..64f7f26 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/FeatureConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/FeatureConfigurationApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Class used to construct command lines from CROSSTOOL features. */
 @StarlarkBuiltin(
     name = "FeatureConfiguration",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Class used to construct command lines from CROSSTOOL features.")
 public interface FeatureConfigurationApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoCcLinkParamsInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoCcLinkParamsInfoApi.java
index 1a5333a..572e8a8 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoCcLinkParamsInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoCcLinkParamsInfoApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -29,7 +29,7 @@
     name = "GoCcLinkParamsInfo",
     doc = "",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface GoCcLinkParamsInfoApi extends StructApi {
 
   /** Provider for GoContextInfo objects. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcHelperApi.java
index 1845b9b..53aaf7e 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcHelperApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.RunfilesApi;
@@ -26,7 +27,6 @@
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.NoneType;
@@ -42,7 +42,7 @@
     name = "go_wrap_cc_helper_do_not_use",
     documented = false,
     doc = "",
-    category = StarlarkDocumentationCategory.TOP_LEVEL_TYPE)
+    category = DocCategory.TOP_LEVEL_TYPE)
 public interface GoWrapCcHelperApi<
         FileT extends FileApi,
         ConstraintValueT extends ConstraintValueInfoApi,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcInfoApi.java
index 4ac3d6b..3f44fbc 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/GoWrapCcInfoApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -32,7 +32,7 @@
 @StarlarkBuiltin(
     name = "GoWrapCcInfo",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "")
 public interface GoWrapCcInfoApi<FileT extends FileApi> extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LibraryToLinkApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LibraryToLinkApi.java
index 5ae3b39..5b67bfa 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LibraryToLinkApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LibraryToLinkApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.StarlarkValue;
@@ -27,7 +27,7 @@
  */
 @StarlarkBuiltin(
     name = "LibraryToLink",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "A library the user can link against.")
 public interface LibraryToLinkApi<FileT extends FileApi> extends StarlarkValue {
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkerInputApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkerInputApi.java
index d294d18..aa015a3 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkerInputApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkerInputApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -27,7 +27,7 @@
 /** Either libraries, flags or other files that may be passed to the linker as inputs. */
 @StarlarkBuiltin(
     name = "LinkerInput",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.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>
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkingInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkingInfoApi.java
index 2909167..a46d733 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkingInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/LinkingInfoApi.java
@@ -14,8 +14,8 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -23,7 +23,7 @@
 @StarlarkBuiltin(
     name = "linking_info",
     documented = false,
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Helper class containing CC linking providers.")
 public interface LinkingInfoApi extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyCcLinkParamsProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyCcLinkParamsProviderApi.java
index 1455372..a29fdf7 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyCcLinkParamsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyCcLinkParamsProviderApi.java
@@ -14,18 +14,18 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** A target that provides C++ libraries to be linked into Python targets. */
 @StarlarkBuiltin(
     name = "PyCcLinkParamsProvider",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "Wrapper for every C++ linking provider")
 public interface PyCcLinkParamsProviderApi<FileT extends FileApi> extends StructApi {
   @StarlarkMethod(name = "cc_info", doc = "", structField = true, documented = false)
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcHelperApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcHelperApi.java
index a5425c1..05b5a9b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcHelperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcHelperApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.RunfilesApi;
@@ -21,7 +22,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.platform.ConstraintValueInfoApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -37,7 +37,7 @@
     name = "py_wrap_cc_helper_do_not_use",
     documented = false,
     doc = "",
-    category = StarlarkDocumentationCategory.TOP_LEVEL_TYPE)
+    category = DocCategory.TOP_LEVEL_TYPE)
 public interface PyWrapCcHelperApi<
         FileT extends FileApi,
         ConstraintValueT extends ConstraintValueInfoApi,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcInfoApi.java
index 06bb97c..b6b7bed 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/PyWrapCcInfoApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -32,7 +32,7 @@
 @StarlarkBuiltin(
     name = "PyWrapCcInfo",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "")
 public interface PyWrapCcInfoApi<FileT extends FileApi> extends StructApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/WrapCcIncludeProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/WrapCcIncludeProviderApi.java
index 3fb564d..a39c465 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/WrapCcIncludeProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/WrapCcIncludeProviderApi.java
@@ -14,14 +14,14 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** An info object that provides the included files of a _wrap_cc rule. */
 @StarlarkBuiltin(
     name = "WrapCcIncludeProvider",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "")
 public interface WrapCcIncludeProviderApi extends StructApi {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/BUILD
index 8d12eec..e3132e2 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/BUILD
@@ -20,9 +20,9 @@
     name = "go",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
         "//src/main/java/net/starlark/java/annot",
         "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoConfigurationApi.java
index 65ad88e..137f021 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoConfigurationApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.go;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A configuration fragment for Go. */
 @StarlarkBuiltin(
     name = "go",
     doc = "A configuration fragment for Go.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface GoConfigurationApi extends StarlarkValue {}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoContextInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoContextInfoApi.java
index 4cc0d33..d7fff2e 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoContextInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoContextInfoApi.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.go;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** Information about the transitive closure of a target that is relevant to Go compilation. */
 @StarlarkBuiltin(
     name = "GoContextInfo",
     doc = "",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface GoContextInfoApi extends StructApi {
 
   /** Provider for GoContextInfo objects. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoPackageInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoPackageInfoApi.java
index 55f1ec9..c8f3a05 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoPackageInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go/GoPackageInfoApi.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.go;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** Contains the metadata for a Go package. Used to generate .gopackage files. */
 @StarlarkBuiltin(
     name = "GoPackageInfo",
     doc = "",
     documented = false,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface GoPackageInfoApi extends StructApi {
 
   /** Provider for GoPackageInfo objects. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/GeneratedExtensionRegistryProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/GeneratedExtensionRegistryProviderApi.java
index a443130..e7e85e1 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/GeneratedExtensionRegistryProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/GeneratedExtensionRegistryProviderApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
@@ -21,7 +22,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -29,7 +29,7 @@
 @StarlarkBuiltin(
     name = "GeneratedExtensionRegistryProvider",
     doc = "Information about generated proto extensions.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface GeneratedExtensionRegistryProviderApi<FileT extends FileApi> extends StructApi {
 
   /** The name of the provider for this info object. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaAnnotationProcessingApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaAnnotationProcessingApi.java
index 249f714..aaa2ea7 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaAnnotationProcessingApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaAnnotationProcessingApi.java
@@ -15,11 +15,11 @@
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -29,7 +29,7 @@
  */
 @StarlarkBuiltin(
     name = "java_annotation_processing",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Information about jars that are a result of annotation processing for a Java rule.")
 public interface JavaAnnotationProcessingApi<FileTypeT extends FileApi> extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCcLinkParamsProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCcLinkParamsProviderApi.java
index 5614178..d190f4c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCcLinkParamsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCcLinkParamsProviderApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -21,7 +22,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcInfoApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkValue;
@@ -34,7 +34,7 @@
             + "you will be broken when it is removed."
             + "Information about the c++ libraries to be linked into Java targets.",
     documented = true,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface JavaCcLinkParamsProviderApi<
         FileT extends FileApi, CcInfoApiT extends CcInfoApi<FileT>>
     extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java
index 82b44a7..b5a79ef 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java
@@ -15,17 +15,17 @@
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Info object for compilation information for java rules. */
 @StarlarkBuiltin(
     name = "java_compilation_info",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "Provides access to compilation information for Java rules.")
 public interface JavaCompilationInfoProviderApi<FileT extends FileApi> extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java
index 2aa6546..fb31418 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java
@@ -15,9 +15,9 @@
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -25,7 +25,7 @@
 @StarlarkBuiltin(
     name = "java",
     doc = "A java compiler configuration.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface JavaConfigurationApi extends StarlarkValue {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java
index 4ac53bc..83fd013 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -21,7 +22,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -31,7 +31,7 @@
 @StarlarkBuiltin(
     name = "JavaInfo",
     doc = "A provider encapsulating information about Java and Java-like targets.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface JavaInfoApi<FileT extends FileApi> extends StructApi {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaNativeLibraryInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaNativeLibraryInfoApi.java
index ab5d4e4..501ad5a 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaNativeLibraryInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaNativeLibraryInfoApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
@@ -23,7 +24,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.cpp.LibraryToLinkApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -35,7 +35,7 @@
             + "you will be broken when it is removed."
             + "Information about the C++ libraries to be linked into Java targets.",
     documented = true,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface JavaNativeLibraryInfoApi<
         FileT extends FileApi, LibraryToLinkT extends LibraryToLinkApi<FileT>>
     extends StructApi {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuleOutputJarsProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuleOutputJarsProviderApi.java
index ac7c18a..83bc32e 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuleOutputJarsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuleOutputJarsProviderApi.java
@@ -15,16 +15,16 @@
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Info object about outputs of a Java rule. */
 @StarlarkBuiltin(
     name = "java_output_jars",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "Information about outputs of a Java rule.")
 public interface JavaRuleOutputJarsProviderApi<OutputJarT extends OutputJarApi<?>>
     extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuntimeInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuntimeInfoApi.java
index 77c6deb..e596470 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuntimeInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaRuntimeInfoApi.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.platform.ToolchainInfoApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** Information about the Java runtime being used. */
 @StarlarkBuiltin(
     name = "JavaRuntimeInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc = "Information about the Java runtime being used.")
 public interface JavaRuntimeInfoApi extends ToolchainInfoApi {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaStarlarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaStarlarkApiProviderApi.java
index b15943a..6294573 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaStarlarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaStarlarkApiProviderApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkValue;
 
 /**
@@ -25,8 +25,7 @@
  */
 @StarlarkBuiltin(
     name = "JavaStarlarkApiProvider",
-    title = "java",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Deprecated. Use <a"
             + " href=\"https://docs.bazel.build/versions/master/skylark/lib/JavaInfo.html\">JavaInfo</a>"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaToolchainStarlarkApiProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaToolchainStarlarkApiProviderApi.java
index dbba910..ca5361f 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaToolchainStarlarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaToolchainStarlarkApiProviderApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.platform.ToolchainInfoApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 
@@ -28,7 +28,7 @@
  */
 @StarlarkBuiltin(
     name = "JavaToolchainInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Provides access to information about the Java toolchain rule. "
             + "Accessible as a 'java_toolchain' field on a Target struct.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/OutputJarApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/OutputJarApi.java
index 6550dd7..23059f0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/OutputJarApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/OutputJarApi.java
@@ -14,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.StarlarkValue;
@@ -24,7 +24,7 @@
 /** A tuple of a java classes jar and its associated source and interface archives. */
 @StarlarkBuiltin(
     name = "java_output",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Java classes jar, together with their associated source and interface archives.")
 public interface OutputJarApi<FileT extends FileApi> extends StarlarkValue {
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/ProguardSpecProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/ProguardSpecProviderApi.java
index dfc56e6..c136e75 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/ProguardSpecProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/ProguardSpecProviderApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -20,7 +21,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -28,7 +28,7 @@
 @StarlarkBuiltin(
     name = "ProguardSpecProvider",
     doc = "Proguard specifications used for Android binaries.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ProguardSpecProviderApi<FileT extends FileApi> extends StructApi {
 
   String NAME = "ProguardSpecProvider";
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/JsModuleInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/JsModuleInfoApi.java
index 353f6c9..98457c5 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/JsModuleInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/JsModuleInfoApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.javascript;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
@@ -22,7 +23,6 @@
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -31,7 +31,7 @@
 /** Info object propagating information about protocol buffer sources. */
 @StarlarkBuiltin(
     name = "JsModuleInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Encapsulates information provided by js_module, a unit of JavaScript code that is part of"
             + " a bigger whole (a js_module_binary), but is not necessarily loaded at start-up.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintCollectionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintCollectionApi.java
index cf140bf..f6aab08 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintCollectionApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 import net.starlark.java.eval.StarlarkIndexable;
@@ -30,7 +30,7 @@
     doc =
         "Provides access to data about a collection of ConstraintValueInfo providers. "
             + PlatformInfoApi.EXPERIMENTAL_WARNING,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ConstraintCollectionApi<
         ConstraintSettingInfoT extends ConstraintSettingInfoApi,
         ConstraintValueInfoT extends ConstraintValueInfoApi>
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintSettingInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintSettingInfoApi.java
index f304de0..48292e9 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintSettingInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintSettingInfoApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** Info object representing a specific constraint setting that may be used to define a platform. */
@@ -30,7 +30,7 @@
             + "<a href='../../platforms.html#defining-constraints-and-platforms'>Defining "
             + "Constraints and Platforms</a> for more information."
             + PlatformInfoApi.EXPERIMENTAL_WARNING,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ConstraintSettingInfoApi extends StructApi {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintValueInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintValueInfoApi.java
index 58f5988..1f6d35e 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintValueInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ConstraintValueInfoApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -31,7 +31,7 @@
             + "<a href='../../platforms.html#defining-constraints-and-platforms'>Defining "
             + "Constraints and Platforms</a> for more information."
             + PlatformInfoApi.EXPERIMENTAL_WARNING,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ConstraintValueInfoApi extends StructApi {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ExecGroupCollectionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ExecGroupCollectionApi.java
index ffda138..6b51de6 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ExecGroupCollectionApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ExecGroupCollectionApi.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkIndexable;
@@ -23,7 +23,7 @@
 /** Stores {@link com.google.devtools.build.lib.packages.ExecGroup}s available to a given rule. */
 @StarlarkBuiltin(
     name = "ExecGroupCollection",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     // TODO(b/151742236) update this doc when this becomes non-experimental.
     doc = "<i>experimental</i> Stores exec groups available to a given rule.")
 public interface ExecGroupCollectionApi extends StarlarkValue, StarlarkIndexable {
@@ -36,7 +36,7 @@
    */
   @StarlarkBuiltin(
       name = "ExecGroupContext",
-      category = StarlarkDocumentationCategory.BUILTIN,
+      category = DocCategory.BUILTIN,
       // TODO(b/151742236) update this doc when this becomes non-experimental.
       doc = "<i>experimental</i> Stores information about an exec group.")
   interface ExecGroupContextApi extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformConfigurationApi.java
index 264aaec..beb92d48 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformConfigurationApi.java
@@ -15,9 +15,9 @@
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -25,7 +25,7 @@
 @StarlarkBuiltin(
     name = "platform",
     doc = "The platform configuration.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public interface PlatformConfigurationApi extends StarlarkValue {
 
   @StarlarkMethod(name = "host_platform", structField = true, doc = "The current host platform")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformInfoApi.java
index f757afe..f592b7c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/PlatformInfoApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
@@ -22,7 +23,6 @@
 import java.util.Map;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -37,7 +37,7 @@
             + "<a href='../../platforms.html#defining-constraints-and-platforms'>Defining "
             + "Constraints and Platforms</a> for more information."
             + PlatformInfoApi.EXPERIMENTAL_WARNING,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface PlatformInfoApi<
         ConstraintSettingInfoT extends ConstraintSettingInfoApi,
         ConstraintValueInfoT extends ConstraintValueInfoApi>
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainContextApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainContextApi.java
index 990863e..227ed4c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainContextApi.java
@@ -14,15 +14,15 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.eval.StarlarkIndexable;
 import net.starlark.java.eval.StarlarkValue;
 
 /** Stores toolchains available to a given rule. */
 @StarlarkBuiltin(
     name = "ToolchainContext",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "Holds toolchains available for a particular exec group. Toolchain targets are accessed by"
             + " indexing with the toolchain type, as in"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainInfoApi.java
index bfd6a6a..7db3477 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainInfoApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -33,7 +33,7 @@
             + "<a href=\"../../toolchains.html#writing-rules-that-use-toolchains\">rules which "
             + "depend on toolchains</a>. Read about <a href='../../toolchains.html'>"
             + "toolchains</a> for more information.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ToolchainInfoApi extends StructApi {
 
   /** Provider for {@link ToolchainInfoApi} objects. */
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainTypeInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainTypeInfoApi.java
index 708a601..0177faa 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainTypeInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/ToolchainTypeInfoApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.platform;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** Info object representing data about a specific toolchain type. */
@@ -26,7 +26,7 @@
     doc =
         "Provides access to data about a specific toolchain type. "
             + PlatformInfoApi.EXPERIMENTAL_WARNING,
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ToolchainTypeInfoApi extends StructApi {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/BUILD
index 0452a4d..96d1179 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/BUILD
@@ -20,13 +20,13 @@
     name = "proto",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
         "//src/main/java/net/starlark/java/annot",
         "//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/lib/starlarkbuildapi/proto/ProtoRegistryProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/ProtoRegistryProviderApi.java
index d2ce84d..43a06c2 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/ProtoRegistryProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto/ProtoRegistryProviderApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.proto;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Sequence;
 
@@ -26,7 +26,7 @@
 @StarlarkBuiltin(
     name = "ProtoRegistryProvider",
     doc = "Information about flavors for all built protos.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface ProtoRegistryProviderApi<FileT extends FileApi> extends StructApi {
 
   @StarlarkMethod(name = "jars", documented = false, doc = "", structField = true)
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyInfoApi.java
index ef99e56..9169da7 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyInfoApi.java
@@ -14,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.python;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkThread;
@@ -30,7 +30,7 @@
 @StarlarkBuiltin(
     name = "PyInfo",
     doc = "Encapsulates information provided by the Python rules.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface PyInfoApi<FileT extends FileApi> extends StarlarkValue {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyRuntimeInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyRuntimeInfoApi.java
index b4b8cf5..4c6b6b0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyRuntimeInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/PyRuntimeInfoApi.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.python;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -21,7 +22,6 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkThread;
@@ -40,7 +40,7 @@
             + "interpreter. In both cases, an \"interpreter\" is really any executable binary or "
             + "wrapper script that is capable of running a Python script passed on the command "
             + "line, following the same conventions as the standard CPython interpreter.",
-    category = StarlarkDocumentationCategory.PROVIDER)
+    category = DocCategory.PROVIDER)
 public interface PyRuntimeInfoApi<FileT extends FileApi> extends StarlarkValue {
 
   @StarlarkMethod(
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/RepositoryPathApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/RepositoryPathApi.java
index e03367a..62e5453 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/RepositoryPathApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/RepositoryPathApi.java
@@ -15,17 +15,17 @@
 package com.google.devtools.build.lib.starlarkbuildapi.repository;
 
 import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import java.io.IOException;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A structure representing a file to be used inside a repository. */
 @StarlarkBuiltin(
     name = "path",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "A structure representing a file to be used inside a repository.")
 public interface RepositoryPathApi<RepositoryPathApiT extends RepositoryPathApi<?>>
     extends StarlarkValue {
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkExecutionResultApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkExecutionResultApi.java
index f0a37da..1318c0c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkExecutionResultApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkExecutionResultApi.java
@@ -14,8 +14,8 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.repository;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -26,7 +26,7 @@
  */
 @StarlarkBuiltin(
     name = "exec_result",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "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"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkOSApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkOSApi.java
index feac8ef..e24227a 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkOSApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkOSApi.java
@@ -15,15 +15,15 @@
 package com.google.devtools.build.lib.starlarkbuildapi.repository;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.docgen.annot.DocCategory;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
 /** A Starlark structure to deliver information about the system we are running on. */
 @StarlarkBuiltin(
     name = "repository_os",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc = "Various data about the current platform Bazel is running on.")
 public interface StarlarkOSApi extends StarlarkValue {
   @StarlarkMethod(name = "environ", structField = true, doc = "The list of environment variables.")
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkRepositoryContextApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkRepositoryContextApi.java
index d278f0f..ae0e2c0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkRepositoryContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository/StarlarkRepositoryContextApi.java
@@ -14,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.repository;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -30,7 +30,7 @@
 /** Starlark API for the repository_rule's context. */
 @StarlarkBuiltin(
     name = "repository_ctx",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = DocCategory.BUILTIN,
     doc =
         "The context of the repository rule containing"
             + " helper functions and information about attributes. You get a repository_ctx object"
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/InstrumentedFilesInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/InstrumentedFilesInfoApi.java
index e14df29..e9a5357 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/InstrumentedFilesInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/InstrumentedFilesInfoApi.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.test;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** Contains information about instrumented files sources and instrumentation metadata. */
 @StarlarkBuiltin(
     name = "InstrumentedFilesInfo",
-    category = StarlarkDocumentationCategory.PROVIDER,
+    category = DocCategory.PROVIDER,
     doc =
         "Contains information about source files and instrumentation metadata files for rule "
             + "targets matched by <a href=\"../../command-line-reference.html"
diff --git a/src/main/java/net/starlark/java/annot/StarlarkBuiltin.java b/src/main/java/net/starlark/java/annot/StarlarkBuiltin.java
index 80a224f..dd90acf 100644
--- a/src/main/java/net/starlark/java/annot/StarlarkBuiltin.java
+++ b/src/main/java/net/starlark/java/annot/StarlarkBuiltin.java
@@ -56,17 +56,19 @@
 @Retention(RetentionPolicy.RUNTIME)
 public @interface StarlarkBuiltin {
 
-  /** A type name that may be used in stringification and error messages. */
+  /** The name of this data type, as returned by the Starlark expression {@code type(x)}. */
   String name();
 
-  /** A title for the documentation page generated for this type. */
-  String title() default "";
-
   /** Module documentation in HTML. May be empty only if {@code !documented()}. */
   String doc() default "";
 
   /** Whether the module should appear in the documentation. */
   boolean documented() default true;
 
-  StarlarkDocumentationCategory category() default StarlarkDocumentationCategory.TOP_LEVEL_TYPE;
+  /**
+   * The category of the documentation to which this data type belongs. Applications may use this
+   * field as they wish for their documentation tools. The core data types of the Starlark
+   * interpreter all have category "core".
+   */
+  String category() default "";
 }
diff --git a/src/main/java/net/starlark/java/annot/StarlarkDocumentationCategory.java b/src/main/java/net/starlark/java/annot/StarlarkDocumentationCategory.java
deleted file mode 100644
index fc879d8..0000000
--- a/src/main/java/net/starlark/java/annot/StarlarkDocumentationCategory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2016 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 net.starlark.java.annot;
-
-/** A category of a Java type exposed to Starlark */
-// TODO(adonovan): abolish this type, a Bazelism. Use a heuristic in docgen.
-public enum StarlarkDocumentationCategory {
-  CONFIGURATION_FRAGMENT("Configuration Fragments",
-      "Configuration fragments give rules access to "
-      + "language-specific parts of <a href=\"configuration.html\">"
-      + "configuration</a>. "
-      + "<p>Rule implementations can get them using "
-      + "<code><a href=\"ctx.html#fragments\">ctx."
-      + "fragments</a>.<i>[fragment name]</i></code>"),
-
-  PROVIDER("Providers",
-      "This section lists providers available on built-in rules. See the "
-      + "<a href='../rules.$DOC_EXT#providers'>Rules page</a> for more on providers."
-  ),
-
-  BUILTIN("Built-in Types", "This section lists types of Starlark objects."),
-
-  // Used for top-level modules of functions in the global namespace. Such modules will always
-  // be usable solely by accessing their members, via modulename.funcname() or
-  // modulename.constantname.
-  // Examples: attr, cc_common, config, java_common
-  TOP_LEVEL_TYPE,
-
-  // Legacy uncategorized type; these are treated like TOP_LEVEL_TYPE in documentation.
-  NONE;
-
-  private final String title;
-  private final String description;
-
-  StarlarkDocumentationCategory(String title, String description) {
-    this.title = title;
-    this.description = description;
-  }
-
-  StarlarkDocumentationCategory() {
-    this.title = null;
-    this.description = null;
-  }
-
-  public String getTemplateIdentifier() {
-    return name().toLowerCase().replace("_", "-");
-  }
-
-  public String getTitle() {
-    return title;
-  }
-
-  public String getDescription() {
-    return description;
-  }
-}
diff --git a/src/main/java/net/starlark/java/eval/Dict.java b/src/main/java/net/starlark/java/eval/Dict.java
index adcff3b..af75076 100644
--- a/src/main/java/net/starlark/java/eval/Dict.java
+++ b/src/main/java/net/starlark/java/eval/Dict.java
@@ -28,7 +28,6 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.syntax.Location;
 
@@ -42,7 +41,7 @@
  */
 @StarlarkBuiltin(
     name = "dict",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = "core",
     doc =
         "dict is a built-in type representing an associative mapping or <i>dictionary</i>. A"
             + " dictionary supports indexing using <code>d[k]</code> and key membership testing"
diff --git a/src/main/java/net/starlark/java/eval/MethodLibrary.java b/src/main/java/net/starlark/java/eval/MethodLibrary.java
index b42ad41..3b7f361 100644
--- a/src/main/java/net/starlark/java/eval/MethodLibrary.java
+++ b/src/main/java/net/starlark/java/eval/MethodLibrary.java
@@ -29,7 +29,6 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /** The universal predeclared functions of core Starlark. */
@@ -793,7 +792,7 @@
   /** Starlark int type. */
   @StarlarkBuiltin(
       name = "int",
-      category = StarlarkDocumentationCategory.BUILTIN,
+      category = "core",
       doc =
           "A type to represent integers. It can represent any number between -2147483648 and "
               + "2147483647 (included). "
@@ -812,7 +811,7 @@
   /** Starlark bool type. */
   @StarlarkBuiltin(
       name = "bool",
-      category = StarlarkDocumentationCategory.BUILTIN,
+      category = "core",
       doc =
           "A type to represent booleans. There are only two possible values: "
               + "<a href=\"globals.html#True\">True</a> and "
diff --git a/src/main/java/net/starlark/java/eval/RangeList.java b/src/main/java/net/starlark/java/eval/RangeList.java
index 83d4fa8..e04723c 100644
--- a/src/main/java/net/starlark/java/eval/RangeList.java
+++ b/src/main/java/net/starlark/java/eval/RangeList.java
@@ -21,7 +21,6 @@
 import java.util.NoSuchElementException;
 import javax.annotation.concurrent.Immutable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /**
  * A sequence returned by the {@code range} function invocation.
@@ -36,7 +35,7 @@
  */
 @StarlarkBuiltin(
     name = "range",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = "core",
     doc =
         "A language built-in type to support ranges. Example of range literal:<br>"
             + "<pre class=language-python>x = range(1, 10, 3)</pre>"
diff --git a/src/main/java/net/starlark/java/eval/Sequence.java b/src/main/java/net/starlark/java/eval/Sequence.java
index 8f123cb..fdaf99e 100644
--- a/src/main/java/net/starlark/java/eval/Sequence.java
+++ b/src/main/java/net/starlark/java/eval/Sequence.java
@@ -19,7 +19,6 @@
 import java.util.List;
 import java.util.RandomAccess;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /**
  * A Sequence is a finite iterable sequence of Starlark values, such as a list or tuple.
@@ -36,7 +35,7 @@
 @StarlarkBuiltin(
     name = "sequence",
     documented = false,
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = "core",
     doc = "common type of lists and tuples.")
 public interface Sequence<E>
     extends StarlarkValue, List<E>, RandomAccess, StarlarkIndexable, StarlarkIterable<E> {
diff --git a/src/main/java/net/starlark/java/eval/StarlarkList.java b/src/main/java/net/starlark/java/eval/StarlarkList.java
index c2a802b..23b07b6 100644
--- a/src/main/java/net/starlark/java/eval/StarlarkList.java
+++ b/src/main/java/net/starlark/java/eval/StarlarkList.java
@@ -22,14 +22,13 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.syntax.Location;
 
 /** A StarlarkList is a mutable finite sequence of values. */
 @StarlarkBuiltin(
     name = "list",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = "core",
     doc =
         "The built-in list type. Example list expressions:<br>"
             + "<pre class=language-python>x = [1, 2, 3]</pre>"
diff --git a/src/main/java/net/starlark/java/eval/StringModule.java b/src/main/java/net/starlark/java/eval/StringModule.java
index 0cac6e9..b9fb864 100644
--- a/src/main/java/net/starlark/java/eval/StringModule.java
+++ b/src/main/java/net/starlark/java/eval/StringModule.java
@@ -26,7 +26,6 @@
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 
 /**
@@ -40,7 +39,7 @@
  */
 @StarlarkBuiltin(
     name = "string",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = "core",
     doc =
         "A language built-in type to support strings. "
             + "Examples of string literals:<br>"
diff --git a/src/main/java/net/starlark/java/eval/Tuple.java b/src/main/java/net/starlark/java/eval/Tuple.java
index 0cad148..f7da45c 100644
--- a/src/main/java/net/starlark/java/eval/Tuple.java
+++ b/src/main/java/net/starlark/java/eval/Tuple.java
@@ -22,7 +22,6 @@
 import java.util.Arrays;
 import java.util.Iterator;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /**
  * A Starlark tuple, i.e. the value represented by {@code (1, 2, 3)}. Tuples are always immutable
@@ -30,7 +29,7 @@
  */
 @StarlarkBuiltin(
     name = "tuple",
-    category = StarlarkDocumentationCategory.BUILTIN,
+    category = "core",
     doc =
         "The built-in tuple type. Example tuple expressions:<br>"
             + "<pre class=language-python>x = (1, 2, 3)</pre>"
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationField.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationField.java
index b250fe4..914cb00b8 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationField.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationField.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public class GoldenConfigurationField extends Fragment {
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java
index 304904a..249a9e6 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/GoldenConfigurationFieldThroughApi.java
@@ -14,11 +14,11 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 public class GoldenConfigurationFieldThroughApi extends Fragment implements ApiInterface {
@@ -39,5 +39,5 @@
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 interface ApiInterface {}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/HasMethodParameters.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/HasMethodParameters.java
index ea47ee6..a2edea3 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/HasMethodParameters.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/HasMethodParameters.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public class HasMethodParameters extends Fragment {
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodIsPrivate.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodIsPrivate.java
index 74a75ee..0fa022a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodIsPrivate.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodIsPrivate.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public class MethodIsPrivate extends Fragment {
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodThrowsException.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodThrowsException.java
index ec790c3..6431327 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodThrowsException.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/MethodThrowsException.java
@@ -14,17 +14,17 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public class MethodThrowsException extends Fragment {
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/NonConfigurationFragment.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/NonConfigurationFragment.java
index b0336f1..5b7ca49 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/NonConfigurationFragment.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/NonConfigurationFragment.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import com.google.devtools.build.lib.cmdline.Label;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.BUILTIN // Not a configuration fragment!
+    category = DocCategory.BUILTIN // Not a configuration fragment!
     )
 public class NonConfigurationFragment {
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/ReturnsOtherType.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/ReturnsOtherType.java
index f278c00..dc23b0d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/ReturnsOtherType.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/optiontestsources/ReturnsOtherType.java
@@ -14,16 +14,16 @@
 
 package com.google.devtools.build.lib.analysis.starlark.annotations.processor.optiontestsources;
 
+import com.google.devtools.build.docgen.annot.DocCategory;
 import com.google.devtools.build.lib.analysis.config.Fragment;
 import com.google.devtools.build.lib.analysis.starlark.annotations.StarlarkConfigurationField;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkDocumentationCategory;
 
 /** A test case of StarlarkConfigurationFieldProcessorTest. */
 @StarlarkBuiltin(
     name = "module_name",
     doc = "A fake configuration fragment for a test.",
-    category = StarlarkDocumentationCategory.CONFIGURATION_FRAGMENT)
+    category = DocCategory.CONFIGURATION_FRAGMENT)
 public class ReturnsOtherType extends Fragment {
 
   /**