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;
