Fully qualify class names in javadoc when there is no other reference.

This removes the need for the class to actually be imported, thus removing potential dependencies.

PiperOrigin-RevId: 305259489
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
index 675dcb0..23eeb05 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
@@ -16,7 +16,6 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.ActionKeyContext;
 import com.google.devtools.build.lib.actions.ActionRegistry;
@@ -33,13 +32,12 @@
 import com.google.devtools.build.skyframe.SkyFunction;
 
 /**
- * The set of services that are provided to {@link ConfiguredTarget} objects
- * during initialization.
+ * The set of services that are provided to {@link ConfiguredTarget} objects during initialization.
  *
- * <p>These objects should not outlast the analysis phase. Do not pass them to {@link Action}
- * objects or other persistent objects. There are internal tests to ensure that AnalysisEnvironment
- * objects are not persisted that check the name of this class, so update those tests you change the
- * names of any implementation of this class.
+ * <p>These objects should not outlast the analysis phase. Do not pass them to {@link
+ * com.google.devtools.build.lib.actions.Action} objects or other persistent objects. There are
+ * internal tests to ensure that AnalysisEnvironment objects are not persisted that check the name
+ * of this class, so update those tests you change the names of any implementation of this class.
  */
 public interface AnalysisEnvironment extends ActionRegistry {
   /** Returns a callback to be used in this build for reporting analysis errors. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java
index a027e80..ca2d2e4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.Attribute;
 import com.google.devtools.build.lib.packages.AttributeMap;
-import com.google.devtools.build.lib.packages.RuleClass;
 import com.google.devtools.build.lib.packages.Type;
 import java.util.Collection;
 
@@ -28,8 +27,8 @@
  * attribute value queries on the rule.
  *
  * <p>An attribute type query is anything accessible from {@link Attribute} (i.e. anything about how
- * the attribute is integrated into the {@link RuleClass}). An attribute value query is anything
- * related to the actual value an attribute takes.
+ * the attribute is integrated into the {@link com.google.devtools.build.lib.packages.RuleClass}).
+ * An attribute value query is anything related to the actual value an attribute takes.
  *
  * <p>For example, given {@code deps = [":adep"]}, checking that {@code deps} exists or that it's
  * type is {@link com.google.devtools.build.lib.packages.BuildType#LABEL_LIST} are type queries.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectCollection.java
index 432416d..0966464 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectCollection.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.Aspect;
-import com.google.devtools.build.lib.packages.AspectDefinition;
 import com.google.devtools.build.lib.packages.AspectDescriptor;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -29,18 +28,19 @@
 /**
  * Represents aspects that should be applied to a target as part of {@link Dependency}.
  *
- * {@link Dependency} encapsulates all information that is needed to analyze an edge between
- * an AspectValue or a ConfiguredTargetValue and their direct dependencies, and
- * {@link AspectCollection} represents an aspect-related part of this information.
+ * <p>{@link Dependency} encapsulates all information that is needed to analyze an edge between an
+ * AspectValue or a ConfiguredTargetValue and their direct dependencies, and {@link
+ * AspectCollection} represents an aspect-related part of this information.
  *
- * Analysis arrives to a particular node in target graph with an ordered list of aspects that need
- * to be applied. Some of those aspects should visible to the node in question; some of them
- * are not directly visible, but are visible to other aspects, as specified by
- * {@link AspectDefinition#getRequiredProvidersForAspects()}.
+ * <p>Analysis arrives to a particular node in target graph with an ordered list of aspects that
+ * need to be applied. Some of those aspects should visible to the node in question; some of them
+ * are not directly visible, but are visible to other aspects, as specified by {@link
+ * com.google.devtools.build.lib.packages.AspectDefinition#getRequiredProvidersForAspects()}.
  *
- * As an example, of all these things in interplay, consider android_binary rule depending
- * on java_proto_library rule depending on proto_library rule; consider further that
- * we analyze the android_binary with some ide_info aspect:
+ * <p>As an example, of all these things in interplay, consider android_binary rule depending on
+ * java_proto_library rule depending on proto_library rule; consider further that we analyze the
+ * android_binary with some ide_info aspect:
+ *
  * <pre>
  *    proto_library(name = "pl") + ide_info_aspect
  *       ^
@@ -50,47 +50,44 @@
  *       | [DexArchiveAspect]
  *    android_binary(name = "ab") + ide_info_aspect
  * </pre>
+ *
  * ide_info_aspect is interested in java_proto_aspect, but not in DexArchiveAspect.
  *
- * Let's look is the {@link AspectCollection} for a Dependency representing a jpl->pl edge
- * for ide_info_aspect application to target <code>jpl</code>:
+ * <p>Let's look is the {@link AspectCollection} for a Dependency representing a jpl->pl edge for
+ * ide_info_aspect application to target <code>jpl</code>:
+ *
  * <ul>
- *   <li>the full list of aspects is [java_proto_aspect, DexArchiveAspect, ide_info_aspect]
- *       in this order (the order is determined by the order in which aspects originate on
- *       <code>ab->...->pl</code> path.
- *   </li>
- *   <li>however, DexArchiveAspect is not visible to either ide_info_aspect or java_proto_aspect,
- *        so the reduced list(and a result of {@link #getAllAspects()}) will be
- *        [java_proto_aspect, ide_info_aspect]
- *   </li>
- *   <li>both java_proto_aspect and ide_info_aspect will be visible to
- *       <code>jpl + ide_info_aspect</code> node: the former because java_proto_library
- *       originates java_proto_aspect, and the aspect applied to the node sees the same
- *       dependencies; and the latter because the aspect sees itself on all targets it
- *       propagates to. So {@link #getVisibleAspects()} will return both of them.
- *   </li>
- *   <li>Since ide_info_aspect declared its interest in java_proto_aspect and the latter
- *       comes before it in the order, {@link AspectDeps} for ide_info_aspect will
- *       contain java_proto_aspect (so the application of ide_info_aspect to <code>pl</code>
- *       target will see java_proto_aspect as well).
- *   </li>
+ *   <li>the full list of aspects is [java_proto_aspect, DexArchiveAspect, ide_info_aspect] in this
+ *       order (the order is determined by the order in which aspects originate on {@code
+ *       ab->...->pl} path).
+ *   <li>however, DexArchiveAspect is not visible to either ide_info_aspect or java_proto_aspect, so
+ *       the reduced list(and a result of {@link #getAllAspects()}) will be [java_proto_aspect,
+ *       ide_info_aspect]
+ *   <li>both java_proto_aspect and ide_info_aspect will be visible to <code>jpl + ide_info_aspect
+ *       </code> node: the former because java_proto_library originates java_proto_aspect, and the
+ *       aspect applied to the node sees the same dependencies; and the latter because the aspect
+ *       sees itself on all targets it propagates to. So {@link #getVisibleAspects()} will return
+ *       both of them.
+ *   <li>Since ide_info_aspect declared its interest in java_proto_aspect and the latter comes
+ *       before it in the order, {@link AspectDeps} for ide_info_aspect will contain
+ *       java_proto_aspect (so the application of ide_info_aspect to <code>pl</code> target will see
+ *       java_proto_aspect as well).
  * </ul>
  *
- * More details on members of {@link AspectCollection} follow, as well as more examples
- * of aspect visibility rules.
- *
+ * More details on members of {@link AspectCollection} follow, as well as more examples of aspect
+ * visibility rules.
  *
  * <p>{@link AspectDeps} is a class that represents an aspect and all aspects that are directly
- * visible to it.</p>
+ * visible to it.
  *
  * <p>{@link #getVisibleAspects()} returns aspects that should be visible to the node in question.
- * </p>
  *
- * <p>{@link #getAllAspects()} return all aspects that should be applied to the target,
- * in topological order.</p>
+ * <p>{@link #getAllAspects()} return all aspects that should be applied to the target, in
+ * topological order.
  *
- * <p>In the following scenario, consider rule r<sub>i</sub> sending an aspect a<sub>i</sub>
- * to its dependency:
+ * <p>In the following scenario, consider rule r<sub>i</sub> sending an aspect a<sub>i</sub> to its
+ * dependency:
+ *
  * <pre>
  *      [r0]
  *       ^
@@ -102,42 +99,45 @@
  *      [r3]
  * </pre>
  *
- * When a3 is propagated to target r0, the analysis arrives there with a path [a1, a2, a3].
- * Since we analyse the propagation of aspect a3, the only visible aspect is a3.
+ * When a3 is propagated to target r0, the analysis arrives there with a path [a1, a2, a3]. Since we
+ * analyse the propagation of aspect a3, the only visible aspect is a3.
  *
  * <p>Let's first assume that aspect a3 wants to see aspects a1 and a2, but aspects a1 and a2 are
- * not interested in each other (according to their
- * {@link AspectDefinition#getRequiredProvidersForAspects()}).
+ * not interested in each other (according to their {@link
+ * com.google.devtools.build.lib.packages.AspectDefinition#getRequiredProvidersForAspects()}).
  *
- * Since a3 is interested in all aspects, the result of {@link #getAllAspects()} will be
- * [a1, a2, a3], and {@link AspectCollection} will be:
+ * <p>Since a3 is interested in all aspects, the result of {@link #getAllAspects()} will be [a1, a2,
+ * a3], and {@link AspectCollection} will be:
+ *
  * <ul>
- *   <li>a3 -> [a1, a2], a3 is visible</li>
- *   <li>a2 -> []</li>
- *   <li>a1 -> []</li>
+ *   <li>a3 -> [a1, a2], a3 is visible
+ *   <li>a2 -> []
+ *   <li>a1 -> []
  * </ul>
  *
- * <p>Now what happens if a3 is interested in a2 but not a1, and a2 is interested in a1?
- * Again, all aspects are transitively interesting to a visible a3, so {@link #getAllAspects()}
- * will be [a1, a2, a3], but {@link AspectCollection} will now be:
+ * <p>Now what happens if a3 is interested in a2 but not a1, and a2 is interested in a1? Again, all
+ * aspects are transitively interesting to a visible a3, so {@link #getAllAspects()} will be [a1,
+ * a2, a3], but {@link AspectCollection} will now be:
+ *
  * <ul>
- *   <li>a3 -> [a2], a3 is visible</li>
- *   <li>a2 -> [a1]</li>
- *   <li>a1 -> []</li>
+ *   <li>a3 -> [a2], a3 is visible
+ *   <li>a2 -> [a1]
+ *   <li>a1 -> []
  * </ul>
  *
- * <p>As a final example, what happens if a3 is interested in a1, and a1 is interested in a2, but
- * a3 is not interested in a2? Now the result of {@link #getAllAspects()} will be [a1, a3].
- * a1 is interested in a2, but a2 comes later in the path than a1, so a1 does not see it (a1 only
- * started propagating on r1 -> r0 edge, and there is now a2 originating on that path).
- * And {@link AspectCollection} will now be:
+ * <p>As a final example, what happens if a3 is interested in a1, and a1 is interested in a2, but a3
+ * is not interested in a2? Now the result of {@link #getAllAspects()} will be [a1, a3]. a1 is
+ * interested in a2, but a2 comes later in the path than a1, so a1 does not see it (a1 only started
+ * propagating on r1 -> r0 edge, and there is now a2 originating on that path). And {@link
+ * AspectCollection} will now be:
+ *
  * <ul>
- *   <li>a3 -> [a1], a3 is visible</li>
- *   <li>a1 -> []</li>
+ *   <li>a3 -> [a1], a3 is visible
+ *   <li>a1 -> []
  * </ul>
- * Note that is does not matter if a2 is interested in a1 or not - since no one after it
- * in the path is interested in it, a2 is filtered out.
- * </p>
+ *
+ * Note that is does not matter if a2 is interested in a1 or not - since no one after it in the path
+ * is interested in it, a2 is filtered out.
  */
 @Immutable
 public final class AspectCollection {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
index 04068dd..b8211a1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
@@ -16,15 +16,14 @@
 
 import com.google.common.collect.ImmutableCollection;
 import com.google.devtools.build.lib.actions.Artifact.SourceArtifact;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.syntax.ClassObject;
 import com.google.devtools.build.lib.syntax.StarlarkValue;
 import javax.annotation.Nullable;
 
 /**
  * A {@link ConfiguredTarget} is conceptually a {@link TransitiveInfoCollection} coupled with the
- * {@link Target} and {@link BuildConfiguration} objects it was created from.
+ * {@link com.google.devtools.build.lib.packages.Target} and {@link
+ * com.google.devtools.build.lib.analysis.config.BuildConfiguration} objects it was created from.
  *
  * <p>This interface is supposed to only be used in {@link BuildView} and above. In particular, rule
  * implementations should not be able to access the {@link ConfiguredTarget} objects associated with
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index 4d838a5..3c35ba5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -31,7 +31,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
 import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
 import com.google.devtools.build.lib.analysis.config.CoreOptions;
-import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.analysis.configuredtargets.EnvironmentGroupConfiguredTarget;
 import com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfiguredTarget;
 import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget;
@@ -272,8 +271,8 @@
    * remaining pieces of config state.
    *
    * <p>The strings can be names of {@link BuildConfiguration.Fragment}s, names of {@link
-   * FragmentOptions}, and labels of user-defined options such as Starlark flags and Android feature
-   * flags.
+   * com.google.devtools.build.lib.analysis.config.FragmentOptions}, and labels of user-defined
+   * options such as Starlark flags and Android feature flags.
    *
    * <p>If {@code configuration} is {@link CoreOptions.IncludeConfigFragmentsEnum#DIRECT}, the
    * result includes only the config state considered to be directly required by this rule. If it's
@@ -292,12 +291,14 @@
    *     specified for this rule
    * @param configurationFragmentPolicy source of truth for the fragments required by this rule's
    *     rule class
-   * @param configConditions {@link FragmentOptions} required by {@code select}s on this rule. This
-   *     is a different type than the others: options and fragments are different concepts. There's
-   *     some subtlety to their relationship (e.g. a {@link FragmentOptions} can be associated with
-   *     multiple {@link BuildConfiguration.Fragment}s). Rather than trying to merge all results
-   *     into a pure set of {@link BuildConfiguration.Fragment}s we just allow the mix. In practice
-   *     the conceptual dependencies remain clear enough without trying to resolve these subtleties.
+   * @param configConditions {@link com.google.devtools.build.lib.analysis.config.FragmentOptions}
+   *     required by {@code select}s on this rule. This is a different type than the others: options
+   *     and fragments are different concepts. There's some subtlety to their relationship (e.g. a
+   *     {@link com.google.devtools.build.lib.analysis.config.FragmentOptions} can be associated
+   *     with multiple {@link BuildConfiguration.Fragment}s). Rather than trying to merge all
+   *     results into a pure set of {@link BuildConfiguration.Fragment}s we just allow the mix. In
+   *     practice the conceptual dependencies remain clear enough without trying to resolve these
+   *     subtleties.
    * @param prerequisites all prerequisties of this rule
    * @return An alphabetically ordered set of required fragments, options, and labels of
    *     user-defined options.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
index d8bb39c..bcf6d0e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.analysis;
 
 import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.packages.License;
@@ -27,7 +26,8 @@
   /**
    * The set of label - license associations in the transitive closure.
    *
-   * <p>Always returns an empty set if {@link BuildConfiguration#checkLicenses()} is false.
+   * <p>Always returns an empty set if {@link
+   * com.google.devtools.build.lib.analysis.config.BuildConfiguration#checkLicenses()} is false.
    */
   NestedSet<TargetLicense> getTransitiveLicenses();
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsProvider.java
index 1143bc4..64b2351 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RequiredConfigFragmentsProvider.java
@@ -17,14 +17,14 @@
 import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import java.util.List;
 
 /**
- * Provides a user-friendly list of the {@link BuildConfiguration.Fragment}s and
- * {@link FragmentOptions} required by this target and its transitive dependencies.
+ * Provides a user-friendly list of the
+ * {@link com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment}s and
+ * {@link com.google.devtools.build.lib.analysis.config.FragmentOptions} required by this target
+ * and its transitive dependencies.
  *
  * <p>See {@link ConfiguredTargetFactory#getRequiredConfigFragments) for details.
  */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java
index dda6a01..430a74f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java
@@ -15,10 +15,7 @@
 
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.RuleClass;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
 
 /**
  * A shortcut class to the appropriate specialization of {@code RuleClass.ConfiguredTargetFactory}.
@@ -26,12 +23,14 @@
  * <p>Here follows an overview of how loading and analysis works in Bazel:
  *
  * <p>Actions (i.e. commands that are run during the build) are created by configured targets (see
- * {@link ConfiguredTarget}), which are a pair of a {@link Label} (e.g. <code>//src:bazel</code>)
- * and a {@link BuildConfigurationValue#Key}, which is a key for a {@link BuildConfiguration}, which
- * is a blob of data that contains extra information about how the target should be built (for
- * example, for which platform or with which C++ preprocessor definitions). Accordingly, a target
- * can give rise to multiple configured targets, for example, if it needs to be built both for the
- * host and the target configuration.
+ * {@link ConfiguredTarget}), which are a pair of a {@link
+ * com.google.devtools.build.lib.cmdline.Label} (e.g. <code>//src:bazel</code>) and a {@link
+ * com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key}, which is a key for a {@link
+ * com.google.devtools.build.lib.analysis.config.BuildConfiguration}, which is a blob of data that
+ * contains extra information about how the target should be built (for example, for which platform
+ * or with which C++ preprocessor definitions). Accordingly, a target can give rise to multiple
+ * configured targets, for example, if it needs to be built both for the host and the target
+ * configuration.
  *
  * <p>The process of creating the appropriate {@link com.google.devtools.build.lib.actions.Action}s
  * for a configured target is called "analysis". The analysis of a configured target is composed of
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 88bd547..dc09fbe 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -32,7 +32,6 @@
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimaps;
 import com.google.common.collect.Sets;
-import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.ActionKeyContext;
 import com.google.devtools.build.lib.actions.ActionLookupValue;
@@ -115,10 +114,10 @@
 /**
  * The totality of data available during the analysis of a rule.
  *
- * <p>These objects should not outlast the analysis phase. Do not pass them to {@link Action}
- * objects or other persistent objects. There are internal tests to ensure that RuleContext objects
- * are not persisted that check the name of this class, so update those tests if you change this
- * class's name.
+ * <p>These objects should not outlast the analysis phase. Do not pass them to {@link
+ * com.google.devtools.build.lib.actions.Action} objects or other persistent objects. There are
+ * internal tests to ensure that RuleContext objects are not persisted that check the name of this
+ * class, so update those tests if you change this class's name.
  *
  * @see com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory
  */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java
index dd970f1..e304257 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java
@@ -20,7 +20,6 @@
 import com.google.common.collect.Multimaps;
 import com.google.devtools.build.lib.actions.ActionKeyContext;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
@@ -34,8 +33,8 @@
 
 /**
  * A helper class for building {@link ConfiguredTarget} instances, in particular for non-rule ones.
- * For {@link RuleConfiguredTarget} instances, use {@link RuleContext} instead,
- * which is a subclass of this class.
+ * For {@link com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget}
+ * instances, use {@link RuleContext} instead, which is a subclass of this class.
  *
  * <p>The class is intended to be sub-classed by RuleContext, in order to share the code. However,
  * it's not intended for sub-classing beyond that, and the constructor is intentionally package
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
index 1dcefc9..732ea61 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.analysis;
 
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -60,10 +59,11 @@
   Label getLabel();
 
   /**
-   * Returns the {@link BuildConfigurationValue.Key} naming the {@link BuildConfiguration} for which
-   * this transitive info collection is defined. Configuration is defined for all configured targets
-   * with exception of {@link
-   * com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfiguredTarget} and {@link
+   * Returns the {@link BuildConfigurationValue.Key} naming the {@link
+   * com.google.devtools.build.lib.analysis.config.BuildConfiguration} for which this transitive
+   * info collection is defined. Configuration is defined for all configured targets with exception
+   * of {@link com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfiguredTarget}
+   * and {@link
    * com.google.devtools.build.lib.analysis.configuredtargets.PackageGroupConfiguredTarget} for
    * which it is always <b>null</b>.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java
index c1cca86..41e4cf3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java
@@ -14,8 +14,6 @@
 
 package com.google.devtools.build.lib.analysis;
 
-import com.google.devtools.build.lib.packages.Info;
-import com.google.devtools.build.lib.packages.Provider;
 import javax.annotation.concurrent.Immutable;
 
 /**
@@ -25,8 +23,9 @@
  * <p>We have three kinds of provider identifiers:
  *
  * <ul>
- *   <li>Declared providers. They are exposed to Skylark and identified by {@link Provider.Key}.
- *       Provider instances are {@link Info}s.
+ *   <li>Declared providers. They are exposed to Skylark and identified by {@link
+ *       com.google.devtools.build.lib.packages.Provider.Key}. Provider instances are {@link
+ *       com.google.devtools.build.lib.packages.Info}s.
  *   <li>Native providers. They are identified by their {@link Class} and their instances are
  *       instances of that class. They should implement {@link TransitiveInfoProvider} marker
  *       interface.
@@ -52,7 +51,7 @@
    * <ul>
    *   <li>{@code Class<? extends TransitiveInfoProvider>}
    *   <li>String
-   *   <li>{@link Provider.Key}
+   *   <li>{@link com.google.devtools.build.lib.packages.Provider.Key}
    * </ul>
    *
    * Low-level method, use with care.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index bb854cb..6b7bef8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -20,7 +20,6 @@
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSortedMap;
@@ -108,8 +107,9 @@
    * An interface for language-specific configurations.
    *
    * <p>All implementations must be immutable and communicate this as clearly as possible (e.g.
-   * declare {@link ImmutableList} signatures on their interfaces vs. {@link List}). This is because
-   * fragment instances may be shared across configurations.
+   * declare {@link com/google/devtools/build/lib/analysis/config/BuildConfiguration.java used only
+   * in javadoc: com.google.common.collect.ImmutableList} signatures on their interfaces vs. {@link
+   * List}). This is because fragment instances may be shared across configurations.
    *
    * <p>Fragments are Starlark values, as returned by {@code ctx.fragments.android}, for example.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
index b695ce0..e602252 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.analysis.config;
 
 import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import java.util.HashMap;
 
@@ -24,7 +23,7 @@
  *
  * <p>The target configuration is used for all targets specified on the command line. Multiple
  * target configurations are possible because of settings like {@link
- * BuildRequestOptions#multiCpus}.
+ * com.google.devtools.build.lib.buildtool.BuildRequestOptions#multiCpus}.
  *
  * <p>The host configuration is used for tools that are executed during the build, e. g, compilers.
  */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
index fcbd92e..da828a3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
@@ -25,7 +25,6 @@
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Sets;
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.Dependency;
 import com.google.devtools.build.lib.analysis.DependencyResolver.DependencyKind;
 import com.google.devtools.build.lib.analysis.PlatformOptions;
@@ -46,7 +45,6 @@
 import com.google.devtools.build.lib.packages.TargetUtils;
 import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction;
-import com.google.devtools.build.lib.skyframe.ConfiguredTargetValue;
 import com.google.devtools.build.lib.skyframe.PackageValue;
 import com.google.devtools.build.lib.skyframe.PlatformMappingValue;
 import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
@@ -687,9 +685,11 @@
    * top-level configuration transitions) . Uses original (untrimmed, pre-transition) configurations
    * for targets that can't be evaluated (e.g. due to loading phase errors).
    *
-   * <p>This is suitable for feeding {@link ConfiguredTargetValue} keys: as general principle {@link
-   * ConfiguredTarget}s should have exactly as much information in their configurations as they need
-   * to evaluate and no more (e.g. there's no need for Android settings in a C++ configured target).
+   * <p>This is suitable for feeding {@link
+   * com.google.devtools.build.lib.skyframe.ConfiguredTargetValue} keys: as general principle {@link
+   * com.google.devtools.build.lib.analysis.ConfiguredTarget}s should have exactly as much
+   * information in their configurations as they need to evaluate and no more (e.g. there's no need
+   * for Android settings in a C++ configured target).
    *
    * @param defaultContext the original targets and starting configurations before applying rule
    *     transitions and trimming. When actual configurations can't be evaluated, these values are
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
index 207d2ae..22d157f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition;
 import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
 import com.google.devtools.build.lib.analysis.config.transitions.NullTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
 import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
 import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.Target;
@@ -32,8 +31,8 @@
  *
  * <p>This is the "generic engine" for configuration selection. It doesn't know anything about
  * specific rules or their requirements. Rule writers decide those with appropriately placed {@link
- * PatchTransition} declarations. This class then processes those declarations to determine final
- * transitions.
+ * com.google.devtools.build.lib.analysis.config.transitions.PatchTransition} declarations. This
+ * class then processes those declarations to determine final transitions.
  */
 public final class TransitionResolver {
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
index fea75c1..693fc98 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
@@ -21,10 +21,8 @@
 import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.FileProvider;
 import com.google.devtools.build.lib.analysis.FilesToRunProvider;
-import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
@@ -54,11 +52,11 @@
 import javax.annotation.Nullable;
 
 /**
- * A {@link ConfiguredTarget} that is produced by a rule.
+ * A {@link com.google.devtools.build.lib.analysis.ConfiguredTarget} that is produced by a rule.
  *
- * <p>Created by {@link RuleConfiguredTargetBuilder}. There is an instance of this class for every
- * analyzed rule. For more information about how analysis works, see {@link
- * com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory}.
+ * <p>Created by {@link com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder}. There
+ * is an instance of this class for every analyzed rule. For more information about how analysis
+ * works, see {@link com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory}.
  */
 @AutoCodec(checkClassExplicitlyAllowed = true)
 @Immutable // (and Starlark-hashable)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
index e53a48d..34a5673 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
@@ -31,7 +31,6 @@
 import com.google.devtools.build.lib.actions.CompositeRunfilesSupplier;
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
 import com.google.devtools.build.lib.actions.SpawnResult;
-import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -45,7 +44,7 @@
 
 /**
  * Action used by extra_action rules to create an action that shadows an existing action. Runs a
- * command-line using {@link SpawnStrategy} for executions.
+ * command-line using {@link com.google.devtools.build.lib.actions.SpawnStrategy} for executions.
  */
 public final class ExtraAction extends SpawnAction {
   private final Action shadowedAction;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkTransition.java
index 1aa8c73..411d2cc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkTransition.java
@@ -23,7 +23,6 @@
 import com.google.common.collect.Sets;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.ComposingTransition;
 import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.BuildType.SelectorList;
@@ -221,8 +220,10 @@
    * <p>Deduplicate redundant build settings from the result of split transitions. The first
    * encountered split key is used to represent the deduped build setting.
    *
-   * @param root transition that was applied. Likely a {@link ComposingTransition} so we decompose
-   *     and post-process all StarlarkTransitions out of whatever transition is passed here.
+   * @param root transition that was applied. Likely a {@link
+   *     com.google.devtools.build.lib.analysis.config.transitions.ComposingTransition} so we
+   *     decompose and post-process all StarlarkTransitions out of whatever transition is passed
+   *     here.
    * @param buildSettingPackages PackageValue.Key/Values of packages that contain all
    *     Starlark-defined build settings that were set by {@code root}. If any build settings are
    *     referenced by {@link Alias}, this contains all packages in the alias chain.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
index dbbf827..214969c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetProperties.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.actions.ExecutionRequirements;
 import com.google.devtools.build.lib.actions.ExecutionRequirements.ParseableRequirement.ValidationException;
 import com.google.devtools.build.lib.actions.ResourceSet;
-import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.actions.UserExecException;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.cmdline.Label;
@@ -172,7 +171,8 @@
   }
 
   /**
-   * Returns a map of execution info. See {@link Spawn#getExecutionInfo}.
+   * Returns a map of execution info. See {@link
+   * com.google.devtools.build.lib.actions.Spawn#getExecutionInfo}.
    */
   public ImmutableMap<String, String> getExecutionInfo() {
     return executionInfo;
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java
index 7e2d6f9..576d840 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.analysis.AnalysisOptions;
 import com.google.devtools.build.lib.analysis.OutputGroupInfo;
 import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
 import com.google.devtools.build.lib.exec.ExecutionOptions;
@@ -119,8 +118,9 @@
   /**
    * Since the OptionsProvider interface is used by many teams, this method is String-keyed even
    * though it should always contain labels for our purposes. Consumers of this method should
-   * probably use the {@link BuildOptions#labelizeStarlarkOptions} method before doing meaningful
-   * work with the results.
+   * probably use the {@link
+   * com.google.devtools.build.lib.analysis.config.BuildOptions#labelizeStarlarkOptions} method
+   * before doing meaningful work with the results.
    */
   @Override
   public Map<String, Object> getStarlarkOptions() {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index 6ba91d8..36ca625 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.actions.TestExecException;
 import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.BuildInfoEvent;
-import com.google.devtools.build.lib.analysis.BuildView;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
 import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.DummyEnvironment;
@@ -58,12 +57,13 @@
 /**
  * Provides the bulk of the implementation of the 'blaze build' command.
  *
- * <p>The various concrete build command classes handle the command options and request
- * setup, then delegate the handling of the request (the building of targets) to this class.
+ * <p>The various concrete build command classes handle the command options and request setup, then
+ * delegate the handling of the request (the building of targets) to this class.
  *
  * <p>The main entry point is {@link #buildTargets}.
  *
- * <p>Most of analysis is handled in {@link BuildView}, and execution in {@link ExecutionTool}.
+ * <p>Most of analysis is handled in {@link com.google.devtools.build.lib.analysis.BuildView}, and
+ * execution in {@link ExecutionTool}.
  */
 public class BuildTool {
 
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java
index dbb28a6..faa3378 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java
@@ -17,14 +17,14 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.buildeventstream.BuildCompletingEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil;
-import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
 import com.google.devtools.build.lib.util.ExitCode;
 
 /**
  * Event triggered after testing has completed.
  *
- * <p>This event is used by the BEP to construct the {@link BuildEventStreamProtos.BuildFinished}
- * event when the test command is used.
+ * <p>This event is used by the BEP to construct the {@link
+ * com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished} event when
+ * the test command is used.
  */
 public class TestingCompleteEvent extends BuildCompletingEvent {
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java b/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
index ab21e51..b63a24f 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.actions.ActionContext;
 import com.google.devtools.build.lib.actions.ActionInputPrefetcher;
-import com.google.devtools.build.lib.actions.Executor;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.actions.SpawnStrategy;
@@ -28,8 +27,8 @@
 import java.util.Set;
 
 /**
- * Builder class to create an {@link Executor} instance. This class is part of the module API,
- * which allows modules to affect how the executor is initialized.
+ * Builder class to create an {@link com.google.devtools.build.lib.actions.Executor} instance. This
+ * class is part of the module API, which allows modules to affect how the executor is initialized.
  */
 public class ExecutorBuilder {
   private final SpawnActionContextMaps.Builder spawnActionContextMapsBuilder =
diff --git a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
index 990da32..dab66bf 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.actions.EnvironmentalExecException;
 import com.google.devtools.build.lib.actions.RunningActionEvent;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
-import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
 import com.google.devtools.build.lib.analysis.actions.DeterministicWriter;
 import com.google.devtools.build.lib.analysis.actions.FileWriteActionContext;
 import com.google.devtools.build.lib.profiler.AutoProfiler;
@@ -32,7 +31,8 @@
 import java.time.Duration;
 
 /**
- * A strategy for executing an {@link AbstractFileWriteAction}.
+ * A strategy for executing an {@link
+ * com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction}.
  */
 public final class FileWriteStrategy implements FileWriteActionContext {
   public static final Class<FileWriteStrategy> TYPE = FileWriteStrategy.class;
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnExecException.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnExecException.java
index 428ebef..7c77636 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SpawnExecException.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnExecException.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.ActionExecutionException;
 import com.google.devtools.build.lib.actions.ExecException;
-import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.actions.SpawnResult;
 import com.google.devtools.build.lib.actions.SpawnResult.Status;
 import com.google.devtools.build.lib.util.DetailedExitCode;
@@ -28,7 +27,7 @@
 
 /**
  * A specialization of {@link ExecException} that indicates something went wrong when trying to
- * execute a {@link Spawn}.
+ * execute a {@link com.google.devtools.build.lib.actions.Spawn}.
  */
 public class SpawnExecException extends ExecException {
   protected final SpawnResult result;
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistry.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistry.java
index 375b013..3d6d4c6 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistry.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnStrategyRegistry.java
@@ -26,7 +26,6 @@
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.devtools.build.lib.actions.ActionContext;
-import com.google.devtools.build.lib.actions.ActionExecutionMetadata;
 import com.google.devtools.build.lib.actions.DynamicStrategyRegistry;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy;
@@ -243,8 +242,9 @@
 
     /**
      * Adds a filter limiting any spawn whose {@linkplain
-     * ActionExecutionMetadata#getProgressMessage() owner's progress message} matches the regular
-     * expression to only use strategies with the given command-line identifiers, in order.
+     * com.google.devtools.build.lib.actions.ActionExecutionMetadata#getProgressMessage() owner's
+     * progress message} matches the regular expression to only use strategies with the given
+     * command-line identifiers, in order.
      *
      * <p>If multiple filters match the same spawn (including an identical filter) the order of
      * precedence of calls to this method is determined by {@link
@@ -381,8 +381,9 @@
 
     /**
      * Adds a filter limiting any spawn whose {@linkplain
-     * ActionExecutionMetadata#getProgressMessage() owner's progress message} matches the regular
-     * expression to only use strategies with the given command-line identifiers, in order.
+     * com.google.devtools.build.lib.actions.ActionExecutionMetadata#getProgressMessage() owner's
+     * progress message} matches the regular expression to only use strategies with the given
+     * command-line identifiers, in order.
      *
      * <p>If multiple filters match the same spawn (including an identical filter) the order of
      * precedence of calls to this method is determined by {@link
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
index a06c2f0..c1199ed 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
@@ -24,7 +24,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
 import com.google.devtools.build.lib.analysis.PlatformConfiguration;
-import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 import com.google.devtools.build.lib.packages.Attribute.ComputedDefault;
@@ -110,12 +109,14 @@
    *
    * instance matches all its flag values in the configurable attribute owner's configuration.
    *
-   * <p>This rule isn't accessed through the standard {@link RuleContext#getPrerequisites}
-   * interface. This is because Bazel constructs a rule's configured attribute map *before* its
-   * {@link RuleContext} is created (in fact, the map is an input to the context's constructor). And
-   * the config_settings referenced by the rule's configurable attributes are themselves inputs to
-   * that map. So Bazel has special logic to read and properly apply config_setting instances. See
-   * {@link com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction#getConfigConditions} for
+   * <p>This rule isn't accessed through the standard {@link
+   * com.google.devtools.build.lib.analysis.RuleContext#getPrerequisites} interface. This is because
+   * Bazel constructs a rule's configured attribute map *before* its {@link
+   * com.google.devtools.build.lib.analysis.RuleContext} is created (in fact, the map is an input to
+   * the context's constructor). And the config_settings referenced by the rule's configurable
+   * attributes are themselves inputs to that map. So Bazel has special logic to read and properly
+   * apply config_setting instances. See {@link
+   * com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction#getConfigConditions} for
    * details.
    */
   public static final class ConfigSettingRule implements RuleDefinition {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/BuildInfoPropertiesTranslator.java b/src/main/java/com/google/devtools/build/lib/rules/java/BuildInfoPropertiesTranslator.java
index a476aae..a350662 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/BuildInfoPropertiesTranslator.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/BuildInfoPropertiesTranslator.java
@@ -13,7 +13,6 @@
 // limitations under the License.
 package com.google.devtools.build.lib.rules.java;
 
-import com.google.devtools.build.lib.actions.ActionExecutionMetadata;
 import java.util.Map;
 import java.util.Properties;
 
@@ -28,7 +27,8 @@
 
   /**
    * Returns a unique key for this translator to be used by the {@link
-   * ActionExecutionMetadata#getKey(com.google.devtools.build.lib.actions.ActionKeyContext)} method.
+   * com.google.devtools.build.lib.actions.ActionExecutionMetadata#getKey(com.google.devtools.build.lib.actions.ActionKeyContext)}
+   * method.
    */
   public String computeKey();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java
index 8bf922e..a45b18b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java
@@ -16,7 +16,6 @@
 
 import com.google.common.base.Verify;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -28,10 +27,10 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 
 /**
- * A {@link TransitiveInfoProvider} for {@link Artifact}s created and used to generate the proto
- * extension registry. This provider is used to ensure that if multiple registries are generated
- * from a target, that the top most target produces a registry that is a superset of any child
- * registries.
+ * A {@link com.google.devtools.build.lib.analysis.TransitiveInfoProvider} for {@link Artifact}s
+ * created and used to generate the proto extension registry. This provider is used to ensure that
+ * if multiple registries are generated from a target, that the top most target produces a registry
+ * that is a superset of any child registries.
  */
 @Immutable
 public final class GeneratedExtensionRegistryProvider extends NativeInfo
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java b/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
index d0a73ee..9dff3d9 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
@@ -18,36 +18,38 @@
 import com.google.devtools.common.options.Converter;
 import com.google.devtools.common.options.ExpansionFunction;
 import com.google.devtools.common.options.IsolatedOptionsData;
-import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionDefinition;
 import com.google.devtools.common.options.OptionMetadataTag;
-import com.google.devtools.common.options.OptionsBase;
-import com.google.devtools.common.options.OptionsParser;
 import java.util.ArrayList;
 import java.util.Map;
 
 /**
  * Expansion function for {@code --all_incompatible_changes}. Expands to all options of form {@code
- * --incompatible_*} that are declared in the {@link OptionsBase} subclasses that are passed to the
- * parser.
+ * --incompatible_*} that are declared in the {@link com.google.devtools.common.options.OptionsBase}
+ * subclasses that are passed to the parser.
  *
  * <p>The incompatible changes system provides users with a uniform way of opting into backwards-
  * incompatible changes, in order to test whether their builds will be broken by an upcoming
  * release. When adding a new breaking change to Bazel, prefer to use this mechanism for guarding
  * the behavior.
  *
- * <p>An {@link Option}-annotated field that is considered an incompatible change must satisfy the
- * following requirements.
+ * <p>An {@link com.google.devtools.common.options.Option}-annotated field that is considered an
+ * incompatible change must satisfy the following requirements.
  *
  * <ul>
- *   <li>the {@link Option#name} must be prefixed with "incompatible_"
- *   <li>the {@link Option#metadataTags()} must include {@link
+ *   <li>the {@link com.google.devtools.common.options.Option#name} must be prefixed with
+ *       "incompatible_"
+ *   <li>the {@link com.google.devtools.common.options.Option#metadataTags()} must include {@link
  *       OptionMetadataTag#INCOMPATIBLE_CHANGE} and {@link
  *       OptionMetadataTag#TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES}
- *   <li>the {@link Option#help} field must be set, and must refer the user to information about
- *       what the change does and how to migrate their code
- *   <li>the following fields may not be used: {@link Option#abbrev}, {@link Option#valueHelp},
- *       {@link Option#converter}, {@link Option#allowMultiple}, and {@link Option#oldName}
+ *   <li>the {@link com.google.devtools.common.options.Option#help} field must be set, and must
+ *       refer the user to information about what the change does and how to migrate their code
+ *   <li>the following fields may not be used: {@link
+ *       com.google.devtools.common.options.Option#abbrev}, {@link
+ *       com.google.devtools.common.options.Option#valueHelp}, {@link
+ *       com.google.devtools.common.options.Option#converter}, {@link
+ *       com.google.devtools.common.options.Option#allowMultiple}, and {@link
+ *       com.google.devtools.common.options.Option#oldName}
  * </ul>
  *
  * Example:
@@ -67,10 +69,11 @@
  * All options that have either the "incompatible_" prefix or the tag {@link
  * OptionMetadataTag#TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES} will be validated using the above
  * criteria. Any failure will cause {@link IllegalArgumentException} to be thrown, which will cause
- * the construction of the {@link OptionsParser} to fail with the <i>unchecked</i> exception {@link
- * OptionsParser.ConstructionException}. Therefore, when adding a new incompatible change, be aware
- * that an error in the specification of the {@code @Option} will exercise failure code paths in the
- * early part of the Bazel server execution.
+ * the construction of the {@link com.google.devtools.common.options.OptionsParser} to fail with the
+ * <i>unchecked</i> exception {@link
+ * com.google.devtools.common.options.OptionsParser.ConstructionException}. Therefore, when adding a
+ * new incompatible change, be aware that an error in the specification of the {@code @Option} will
+ * exercise failure code paths in the early part of the Bazel server execution.
  *
  * <p>After the breaking change has been enabled by default, it is recommended (required?) that the
  * flag stick around for a few releases, to provide users the flexibility to opt out. Even after
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BazelFileSystemModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BazelFileSystemModule.java
index ef23dc7..1ed618f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BazelFileSystemModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BazelFileSystemModule.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.vfs.DigestHashFunction.DefaultAlreadySetException;
 import com.google.devtools.build.lib.vfs.DigestHashFunction.DefaultHashFunctionNotSetException;
 import com.google.devtools.build.lib.vfs.DigestHashFunction.DigestFunctionConverter;
-import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.JavaIoFileSystem;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.windows.WindowsFileSystem;
@@ -30,10 +29,12 @@
 import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
- * Module to provide a {@link FileSystem} instance that uses {@code SHA256} as the default hash
- * function, or else what's specified by {@code -Dbazel.DigestFunction}.
+ * Module to provide a {@link com.google.devtools.build.lib.vfs.FileSystem} instance that uses
+ * {@code SHA256} as the default hash function, or else what's specified by {@code
+ * -Dbazel.DigestFunction}.
  *
- * <p>For legacy reasons we can't make the {@link FileSystem} class use {@code SHA256} by default.
+ * <p>For legacy reasons we can't make the {@link com.google.devtools.build.lib.vfs.FileSystem}
+ * class use {@code SHA256} by default.
  */
 public class BazelFileSystemModule extends BlazeModule {
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
index 4938c3e..b2536f5 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
@@ -16,9 +16,7 @@
 import com.google.auto.value.AutoValue;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.eventbus.SubscriberExceptionContext;
 import com.google.common.eventbus.SubscriberExceptionHandler;
-import com.google.devtools.build.lib.actions.ActionContext;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.BlazeVersionInfo;
@@ -35,7 +33,6 @@
 import com.google.devtools.build.lib.exec.ModuleActionContextRegistry;
 import com.google.devtools.build.lib.exec.SpawnStrategyRegistry;
 import com.google.devtools.build.lib.packages.Package;
-import com.google.devtools.build.lib.packages.PackageFactory;
 import com.google.devtools.build.lib.packages.PackageValidator;
 import com.google.devtools.build.lib.skyframe.AspectValue;
 import com.google.devtools.build.lib.skyframe.PrecomputedValue;
@@ -133,10 +130,11 @@
   /**
    * Returns handler for {@link com.google.common.eventbus.EventBus} subscriber and async thread
    * exceptions. For async thread exceptions, {@link
-   * SubscriberExceptionHandler#handleException(Throwable, SubscriberExceptionContext)} will be
-   * called with null {@link SubscriberExceptionContext}. If all modules return null, a handler that
-   * crashes on all async exceptions and files bug reports for all EventBus subscriber exceptions
-   * will be used.
+   * SubscriberExceptionHandler#handleException(Throwable,
+   * com.google.common.eventbus.SubscriberExceptionContext)} will be called with null {@link
+   * com.google.common.eventbus.SubscriberExceptionContext}. If all modules return null, a handler
+   * that crashes on all async exceptions and files bug reports for all EventBus subscriber
+   * exceptions will be used.
    */
   public SubscriberExceptionHandler getEventBusAndAsyncExceptionHandler() {
     return null;
@@ -310,8 +308,9 @@
 
   /**
    * Registers any action contexts this module provides with the execution phase. They will be
-   * available for {@linkplain ActionContext.ActionContextRegistry#getContext querying} to actions
-   * and other action contexts.
+   * available for {@linkplain
+   * com.google.devtools.build.lib.actions.ActionContext.ActionContextRegistry#getContext querying}
+   * to actions and other action contexts.
    *
    * <p>This method is invoked before actions are executed but after {@link #executorInit}.
    *
@@ -398,8 +397,8 @@
   }
 
   /**
-   * Returns a helper that the {@link PackageFactory} will use during package loading, or null if
-   * the module does not provide any helper.
+   * Returns a helper that the {@link com.google.devtools.build.lib.packages.PackageFactory} will
+   * use during package loading, or null if the module does not provide any helper.
    *
    * <p>Called once during server startup some time after {@link #serverInit}.
    *
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index 06d1d32..856d47e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -51,7 +51,6 @@
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.packages.PackageFactory;
 import com.google.devtools.build.lib.packages.PackageValidator;
-import com.google.devtools.build.lib.packages.RuleClassProvider;
 import com.google.devtools.build.lib.profiler.AutoProfiler;
 import com.google.devtools.build.lib.profiler.MemoryProfiler;
 import com.google.devtools.build.lib.profiler.ProfilePhase;
@@ -60,7 +59,6 @@
 import com.google.devtools.build.lib.profiler.ProfilerTask;
 import com.google.devtools.build.lib.profiler.SilentCloseable;
 import com.google.devtools.build.lib.query2.QueryEnvironmentFactory;
-import com.google.devtools.build.lib.query2.common.AbstractBlazeQueryEnvironment;
 import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
 import com.google.devtools.build.lib.query2.query.output.OutputFormatter;
 import com.google.devtools.build.lib.query2.query.output.OutputFormatters;
@@ -447,8 +445,9 @@
   }
 
   /**
-   * Returns the {@link QueryEnvironmentFactory} that should be used to create a
-   * {@link AbstractBlazeQueryEnvironment}, whenever one is needed.
+   * Returns the {@link QueryEnvironmentFactory} that should be used to create a {@link
+   * com.google.devtools.build.lib.query2.common.AbstractBlazeQueryEnvironment}, whenever one is
+   * needed.
    */
   public QueryEnvironmentFactory getQueryEnvironmentFactory() {
     return queryEnvironmentFactory;
@@ -1458,8 +1457,8 @@
 
   /**
    * A builder for {@link BlazeRuntime} objects. The only required fields are the {@link
-   * BlazeDirectories}, and the {@link RuleClassProvider} (except for testing). All other fields
-   * have safe default values.
+   * BlazeDirectories}, and the {@link com.google.devtools.build.lib.packages.RuleClassProvider}
+   * (except for testing). All other fields have safe default values.
    *
    * <p>The default behavior of the BlazeRuntime's EventBus is to exit the JVM when a subscriber
    * throws an exception. Please plan appropriately.
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/Command.java b/src/main/java/com/google/devtools/build/lib/runtime/Command.java
index 0e180e4..b1d5053 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/Command.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/Command.java
@@ -13,7 +13,6 @@
 // limitations under the License.
 package com.google.devtools.build.lib.runtime;
 
-import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionsBase;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -33,8 +32,9 @@
   String name();
 
   /**
-   * Options processed by the command, indicated by options interfaces.
-   * These interfaces must contain methods annotated with {@link Option}.
+   * Options processed by the command, indicated by options interfaces. These interfaces must
+   * contain methods annotated with {@link com/google/devtools/build/lib/runtime/Command.java used
+   * only in javadoc: com.google.devtools.common.options.Option}.
    */
   Class<? extends OptionsBase>[] options() default {};
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
index d4dcb66..12f3358 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.actions.cache.ActionCache;
 import com.google.devtools.build.lib.analysis.AnalysisOptions;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.CoreOptions;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.events.Reporter;
@@ -594,7 +593,8 @@
 
   /**
    * Initializes the package cache using the given options, and syncs the package cache. Also
-   * injects the skylark semantics using the options for the {@link BuildConfiguration}.
+   * injects the skylark semantics using the options for the {@link
+   * com.google.devtools.build.lib.analysis.config.BuildConfiguration}.
    */
   public void setupPackageCache(OptionsProvider options)
       throws InterruptedException, AbruptExitException {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java b/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java
index 931142e..ad03ceb 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.CompletionContext;
 import com.google.devtools.build.lib.actions.CompletionContext.ArtifactReceiver;
-import com.google.devtools.build.lib.actions.EventReportingArtifacts;
 import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent;
 import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
@@ -41,7 +40,7 @@
 /**
  * A {@link BuildEvent} introducing a set of artifacts to be referred to later by its name. Those
  * events are generated by the {@link BuildEventStreamer} upon seeing an {@link
- * EventReportingArtifacts}, if necessary.
+ * com.google.devtools.build.lib.actions.EventReportingArtifacts}, if necessary.
  */
 class NamedArtifactGroup implements BuildEvent {
   private final String name;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java b/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java
index 064bdc6..a992579 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ServerBuilder.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.bazel.repository.downloader.Downloader;
 import com.google.devtools.build.lib.packages.PackageFactory;
 import com.google.devtools.build.lib.query2.QueryEnvironmentFactory;
-import com.google.devtools.build.lib.query2.common.AbstractBlazeQueryEnvironment;
 import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
 import com.google.devtools.build.lib.query2.query.output.OutputFormatter;
 import com.google.devtools.build.lib.runtime.commands.InfoItem;
@@ -107,8 +106,10 @@
   }
 
   /**
-   * Sets a factory for creating {@link AbstractBlazeQueryEnvironment} instances. Note that only one
-   * factory per server is allowed. If none is set, the server uses the default implementation.
+   * Sets a factory for creating {@link
+   * com.google.devtools.build.lib.query2.common.AbstractBlazeQueryEnvironment} instances. Note that
+   * only one factory per server is allowed. If none is set, the server uses the default
+   * implementation.
    */
   public ServerBuilder setQueryEnvironmentFactory(QueryEnvironmentFactory queryEnvironmentFactory) {
     Preconditions.checkState(
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
index 39701de..56a580f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProjectFileSupport.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.events.ExtendedEventHandler;
 import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
-import com.google.devtools.build.lib.runtime.BlazeCommand;
 import com.google.devtools.build.lib.runtime.CommonCommandOptions;
 import com.google.devtools.build.lib.runtime.ProjectFile;
 import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
@@ -31,7 +30,8 @@
 import java.util.List;
 
 /**
- * Provides support for implementations for {@link BlazeCommand} to work with {@link ProjectFile}.
+ * Provides support for implementations for {@link
+ * com.google.devtools.build.lib.runtime.BlazeCommand} to work with {@link ProjectFile}.
  */
 public final class ProjectFileSupport {
   static final String PROJECT_FILE_PREFIX = "+";
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
index 3cd6157..1000d58 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
@@ -26,7 +26,6 @@
 import com.google.devtools.build.lib.actions.ArtifactOwner;
 import com.google.devtools.build.lib.actions.FileArtifactValue;
 import com.google.devtools.build.lib.actions.FileStateType;
-import com.google.devtools.build.lib.actions.FileValue;
 import com.google.devtools.build.lib.actions.FilesetOutputSymlink;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -136,7 +135,8 @@
 
   /**
    * @return The data for each non-middleman output of this action, in the form of the {@link
-   *     FileValue} that would be created for the file if it were to be read from disk.
+   *     com.google.devtools.build.lib.actions.FileValue} that would be created for the file if it
+   *     were to be read from disk.
    */
   @Nullable
   public FileArtifactValue getArtifactValue(Artifact artifact) {
@@ -158,9 +158,10 @@
   }
 
   /**
-   * @return The map from {@link Artifact}s to the corresponding {@link FileValue}s that would be
-   *     returned by {@link #getArtifactValue}. Primarily needed by {@link FilesystemValueChecker},
-   *     also called by {@link ArtifactFunction} when aggregating a {@link TreeArtifactValue}.
+   * @return The map from {@link Artifact}s to the corresponding {@link
+   *     com.google.devtools.build.lib.actions.FileValue}s that would be returned by {@link
+   *     #getArtifactValue}. Primarily needed by {@link FilesystemValueChecker}, also called by
+   *     {@link ArtifactFunction} when aggregating a {@link TreeArtifactValue}.
    */
   Map<Artifact, FileArtifactValue> getAllFileValues() {
     return artifactData;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java
index 6be671b..f95cac8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java
@@ -21,7 +21,6 @@
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.RootedPath;
@@ -35,8 +34,9 @@
  * The value computed by {@link CollectPackagesUnderDirectoryFunction}. Contains a mapping for all
  * its non-excluded directories to whether there are packages or error messages beneath them.
  *
- * <p>This value is used by {@link RecursivePackageProvider#streamPackagesUnderDirectory} to help it
- * traverse the graph and find the set of packages under a directory, recursively by {@link
+ * <p>This value is used by {@link
+ * com.google.devtools.build.lib.pkgcache.RecursivePackageProvider#streamPackagesUnderDirectory} to
+ * help it traverse the graph and find the set of packages under a directory, recursively by {@link
  * CollectPackagesUnderDirectoryFunction} which computes a value for a directory by aggregating
  * results calculated from its subdirectories, and by {@link
  * PrepareDepsOfTargetsUnderDirectoryFunction} which uses this value to find transitive targets to
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CollectTestSuitesInPackageValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CollectTestSuitesInPackageValue.java
index 7b6cc2c..d0989a8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CollectTestSuitesInPackageValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CollectTestSuitesInPackageValue.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.AbstractSkyKey;
 import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 
 /** Dummy {@link SkyValue} for {@link CollectTestSuitesInPackageFunction}. */
@@ -38,7 +37,10 @@
     return Key.create(packageId);
   }
 
-  /** {@link SkyKey} argument. */
+  /**
+   * {@link com/google/devtools/build/lib/skyframe/CollectTestSuitesInPackageValue.java used only in
+   * javadoc: com.google.devtools.build.skyframe.SkyKey} argument.
+   */
   @AutoCodec
   public static class Key extends AbstractSkyKey<PackageIdentifier> {
     private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java
index 764aa97..a553da1 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.packages.NoSuchTargetException;
-import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -37,7 +36,7 @@
  *
  * <p>These objects are intended to be short-lived, never stored in Skyframe, since they pair three
  * heavyweight objects, a {@link ConfiguredTarget}, a {@link Target} (which holds a {@link
- * Package}), and a {@link BuildConfiguration}.
+ * com.google.devtools.build.lib.packages.Package}), and a {@link BuildConfiguration}.
  */
 public class ConfiguredTargetAndData {
   private final ConfiguredTarget configuredTarget;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java
index 3512403..67e260b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java
@@ -18,9 +18,11 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.skyframe.SkyKey;
-import com.google.devtools.build.skyframe.SkyValue;
 
-/** A {@link SkyValue} for a {@link ConfiguredTarget}. */
+/**
+ * A {@link com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java used only in javadoc:
+ * com.google.devtools.build.skyframe.SkyValue} for a {@link ConfiguredTarget}.
+ */
 public interface ConfiguredTargetValue extends ConfiguredObjectValue {
   static SkyKey key(Label label, BuildConfiguration configuration) {
     return ConfiguredTargetKey.of(label, configuration);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java
index f03f9a7..cfd3dfd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.vfs.Root;
 import com.google.devtools.build.skyframe.AbstractSkyKey;
 import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 import javax.annotation.Nonnull;
 
@@ -105,7 +104,10 @@
     return message;
   }
 
-  /** {@link SkyKey} for {@code ContainingPackageLookupValue}. */
+  /**
+   * {@link com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java used only in
+   * javadoc: com.google.devtools.build.skyframe.SkyKey} for {@code ContainingPackageLookupValue}.
+   */
   @AutoCodec
   public static class Key extends AbstractSkyKey<PackageIdentifier> {
     private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
index c3abfdb..5b474ed 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
@@ -30,7 +30,6 @@
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
-import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
 import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.Root;
@@ -43,9 +42,9 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
- * A {@link RecursivePackageProvider} backed by an {@link Environment}. Its methods may throw {@link
- * MissingDepException} if the package values this depends on haven't been calculated and added to
- * its environment.
+ * A {@link com.google.devtools.build.lib.pkgcache.RecursivePackageProvider} backed by an {@link
+ * Environment}. Its methods may throw {@link MissingDepException} if the package values this
+ * depends on haven't been calculated and added to its environment.
  *
  * <p>This implementation never emits events through the {@link ExtendedEventHandler}s passed to its
  * methods. Instead, it emits events through its environment's {@link Environment#getListener()}.
@@ -62,8 +61,9 @@
 
   /**
    * Whether any of the calls to {@link #getPackage}, {@link #getTarget}, {@link #bulkGetPackages},
-   * or {@link RecursivePackageProvider#streamPackagesUnderDirectory} encountered a package in
-   * error.
+   * or {@link
+   * com.google.devtools.build.lib.pkgcache.RecursivePackageProvider#streamPackagesUnderDirectory}
+   * encountered a package in error.
    *
    * <p>The client of {@link EnvironmentBackedRecursivePackageProvider} may want to check this. See
    * comments in {@link #getPackage} for details.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
index df04a16..511b72e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
@@ -14,8 +14,6 @@
 package com.google.devtools.build.lib.skyframe;
 
 import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.actions.FileStateValue;
-import com.google.devtools.build.lib.actions.FileValue;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.cmdline.LabelConstants;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -144,11 +142,14 @@
      * Bazel to assume these paths are immutable.
      *
      * <p>Note that {@link ExternalFilesHelper#maybeHandleExternalFile} is only used for {@link
-     * FileStateValue} and {@link DirectoryListingStateValue}, and also note that output files do
-     * not normally have corresponding {@link FileValue} instances (and thus also {@link
-     * FileStateValue} instances) in the Skyframe graph ({@link ArtifactFunction} only uses {@link
-     * FileValue}s for source files). But {@link FileStateValue}s for output files can still make
-     * their way into the Skyframe graph if e.g. a source file is a symlink to an output file.
+     * com.google.devtools.build.lib.actions.FileStateValue} and {@link DirectoryListingStateValue},
+     * and also note that output files do not normally have corresponding {@link
+     * com.google.devtools.build.lib.actions.FileValue} instances (and thus also {@link
+     * com.google.devtools.build.lib.actions.FileStateValue} instances) in the Skyframe graph
+     * ({@link ArtifactFunction} only uses {@link com.google.devtools.build.lib.actions.FileValue}s
+     * for source files). But {@link com.google.devtools.build.lib.actions.FileStateValue}s for
+     * output files can still make their way into the Skyframe graph if e.g. a source file is a
+     * symlink to an output file.
      */
     // TODO(nharmata): Consider an alternative design where we have an OutputFileDiffAwareness. This
     // could work but would first require that we clean up all RootedPath usage.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunction.java
index 590fce8..29fef4a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunction.java
@@ -19,15 +19,15 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.RootedPath;
 import com.google.devtools.build.skyframe.AbstractSkyKey;
-import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
 
 /**
- * A {@link SkyFunction} that has the side effect of reporting a file symlink cycle. This is
- * achieved by forcing the same key for two logically equivalent cycles
- * (e.g. ['a' -> 'b' -> 'c' -> 'a'] and ['b' -> 'c' -> 'a' -> 'b']), and letting Skyframe do its
- * magic.
+ * A {@link com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunction.java used only
+ * in javadoc: com.google.devtools.build.skyframe.SkyFunction} that has the side effect of reporting
+ * a file symlink cycle. This is achieved by forcing the same key for two logically equivalent
+ * cycles (e.g. ['a' -> 'b' -> 'c' -> 'a'] and ['b' -> 'c' -> 'a' -> 'b']), and letting Skyframe do
+ * its magic.
  */
 public class FileSymlinkCycleUniquenessFunction
     extends AbstractChainUniquenessFunction<RootedPath> {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java
index c729465..56f6801 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java
@@ -19,15 +19,16 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.vfs.RootedPath;
 import com.google.devtools.build.skyframe.AbstractSkyKey;
-import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
 
 /**
- * A {@link SkyFunction} that has the side effect of reporting a file symlink expansion error
- * exactly once. This is achieved by forcing the same value key for two logically equivalent
- * expansion errors (e.g. ['a' -> 'b' -> 'c' -> 'a/nope'] and ['b' -> 'c' -> 'a' -> 'a/nope']),
- * and letting Skyframe do its magic.
+ * A {@link
+ * com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java used
+ * only in javadoc: com.google.devtools.build.skyframe.SkyFunction} that has the side effect of
+ * reporting a file symlink expansion error exactly once. This is achieved by forcing the same value
+ * key for two logically equivalent expansion errors (e.g. ['a' -> 'b' -> 'c' -> 'a/nope'] and ['b'
+ * -> 'c' -> 'a' -> 'a/nope']), and letting Skyframe do its magic.
  */
 public class FileSymlinkInfiniteExpansionUniquenessFunction
     extends AbstractChainUniquenessFunction<RootedPath> {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
index 5867051..133c7a6 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
@@ -35,7 +35,6 @@
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.pkgcache.AbstractRecursivePackageProvider;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
-import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
 import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.Root;
@@ -49,9 +48,9 @@
 import java.util.logging.Logger;
 
 /**
- * A {@link RecursivePackageProvider} backed by a {@link WalkableGraph}, used by {@code
- * SkyQueryEnvironment} to look up the packages and targets matching the universe that's been
- * preloaded in {@code graph}.
+ * A {@link com.google.devtools.build.lib.pkgcache.RecursivePackageProvider} backed by a {@link
+ * WalkableGraph}, used by {@code SkyQueryEnvironment} to look up the packages and targets matching
+ * the universe that's been preloaded in {@code graph}.
  */
 @ThreadSafe
 public final class GraphBackedRecursivePackageProvider extends AbstractRecursivePackageProvider {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageIdentifierBatchingCallback.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageIdentifierBatchingCallback.java
index b731907..2bdb14f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageIdentifierBatchingCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageIdentifierBatchingCallback.java
@@ -18,13 +18,13 @@
 import com.google.devtools.build.lib.concurrent.ParallelVisitor.UnusedException;
 import com.google.devtools.build.lib.concurrent.ThreadSafeBatchCallback;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
 import javax.annotation.concurrent.GuardedBy;
 
 /**
- * A callback for {@link RecursivePackageProvider#streamPackagesUnderDirectory} that buffers the
- * PackageIdentifiers it receives into fixed-size batches that it delivers to a supplied {@code
- * ThreadSafeBatchCallback<PackageIdentifier, RuntimeException>}.
+ * A callback for {@link
+ * com.google.devtools.build.lib.pkgcache.RecursivePackageProvider#streamPackagesUnderDirectory}
+ * that buffers the PackageIdentifiers it receives into fixed-size batches that it delivers to a
+ * supplied {@code ThreadSafeBatchCallback<PackageIdentifier, RuntimeException>}.
  *
  * <p>The final batch delivered to the delegate callback may be smaller than the fixed size; the
  * callback must be {@link #close() closed} to deliver this final batch.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
index b10acdb..3ea95e3 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.AbstractSkyKey;
@@ -41,10 +40,11 @@
   }
 
   /**
-   * Returns the package. This package may contain errors, in which case the caller should throw
-   * a {@link BuildFileContainsErrorsException} if an error-free package is needed. See also
-   * {@link PackageErrorFunction} for the case where encountering a package with errors should shut
-   * down the build but the caller can handle packages with errors.
+   * Returns the package. This package may contain errors, in which case the caller should throw a
+   * {@link com.google.devtools.build.lib.packages.BuildFileContainsErrorsException} if an
+   * error-free package is needed. See also {@link PackageErrorFunction} for the case where
+   * encountering a package with errors should shut down the build but the caller can handle
+   * packages with errors.
    */
   public Package getPackage() {
     return pkg;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
index 87d70d3..d574869 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
@@ -34,7 +34,6 @@
 import com.google.devtools.build.skyframe.Injectable;
 import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 import java.util.Map;
 import java.util.UUID;
@@ -210,7 +209,10 @@
     }
   }
 
-  /** {@link SkyKey} for {@code PrecomputedValue}. */
+  /**
+   * {@link com/google/devtools/build/lib/skyframe/PrecomputedValue.java used only in javadoc:
+   * com.google.devtools.build.skyframe.SkyKey} for {@code PrecomputedValue}.
+   */
   @AutoCodec
   public static class Key extends AbstractSkyKey<String> {
     private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
index 9476606..5b74ed4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.packages.NoSuchPackageException;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.RootedPath;
 import com.google.devtools.build.skyframe.SkyFunction;
@@ -42,7 +41,10 @@
     this.directories = directories;
   }
 
-  /** N.B.: May silently throw {@link NoSuchPackageException} in nokeep_going mode! */
+  /**
+   * N.B.: May silently throw {@link com.google.devtools.build.lib.packages.NoSuchPackageException}
+   * in nokeep_going mode!
+   */
   @Override
   public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
     return new MyTraversalFunction().visitDirectory((RecursivePkgKey) skyKey.argument(), env);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
index 0561a79..49ef694 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.AbstractSkyKey;
 import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 import java.util.Objects;
 
@@ -92,7 +91,10 @@
     return repositoryMapping.toString();
   }
 
-  /** {@link SkyKey} for {@link RepositoryMappingValue}. */
+  /**
+   * {@link com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java used only in javadoc:
+   * com.google.devtools.build.skyframe.SkyKey} for {@link RepositoryMappingValue}.
+   */
   @AutoCodec.VisibleForSerialization
   @AutoCodec
   static class Key extends AbstractSkyKey<RepositoryName> {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java
index ba138fa..0f53041 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java
@@ -18,12 +18,15 @@
 import com.google.devtools.build.skyframe.NodeEntry;
 import com.google.devtools.build.skyframe.QueryableGraph;
 import com.google.devtools.build.skyframe.SkyKey;
-import com.google.devtools.build.skyframe.WalkableGraph;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.Nullable;
 
-/** {@link WalkableGraph} backed by a {@link SkyframeExecutor}. */
+/**
+ * {@link com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java used
+ * only in javadoc: com.google.devtools.build.skyframe.WalkableGraph} backed by a {@link
+ * SkyframeExecutor}.
+ */
 public class SkyframeExecutorWrappingWalkableGraph extends DelegatingWalkableGraph {
 
   private SkyframeExecutorWrappingWalkableGraph(MemoizingEvaluator evaluator) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java
index e60cf44..8f5df6f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 import java.util.Collection;
 import java.util.Set;
@@ -52,7 +51,10 @@
                 targetsToTest.contains(ct)));
   }
 
-  /** {@link SkyKey} for {@link TargetCompletionValue}. */
+  /**
+   * {@link com/google/devtools/build/lib/skyframe/TargetCompletionValue.java used only in javadoc:
+   * com.google.devtools.build.skyframe.SkyKey} for {@link TargetCompletionValue}.
+   */
   @AutoCodec
   @AutoValue
   public abstract static class TargetCompletionKey
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
index 9064c02..74b8032 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
@@ -15,7 +15,6 @@
 
 import com.google.common.base.Preconditions;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.packages.AdvertisedProviderSet;
 import com.google.devtools.build.lib.packages.NoSuchPackageException;
@@ -34,10 +33,10 @@
 
 /**
  * This class is like {@link TransitiveTargetFunction}, but the values it returns do not contain
- * {@link NestedSet}s. It performs the side-effects of {@link TransitiveTargetFunction} (i.e.,
- * ensuring that transitive targets and their packages have been loaded). It evaluates to a {@link
- * TransitiveTraversalValue} that contains the first error message it encountered, and a set of
- * names of providers if the target is a rule.
+ * {@link com.google.devtools.build.lib.collect.nestedset.NestedSet}s. It performs the side-effects
+ * of {@link TransitiveTargetFunction} (i.e., ensuring that transitive targets and their packages
+ * have been loaded). It evaluates to a {@link TransitiveTraversalValue} that contains the first
+ * error message it encountered, and a set of names of providers if the target is a rule.
  */
 public class TransitiveTraversalFunction
     extends TransitiveBaseTraversalFunction<
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunction.java
index 17f7c9a..cb48178 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunction.java
@@ -15,7 +15,6 @@
 
 import com.google.devtools.build.lib.cmdline.LabelConstants;
 import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
-import com.google.devtools.build.lib.packages.NoSuchPackageException;
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyFunctionException;
@@ -27,7 +26,7 @@
  * {@link SkyFunction} for {@link WorkspaceNameValue}s.
  *
  * <p>All errors (e.g. parsing errors or a symlink cycle encountered when consuming the WORKSPACE
- * file) result in a {@link NoSuchPackageException}.
+ * file) result in a {@link com.google.devtools.build.lib.packages.NoSuchPackageException}.
  */
 public class WorkspaceNameFunction implements SkyFunction {
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
index bb379d7..1037f0d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
@@ -19,7 +19,6 @@
 import com.google.devtools.build.lib.analysis.WorkspaceStatusAction;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
 
 /**
  * Value that stores the workspace status artifacts and their generating action. There should be
@@ -51,7 +50,10 @@
     return volatileArtifact;
   }
 
-  /** {@link SkyKey} for {@link WorkspaceStatusValue}. */
+  /**
+   * {@link com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java used only in javadoc:
+   * com.google.devtools.build.skyframe.SkyKey} for {@link WorkspaceStatusValue}.
+   */
   public static class BuildInfoKey extends ActionLookupKey {
     private BuildInfoKey() {}
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableBiMapCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableBiMapCodec.java
index 26feda2..832c0be 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableBiMapCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/ImmutableBiMapCodec.java
@@ -15,7 +15,6 @@
 package com.google.devtools.build.lib.skyframe.serialization;
 
 import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableMap;
 import com.google.protobuf.CodedInputStream;
 import com.google.protobuf.CodedOutputStream;
 import java.io.IOException;
@@ -24,9 +23,12 @@
  * Encodes an {@link ImmutableBiMap}. The iteration order of the deserialized map is the same as the
  * original map's.
  *
- * <p>We handle {@link ImmutableBiMap} by treating it as an {@link ImmutableMap} and calling the
- * proper conversion method ({@link ImmutableBiMap#copyOf}) when deserializing. This is valid
- * because every {@link ImmutableBiMap} is also an {@link ImmutableMap}.
+ * <p>We handle {@link ImmutableBiMap} by treating it as an {@link
+ * com/google/devtools/build/lib/skyframe/serialization/ImmutableBiMapCodec.java used only in
+ * javadoc: com.google.common.collect.ImmutableMap} and calling the proper conversion method ({@link
+ * ImmutableBiMap#copyOf}) when deserializing. This is valid because every {@link ImmutableBiMap} is
+ * also an {@link com/google/devtools/build/lib/skyframe/serialization/ImmutableBiMapCodec.java used
+ * only in javadoc: com.google.common.collect.ImmutableMap}.
  *
  * <p>Any {@link SerializationException} or {@link IOException} that arises while serializing or
  * deserializing a map entry's value (not its key) will be wrapped in a new {@link
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationResult.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationResult.java
index 90a1598..55460e5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationResult.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationResult.java
@@ -16,7 +16,6 @@
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.protobuf.ByteString;
 import javax.annotation.Nullable;
 
 /**
@@ -27,7 +26,7 @@
  * #getFutureToBlockWritesOn} completes successfully.
  *
  * @param <T> Some serialized representation of an object, for instance a {@code byte[]} or a {@link
- *     ByteString}.
+ *     com.google.protobuf.ByteString}.
  */
 public abstract class SerializationResult<T> {
   private final T object;