docgen: move and simplify StarlarkConstructor annotation

Previously, it was in the Starlark interpreter, but it is only used by docgen.

Both its fields have been eliminated because they provide redundant information.
I would have made this change a long time ago but for the fact that
the the information was not entirely redundant. I now believe the only two
places where the provided information differs from trivially computed values
were both mistakes. They are:

1) XcodeConfigInfo, which is now called XcodeVersionConfig.
   The former string appears only in the docs, but never in the codebase.
   See: https://docs.bazel.build/versions/3.4.0/skylark/lib/XcodeVersionConfig.html#XcodeConfigInfo

2) apple_common.AppleStaticLibrary, which is now called AppleStaticLibrary.
   The former name is not an identifier, so it leads to nonsensical documentation.
   See: https://docs.bazel.build/versions/3.5.0/skylark/lib/AppleStaticLibrary.html#members

PiperOrigin-RevId: 333103884
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 b22c2c1..a3ee2a3 100644
--- a/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationCollector.java
+++ b/src/main/java/com/google/devtools/build/docgen/StarlarkDocumentationCollector.java
@@ -17,6 +17,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.docgen.annot.DocumentMethods;
+import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.docgen.starlark.StarlarkBuiltinDoc;
 import com.google.devtools.build.docgen.starlark.StarlarkConstructorMethodDoc;
 import com.google.devtools.build.docgen.starlark.StarlarkJavaMethodDoc;
@@ -27,8 +28,8 @@
 import java.util.TreeMap;
 import javax.annotation.Nullable;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
+import net.starlark.java.annot.StarlarkInterfaceUtils;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Starlark;
 import net.starlark.java.eval.StarlarkSemantics;
@@ -238,30 +239,19 @@
     }
   }
 
