diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/Fragment.java b/src/main/java/com/google/devtools/build/lib/analysis/config/Fragment.java
index 0704e83..91e938c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/Fragment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/Fragment.java
@@ -22,8 +22,7 @@
  * An interface for language-specific configurations.
  *
  * <p>All implementations must be immutable and communicate this as clearly as possible (e.g.
- * 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
+ * declare {@link 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/runtime/Command.java b/src/main/java/com/google/devtools/build/lib/runtime/Command.java
index b1d5053..e907d92 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
@@ -33,8 +33,7 @@
 
   /**
    * 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}.
+   * contain methods annotated with {@link com.google.devtools.common.options.Option}.
    */
   Class<? extends OptionsBase>[] options() default {};
 
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 d0989a8..d9eb347 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
@@ -38,8 +38,8 @@
   }
 
   /**
-   * {@link com/google/devtools/build/lib/skyframe/CollectTestSuitesInPackageValue.java used only in
-   * javadoc: com.google.devtools.build.skyframe.SkyKey} argument.
+   * A {@link com.google.devtools.build.skyframe.SkyKey} for {@link
+   * CollectTestSuitesInPackageValue}.
    */
   @AutoCodec
   public static class Key extends AbstractSkyKey<PackageIdentifier> {
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 c0f8f77..47458fb 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
@@ -17,10 +17,7 @@
 import com.google.devtools.build.lib.analysis.ConfiguredObjectValue;
 import com.google.devtools.build.lib.analysis.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}.
- */
+/** A {@link com.google.devtools.build.skyframe.SkyValue} for a {@link ConfiguredTarget}. */
 public interface ConfiguredTargetValue extends ConfiguredObjectValue {
 
   /** Returns the configured target for this value. */
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 cfd3dfd..06b2dcc 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
@@ -104,10 +104,7 @@
     return message;
   }
 
-  /**
-   * {@link com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java used only in
-   * javadoc: com.google.devtools.build.skyframe.SkyKey} for {@code ContainingPackageLookupValue}.
-   */
+  /** {@link 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/FileSymlinkCycleUniquenessFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunction.java
index 29fef4a..d9b3705 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
@@ -23,11 +23,10 @@
 import com.google.devtools.build.skyframe.SkyKey;
 
 /**
- * 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.
+ * A {@link 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. {@code ['a' -> 'b' -> 'c' -> 'a']} and {@code ['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/PrecomputedValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
index 9120900..4be3129 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
@@ -192,10 +192,7 @@
     }
   }
 
-  /**
-   * {@link com/google/devtools/build/lib/skyframe/PrecomputedValue.java used only in javadoc:
-   * com.google.devtools.build.skyframe.SkyKey} for {@code PrecomputedValue}.
-   */
+  /** {@link 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/RepositoryMappingValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
index 49ef694..ee0f9c4 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
@@ -91,10 +91,7 @@
     return repositoryMapping.toString();
   }
 
-  /**
-   * {@link com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java used only in javadoc:
-   * com.google.devtools.build.skyframe.SkyKey} for {@link RepositoryMappingValue}.
-   */
+  /** {@link 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 0f53041..43646cc 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
@@ -23,9 +23,7 @@
 import javax.annotation.Nullable;
 
 /**
- * {@link com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java used
- * only in javadoc: com.google.devtools.build.skyframe.WalkableGraph} backed by a {@link
- * SkyframeExecutor}.
+ * {@link com.google.devtools.build.skyframe.WalkableGraph} backed by a {@link SkyframeExecutor}.
  */
 public class SkyframeExecutorWrappingWalkableGraph extends DelegatingWalkableGraph {
 
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 8f5df6f..20ea2a2 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
@@ -51,10 +51,7 @@
                 targetsToTest.contains(ct)));
   }
 
-  /**
-   * {@link com/google/devtools/build/lib/skyframe/TargetCompletionValue.java used only in javadoc:
-   * com.google.devtools.build.skyframe.SkyKey} for {@link TargetCompletionValue}.
-   */
+  /** {@link 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/WorkspaceStatusValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
index 1037f0d..844726b 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
@@ -50,10 +50,7 @@
     return volatileArtifact;
   }
 
-  /**
-   * {@link com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java used only in javadoc:
-   * com.google.devtools.build.skyframe.SkyKey} for {@link WorkspaceStatusValue}.
-   */
+  /** {@link 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 832c0be..94f235f 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
@@ -27,8 +27,7 @@
  * 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}.
+ * also an {@link 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