-  private static void collectConstructor(
-      Map<String, StarlarkBuiltinDoc> modules, Class<?> moduleClass, Method method) {
-    StarlarkConstructor constructorAnnotation =
-        Preconditions.checkNotNull(method.getAnnotation(StarlarkConstructor.class));
-    StarlarkMethod callable =
-        Preconditions.checkNotNull(method.getAnnotation(StarlarkMethod.class));
-    Class<?> objectClass = constructorAnnotation.objectType();
-    StarlarkBuiltin objectModule = objectClass.getAnnotation(StarlarkBuiltin.class);
-    if (objectModule == null || !objectModule.documented()) {
+  private static void collectConstructor(Map<String, StarlarkBuiltinDoc> modules, Method method) {
+    Preconditions.checkNotNull(method.getAnnotation(StarlarkConstructor.class));
+
+    StarlarkBuiltin builtinType = StarlarkInterfaceUtils.getStarlarkBuiltin(method.getReturnType());
+    if (builtinType == null || !builtinType.documented()) {
       // The class of the constructed object type has no documentation, so no place to add
       // constructor information.
       return;
     }
-    StarlarkBuiltinDoc module = modules.get(objectModule.name());
-
-    String fullyQualifiedName;
-    if (!constructorAnnotation.receiverNameForDoc().isEmpty()) {
-      fullyQualifiedName = constructorAnnotation.receiverNameForDoc();
-    } else {
-      String originatingModuleName = getModuleNameForConstructorPrefix(moduleClass, modules);
-      fullyQualifiedName = getFullyQualifiedName(originatingModuleName, callable);
-    }
-
-    module.setConstructor(new StarlarkConstructorMethodDoc(fullyQualifiedName, method, callable));
+    StarlarkMethod methodAnnot =
+        Preconditions.checkNotNull(method.getAnnotation(StarlarkMethod.class));
+    StarlarkBuiltinDoc doc = modules.get(builtinType.name());
+    doc.setConstructor(new StarlarkConstructorMethodDoc(builtinType.name(), method, methodAnnot));
   }
 
   /**
@@ -278,42 +268,18 @@
       Class<?> moduleClass, Map<String, StarlarkBuiltinDoc> modules) {
     Method selfCallConstructor = getSelfCallConstructorMethod(moduleClass);
     if (selfCallConstructor != null) {
-      collectConstructor(modules, moduleClass, selfCallConstructor);
+      collectConstructor(modules, selfCallConstructor);
     }
 
     for (Method method : Starlark.getMethodAnnotations(moduleClass).keySet()) {
       if (method.isAnnotationPresent(StarlarkConstructor.class)) {
-        collectConstructor(modules, moduleClass, method);
+        collectConstructor(modules, method);
       }
       Class<?> returnClass = method.getReturnType();
       Method returnClassConstructor = getSelfCallConstructorMethod(returnClass);
       if (returnClassConstructor != null) {
-        collectConstructor(modules, moduleClass, returnClassConstructor);
+        collectConstructor(modules, returnClassConstructor);
       }
     }
   }
-
-  private static String getModuleNameForConstructorPrefix(
-      Class<?> moduleClass, Map<String, StarlarkBuiltinDoc> modules) {
-    if (moduleClass.isAnnotationPresent(StarlarkBuiltin.class)) {
-      String moduleName = moduleClass.getAnnotation(StarlarkBuiltin.class).name();
-      StarlarkBuiltinDoc moduleDoc = Preconditions.checkNotNull(modules.get(moduleName));
-
-      if (moduleClass != moduleDoc.getClassObject()) {
-        throw new IllegalStateException(
-            "Could not determine module name for constructor defined in " + moduleClass);
-      }
-      return moduleName;
-    } else if (moduleClass.isAnnotationPresent(DocumentMethods.class)) {
-      return "";
-    } else {
-      throw new IllegalArgumentException(moduleClass + " has no valid annotation");
-    }
-  }
-
-  private static String getFullyQualifiedName(String objectName, StarlarkMethod callable) {
-    String objectDotExpressionPrefix = objectName.isEmpty() ? "" : objectName + ".";
-    String methodName = callable.name();
-    return objectDotExpressionPrefix + methodName;
-  }
 }
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 3e0808d..9051d16 100644
--- a/src/main/java/com/google/devtools/build/docgen/annot/BUILD
+++ b/src/main/java/com/google/devtools/build/docgen/annot/BUILD
@@ -12,5 +12,8 @@
 
 java_library(
     name = "annot",
-    srcs = ["DocumentMethods.java"],
+    srcs = [
+        "DocumentMethods.java",
+        "StarlarkConstructor.java",
+    ],
 )
diff --git a/src/main/java/com/google/devtools/build/docgen/annot/StarlarkConstructor.java b/src/main/java/com/google/devtools/build/docgen/annot/StarlarkConstructor.java
new file mode 100644
index 0000000..1d726f7
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/docgen/annot/StarlarkConstructor.java
@@ -0,0 +1,29 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.docgen.annot;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * An marker annotation used on a {@link net.starlark.java.annot.StarlarkMethod}-annotated method
+ * that causes docgen to document it as a constructor function for the Starlark data type denoted by
+ * the method's return type. The Starlark data type is obtained from the class using {@link
+ * net.starlark.java.annot.StarlarkInterfaceUtils#getStarlarkBuiltin}.
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface StarlarkConstructor {}
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 b02030a..c06469d 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,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -161,7 +161,7 @@
         },
         selfCall = true,
         useStarlarkThread = true)
-    @StarlarkConstructor(objectType = DefaultInfoApi.class, receiverNameForDoc = "DefaultInfo")
+    @StarlarkConstructor
     DefaultInfoApi constructor(
         // TODO(cparsons): Use stricter types when Runfiles.NONE is passed as null.
         Object files,
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 c85475c..12ca92d 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,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
@@ -53,9 +53,7 @@
                 defaultValue = "{}",
                 doc = "Dictionary of arguments."),
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = OutputGroupInfoApi.class,
-        receiverNameForDoc = "OutputGroupInfo")
+    @StarlarkConstructor
     OutputGroupInfoApi constructor(Dict<String, Object> kwargs) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java
index 31dabfd..3247caa 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java
@@ -15,13 +15,13 @@
 package com.google.devtools.build.lib.starlarkbuildapi;
 
 import com.google.devtools.build.docgen.annot.DocumentMethods;
+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;
 import com.google.devtools.build.lib.starlarkbuildapi.StarlarkConfigApi.BuildSettingApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.ParamType;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -561,7 +561,7 @@
                     + "Label() call appears.")
       },
       useStarlarkThread = true)
-  @StarlarkConstructor(objectType = Label.class)
+  @StarlarkConstructor
   Label label(String labelString, Boolean relativeToCallerRepository, StarlarkThread thread)
       throws EvalException;
 
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java
index 336e23b..aebdb58 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java
@@ -13,12 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -166,7 +166,7 @@
               defaultValue = "None"),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidApplicationResourceInfoApi.class)
+    @StarlarkConstructor
     AndroidApplicationResourceInfoApi<FileT> createInfo(
         Object resourceApk,
         Object resourceJavaSrcJar,
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 6a7b4ab..f34adbb 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.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.Depset;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
@@ -22,7 +23,6 @@
 import javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -162,7 +162,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidAssetsInfoApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidAssetsInfoApi<FileT, AssetsT> createInfo(
         Label label,
         Object validationResult,
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 8b7d480..0d735d9 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,12 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -105,7 +105,7 @@
               type = AndroidManifestInfoApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidBinaryDataInfoApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidBinaryDataInfoApi<FileT> create(
         FileT resourceApk,
         FileT resourceProguardConfig,
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 aa0436e..830f3cd 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,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -66,9 +66,7 @@
               type = CcInfoApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = AndroidCcLinkParamsProviderApi.class,
-        receiverNameForDoc = NAME)
+    @StarlarkConstructor
     public AndroidCcLinkParamsProviderApi<FileT, CcInfoT> createInfo(CcInfoT store)
         throws EvalException;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDeviceBrokerInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDeviceBrokerInfoApi.java
index 2f1c464..f15f423 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDeviceBrokerInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDeviceBrokerInfoApi.java
@@ -13,11 +13,11 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -56,7 +56,7 @@
                       + "devices")
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidDeviceBrokerInfoApi.class)
+    @StarlarkConstructor
     AndroidDeviceBrokerInfoApi createInfo(String type) throws EvalException;
   }
 }
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 8eef428..8463063 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,12 +14,12 @@
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
 import com.google.common.collect.ImmutableMap;
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
@@ -68,9 +68,7 @@
               type = Dict.class),
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = AndroidFeatureFlagSetProviderApi.class,
-        receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidFeatureFlagSetProviderApi create(Dict<?, ?> flags /* <Label, String> */)
         throws EvalException;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdeInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdeInfoProviderApi.java
index e667b64..0acaef0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdeInfoProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidIdeInfoProviderApi.java
@@ -15,6 +15,7 @@
 
 import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableMap;
+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;
@@ -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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -294,7 +294,7 @@
               generic1 = String.class)
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidIdeInfoProviderApi.class)
+    @StarlarkConstructor
     AndroidIdeInfoProviderApi<FileT, OutputJarT> createInfo(
         /*noneable*/ Object javaPackage,
         /*noneable*/ Object manifest,
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 b2ad3ad..1569829 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,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -121,7 +121,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidIdlProviderApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidIdlProviderApi<FileT> createInfo(
         Depset transitiveIdlImportRoots,
         Depset transitiveIdlImports,
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 46aebd8..f8d3911 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,11 +13,11 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -67,9 +67,7 @@
               doc = "The target ApkInfo of the instrumentation test.")
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = AndroidInstrumentationInfoApi.class,
-        receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidInstrumentationInfoApi<ApkT> createInfo(ApkT target) throws EvalException;
   }
 }
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 ab43927..64bf396 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,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -94,7 +94,7 @@
               type = Boolean.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidLibraryAarInfoApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidLibraryAarInfoApi<FileT> create(
         FileT aar,
         FileT manifest,
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 32ea703..b9bf62b 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,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -64,9 +64,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = AndroidLibraryResourceClassJarProviderApi.class,
-        receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidLibraryResourceClassJarProviderApi<FileT> create(Depset jars) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidNativeLibsInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidNativeLibsInfoApi.java
index 27f0738..3926abf 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidNativeLibsInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidNativeLibsInfoApi.java
@@ -13,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 
@@ -67,7 +67,7 @@
               doc = "The native libraries produced by the rule."),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidNativeLibsInfoApi.class)
+    @StarlarkConstructor
     AndroidNativeLibsInfoApi<?> createInfo(Depset nativeLibs) throws EvalException;
   }
 }
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 49adc3c..555b695 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,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -63,7 +63,7 @@
               type = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidPreDexJarProviderApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidPreDexJarProviderApi<FileT> createInfo(FileT preDexJar) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidProguardInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidProguardInfoApi.java
index c377a2e..c8f1b4d 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidProguardInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidProguardInfoApi.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.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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -65,7 +65,7 @@
               generic1 = FileApi.class)
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidProguardInfoApi.class)
+    @StarlarkConstructor
     AndroidProguardInfoApi<FileT> createInfo(Sequence<?> localProguardSpecs /* <FileT> */)
         throws EvalException;
   }
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 737ce1b..f2071aa 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.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -221,7 +221,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidResourcesInfoApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     AndroidResourcesInfoApi<FileT, ValidatedAndroidDataT, AndroidManifestInfoT> createInfo(
         Label label,
         AndroidManifestInfoT manifest,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidSdkProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidSdkProviderApi.java
index b4fc5a2..ce9859b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidSdkProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidSdkProviderApi.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
 import com.google.devtools.build.lib.starlarkbuildapi.FilesToRunProviderApi;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
@@ -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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.StarlarkValue;
@@ -253,7 +253,7 @@
               type = StarlarkValue.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AndroidSdkProviderApi.class)
+    @StarlarkConstructor
     AndroidSdkProviderApi<FileT, FilesToRunProviderT, TransT> createInfo(
         String buildToolsVersion,
         FileT frameworkAidl,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/BUILD
index a46c0e6..a945d66 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/BUILD
@@ -20,6 +20,7 @@
     name = "android",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
@@ -29,7 +30,6 @@
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java",
         "//src/main/java/net/starlark/java/annot",
         "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/DataBindingV2ProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/DataBindingV2ProviderApi.java
index 482d39e..bb63fa3 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/DataBindingV2ProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/DataBindingV2ProviderApi.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.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;
@@ -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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -188,7 +188,7 @@
               generic1 = DataBindingV2ProviderApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = DataBindingV2ProviderApi.class)
+    @StarlarkConstructor
     DataBindingV2ProviderApi<FileT> createInfo(
         Object setterStoreFile,
         Object classInfoFile,
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 1eb2224..07acd73 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,12 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.android;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -62,7 +62,7 @@
               type = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = ProguardMappingProviderApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     ProguardMappingProviderApi<FileT> createInfo(FileT proguardMapping) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/UsesDataBindingProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/UsesDataBindingProviderApi.java
index 8acf0f9..c40c4db 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/UsesDataBindingProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/UsesDataBindingProviderApi.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.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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Sequence;
@@ -69,7 +69,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = UsesDataBindingProviderApi.class)
+    @StarlarkConstructor
     UsesDataBindingProviderApi<FileT> createInfo(Sequence<?> metadataOutputs /* <FileT> */)
         throws EvalException;
   }
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 e096c3f..05c441c 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,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -78,7 +78,7 @@
                       + "linked into the archive."),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = AppleStaticLibraryInfoApi.class)
+    @StarlarkConstructor
     AppleStaticLibraryInfoApi appleStaticLibrary(FileApiT archive, ObjcProviderApiT objcProvider)
         throws EvalException;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/BUILD
index 1f6687c..7cf9d81 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/BUILD
@@ -21,13 +21,13 @@
     srcs = glob(["*.java"]),
     deps = [
         "//third_party:guava",
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
         "//src/main/java/net/starlark/java/annot",
         # TODO(b/80307387): Remove dependency on Depset.
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/net/starlark/java/syntax",
         "//src/main/java/net/starlark/java/eval",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
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 5c1c330..4a1e3cd 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,11 +14,11 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.apple;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
@@ -148,9 +148,7 @@
               doc = "The selected Xcode version from this config."),
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = XcodeConfigInfoApi.class,
-        receiverNameForDoc = "XcodeConfigInfo")
+    @StarlarkConstructor
     XcodeConfigInfoApi<?, ?> xcodeConfigInfo(
         String iosSdkVersion,
         String iosMinimumOsVersion,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigGlobalLibraryApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigGlobalLibraryApi.java
index 666e587..ecd1820 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigGlobalLibraryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config/ConfigGlobalLibraryApi.java
@@ -15,8 +15,8 @@
 package com.google.devtools.build.lib.starlarkbuildapi.config;
 
 import com.google.devtools.build.docgen.annot.DocumentMethods;
+import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import net.starlark.java.annot.Param;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.EvalException;
@@ -95,7 +95,7 @@
                     + "a superset of the key set of the dictionary returned by this transition."),
       },
       useStarlarkThread = true)
-  @StarlarkConstructor(objectType = ConfigurationTransitionApi.class)
+  @StarlarkConstructor
   ConfigurationTransitionApi transition(
       StarlarkCallable implementation,
       Sequence<?> inputs, // <String> expected
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/BUILD
index 1ed8449..5b2a6c0 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/BUILD
@@ -24,9 +24,9 @@
     name = "core",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//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/core/StructApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/StructApi.java
index 40ba2bc..3481cba 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,9 +14,9 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.core;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
@@ -104,7 +104,7 @@
                 doc = "Dictionary of arguments."),
         useStarlarkThread = true,
         selfCall = true)
-    @StarlarkConstructor(objectType = StructApi.class, receiverNameForDoc = "struct")
+    @StarlarkConstructor
     StructApi createStruct(Dict<String, Object> kwargs, StarlarkThread thread) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BUILD
index 129d072..3670256 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BUILD
@@ -20,6 +20,7 @@
     name = "cpp",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
@@ -29,7 +30,6 @@
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
         "//src/main/java/net/starlark/java/annot",
         "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcInfoApi.java
index 5638629..d9b3cb1 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,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+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.ParamType;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -87,7 +87,7 @@
               })
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = CcInfoApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     CcInfoApi<FileT> createInfo(Object ccCompilationContext, Object ccLinkingInfo)
         throws EvalException;
   }
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 2917dd3..1a5333a 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,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.cpp;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -49,9 +49,7 @@
               type = CcLinkingContextApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = GoCcLinkParamsInfoApi.class,
-        receiverNameForDoc = "GoCcLinkParamsInfo")
+    @StarlarkConstructor
     public GoCcLinkParamsInfoApi createInfo(CcLinkingContextT ccLinkingContext)
         throws EvalException;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/BUILD
index f6228fc..7c731ec 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/BUILD
@@ -20,6 +20,7 @@
     name = "java",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
@@ -29,7 +30,6 @@
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
         "//src/main/java/net/starlark/java/annot",
         "//src/main/java/net/starlark/java/eval",
-        "//src/main/java/net/starlark/java/syntax",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/GeneratedExtensionRegistryProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/GeneratedExtensionRegistryProviderApi.java
index 64afe59..a443130 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.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -91,9 +91,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = GeneratedExtensionRegistryProviderApi.class,
-        receiverNameForDoc = NAME)
+    @StarlarkConstructor
     GeneratedExtensionRegistryProviderApi<FileT> create(
         Label generatingRuleLabel, boolean isLite, FileT classJar, FileT srcJar, Depset inputs)
         throws EvalException;
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 7b27939..5614178 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,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+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;
 import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi;
 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -74,7 +74,7 @@
               type = CcInfoApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = JavaCcLinkParamsProviderApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     public JavaCcLinkParamsProviderApi<FileT, CcInfoApiT> createInfo(CcInfoApiT store)
         throws EvalException;
   }
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 3dcf336..4ac53bc 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,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -236,7 +236,7 @@
         },
         selfCall = true,
         useStarlarkThread = true)
-    @StarlarkConstructor(objectType = JavaInfoApi.class, receiverNameForDoc = "JavaInfo")
+    @StarlarkConstructor
     JavaInfoApi<?> javaInfo(
         FileApi outputJarApi,
         Object compileJarApi,
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 279a8e5..ab5d4e4 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.StarlarkConstructor;
 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;
@@ -22,7 +23,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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -76,7 +76,7 @@
               generic1 = LibraryToLinkApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = JavaNativeLibraryInfoApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     JavaNativeLibraryInfoApi<FileT, LibraryToLinkT> create(Depset transitiveLibraries)
         throws EvalException;
   }
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 3d49b1c..dfc56e6 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,13 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.lib.starlarkbuildapi.java;
 
+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 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -53,7 +53,7 @@
               generic1 = FileApi.class),
         },
         selfCall = true)
-    @StarlarkConstructor(objectType = ProguardSpecProviderApi.class, receiverNameForDoc = NAME)
+    @StarlarkConstructor
     ProguardSpecProviderApi<FileT> create(Depset specs) throws EvalException;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/BUILD
index 0f382f6..49bc741 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/javascript/BUILD
@@ -20,12 +20,12 @@
     name = "javascript",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//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",
     ],
 )
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 6425b66..353f6c9 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.StarlarkConstructor;
 import com.google.devtools.build.lib.cmdline.Label;
 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.core.StructApi;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -100,7 +100,7 @@
         },
         selfCall = true,
         enableOnlyWithFlag = BuildLanguageOptions.EXPERIMENTAL_GOOGLE_LEGACY_API)
-    @StarlarkConstructor(objectType = JsModuleInfoApi.class, receiverNameForDoc = "JsModuleInfo")
+    @StarlarkConstructor
     JsModuleInfoApi<?> jsModuleInfo(
         Label label,
         String wrapper,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/BUILD
index 2c02ccd..081ddc6 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform/BUILD
@@ -20,12 +20,12 @@
     name = "platform",
     srcs = glob(["*.java"]),
     deps = [
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
         "//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",
         "//third_party:jsr305",
     ],
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 8292d5f..f757afe 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.StarlarkConstructor;
 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.ProviderApi;
@@ -21,7 +22,6 @@
 import java.util.Map;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
@@ -124,7 +124,7 @@
         selfCall = true,
         useStarlarkThread = true,
         enableOnlyWithFlag = BuildLanguageOptions.EXPERIMENTAL_PLATFORMS_API)
-    @StarlarkConstructor(objectType = PlatformInfoApi.class, receiverNameForDoc = "PlatformInfo")
+    @StarlarkConstructor
     PlatformInfoT platformInfo(
         Label label,
         Object parent,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/BUILD
index 8694043..01b7b2c 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python/BUILD
@@ -20,13 +20,13 @@
     name = "python",
     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",
         "//third_party:jsr305",
     ],
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 a6e6dca..ef99e56 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,12 +14,12 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.python;
 
+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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -123,7 +123,7 @@
         },
         selfCall = true,
         useStarlarkThread = true)
-    @StarlarkConstructor(objectType = PyInfoApi.class, receiverNameForDoc = "PyInfo")
+    @StarlarkConstructor
     PyInfoApi<?> constructor(
         Depset transitiveSources,
         boolean usesSharedLibraries,
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 52983c7..b4b8cf5 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,13 +14,13 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.python;
 
+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 javax.annotation.Nullable;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkDocumentationCategory;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.EvalException;
@@ -136,7 +136,7 @@
         },
         useStarlarkThread = true,
         selfCall = true)
-    @StarlarkConstructor(objectType = PyRuntimeInfoApi.class, receiverNameForDoc = "PyRuntimeInfo")
+    @StarlarkConstructor
     PyRuntimeInfoApi<?> constructor(
         Object interpreterPathUncast,
         Object interpreterUncast,
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/AnalysisTestResultInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/AnalysisTestResultInfoApi.java
index 631daa0..59f6312 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/AnalysisTestResultInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/AnalysisTestResultInfoApi.java
@@ -14,10 +14,10 @@
 
 package com.google.devtools.build.lib.starlarkbuildapi.test;
 
+import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 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.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.StarlarkValue;
 
@@ -73,9 +73,7 @@
                       + "success/failure.")
         },
         selfCall = true)
-    @StarlarkConstructor(
-        objectType = AnalysisTestResultInfoApi.class,
-        receiverNameForDoc = "AnalysisTestResultInfo")
+    @StarlarkConstructor
     AnalysisTestResultInfoApi testResultInfo(Boolean success, String message);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/BUILD
index 1ec4920..7ea3da4 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/BUILD
@@ -21,13 +21,13 @@
     srcs = glob(["*.java"]),
     deps = [
         "//third_party:guava",
+        "//src/main/java/com/google/devtools/build/docgen/annot",
         # TODO(b/80307387): Remove dependency on Label implementation.
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform",
         "//src/main/java/net/starlark/java/annot",
-        "//src/main/java/net/starlark/java/syntax",
         "//src/main/java/net/starlark/java/eval",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
     ],
diff --git a/src/main/java/net/starlark/java/annot/StarlarkConstructor.java b/src/main/java/net/starlark/java/annot/StarlarkConstructor.java
deleted file mode 100644
index 734761b..0000000
--- a/src/main/java/net/starlark/java/annot/StarlarkConstructor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package net.starlark.java.annot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * An annotation to mark {@link StarlarkMethod}-annotated methods as representing top-level
- * constructors for other Starlark objects. This is used only for documentation purposes.
- *
- * <p>For example, a "Foo" type Starlark object might be constructable at the top level using a
- * global callable "Foo()". One can annotate that callable with this annotation to ensure that the
- * documentation for "Foo()" appears alongside the documentation for the Foo type, and not the
- * available globals.
- */
-@Target({ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface StarlarkConstructor {
-
-  /** The java class of the Starlark type that this annotation's method is a constructor for. */
-  Class<?> objectType();
-
-  /**
-   * If non-empty, documents the way to invoke this function from the top level.
-   *
-   * <p>For example, if this constructs objects of type Foo, and this value is set to "Bar.Baz",
-   * then the documentation for the method signature will appear as "Foo Bar.Baz(...)".
-   */
-  String receiverNameForDoc() default "";
-}
diff --git a/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java b/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
index 485b817..01e17d5 100644
--- a/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
+++ b/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.docgen.annot.DocumentMethods;
+import com.google.devtools.build.docgen.annot.StarlarkConstructor;
 import com.google.devtools.build.docgen.starlark.StarlarkBuiltinDoc;
 import com.google.devtools.build.docgen.starlark.StarlarkConstructorMethodDoc;
 import com.google.devtools.build.docgen.starlark.StarlarkMethodDoc;
@@ -34,7 +35,6 @@
 import java.util.stream.Collectors;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkBuiltin;
-import net.starlark.java.annot.StarlarkConstructor;
 import net.starlark.java.annot.StarlarkMethod;
 import net.starlark.java.eval.Dict;
 import net.starlark.java.eval.Sequence;
@@ -322,7 +322,7 @@
     }
 
     @StarlarkMethod(name = "makeMockClassA", selfCall = true, doc = "makeMockClassA")
-    @StarlarkConstructor(objectType = MockClassA.class, receiverNameForDoc = "MockClassA")
+    @StarlarkConstructor
     public MockClassA makeMockClassA() {
       return new MockClassA();
     }