Automatic code cleanup.

PiperOrigin-RevId: 459067450
Change-Id: Ib4fec6f79f98fb5ed2f20083539a02ed6159ecbc
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
index f65d8cf..b03d399 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
@@ -29,6 +29,7 @@
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -77,6 +78,7 @@
      * {@code ruleContext}, in HOST mode. Populates manifests, remoteRunfiles and label map where
      * required.
      */
+    @CanIgnoreReturnValue
     public Builder addHostToolDependencies(String toolAttributeName) {
       List<? extends TransitiveInfoCollection> dependencies =
           ruleContext.getPrerequisites(toolAttributeName);
@@ -98,6 +100,7 @@
      * Adds tools, as a set of executable binaries. Populates manifests, remoteRunfiles and label
      * map where required.
      */
+    @CanIgnoreReturnValue
     public Builder addToolDependencies(
         Iterable<? extends TransitiveInfoCollection> toolDependencies) {
       this.toolDependencies.add(toolDependencies);
@@ -105,6 +108,7 @@
     }
 
     /** Adds files to set of known files of label. Used for resolving $(location) variables. */
+    @CanIgnoreReturnValue
     public Builder addLabelMap(Map<Label, ? extends Iterable<Artifact>> labelMap) {
       this.labelMap.putAll(labelMap);
       return this;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
index e488290..4f41753 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
@@ -32,6 +32,7 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.Info;
 import com.google.devtools.build.lib.packages.Provider;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.TreeMap;
@@ -129,6 +130,7 @@
       this.ruleContext = ruleContext;
     }
 
+    @CanIgnoreReturnValue
     public <T extends TransitiveInfoProvider> Builder addProvider(
         Class<? extends T> providerClass, T provider) {
       Preconditions.checkNotNull(provider);
@@ -138,6 +140,7 @@
     }
 
     /** Adds a provider to the aspect. */
+    @CanIgnoreReturnValue
     public Builder addProvider(TransitiveInfoProvider provider) {
       Preconditions.checkNotNull(provider);
       addProvider(TransitiveInfoProviderEffectiveClassHelper.get(provider), provider);
@@ -149,6 +152,7 @@
     }
 
     /** Adds providers to the aspect. */
+    @CanIgnoreReturnValue
     public Builder addProviders(TransitiveInfoProviderMap providers) {
       this.providers.addAll(providers);
       return this;
@@ -160,6 +164,7 @@
     }
 
     /** Adds providers to the aspect. */
+    @CanIgnoreReturnValue
     public Builder addProviders(Iterable<TransitiveInfoProvider> providers) {
       for (TransitiveInfoProvider provider : providers) {
         addProvider(provider);
@@ -167,9 +172,8 @@
       return this;
     }
 
-    /**
-     * Adds a set of files to an output group.
-     */
+    /** Adds a set of files to an output group. */
+    @CanIgnoreReturnValue
     public Builder addOutputGroup(String name, NestedSet<Artifact> artifacts) {
       outputGroupBuilders
           .computeIfAbsent(name, k -> NestedSetBuilder.stableOrder())
@@ -177,11 +181,13 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkTransitiveInfo(String name, Object value) {
       providers.put(name, value);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkDeclaredProvider(Info declaredProvider) throws EvalException {
       Provider constructor = declaredProvider.getProvider();
       if (!constructor.isExported()) {
@@ -198,6 +204,7 @@
       providers.put(declaredProvider);
     }
 
+    @CanIgnoreReturnValue
     public Builder addNativeDeclaredProvider(Info declaredProvider) {
       Provider constructor = declaredProvider.getProvider();
       Preconditions.checkState(constructor.isExported());
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index 4e11d14..d8ebb92 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -59,6 +59,7 @@
 import com.google.devtools.build.lib.vfs.Root;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
 import com.google.devtools.common.options.OptionDefinition;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -178,22 +179,26 @@
     // TODO(b/192694287): Remove once we migrate all tests from the allowlist
     @Nullable private Label networkAllowlistForTests;
 
+    @CanIgnoreReturnValue
     public Builder addWorkspaceFilePrefix(String contents) {
       defaultWorkspaceFilePrefix.append(contents);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addWorkspaceFileSuffix(String contents) {
       defaultWorkspaceFileSuffix.append(contents);
       return this;
     }
 
+    @CanIgnoreReturnValue
     @VisibleForTesting
     public Builder clearWorkspaceFileSuffixForTesting() {
       defaultWorkspaceFileSuffix.delete(0, defaultWorkspaceFileSuffix.length());
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setPrelude(String preludeLabelString) {
       try {
         this.preludeLabel = Label.parseAbsolute(preludeLabelString, ImmutableMap.of());
@@ -205,11 +210,13 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setRunfilesPrefix(String runfilesPrefix) {
       this.runfilesPrefix = runfilesPrefix;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setToolsRepository(RepositoryName toolsRepository) {
       this.toolsRepository = toolsRepository;
       return this;
@@ -224,6 +231,7 @@
      * #useDummyBuiltinsBzl} if they do not rely on any native rules that may be migratable to
      * Starlark.
      */
+    @CanIgnoreReturnValue
     public Builder setBuiltinsBzlZipResource(String name) {
       this.builtinsBzlZipResource = name;
       this.useDummyBuiltinsBzlInsteadOfResource = false;
@@ -239,6 +247,7 @@
      * this method, but not tests that use AnalysisMock. Otherwise the test may break when a native
      * rule is migrated to Starlark via builtins injection.
      */
+    @CanIgnoreReturnValue
     public Builder useDummyBuiltinsBzl() {
       this.builtinsBzlZipResource = null;
       this.useDummyBuiltinsBzlInsteadOfResource = true;
@@ -251,21 +260,25 @@
      * <p>This is required if the rule class provider will be used with {@code
      * --experimental_builtins_bzl_path=%workspace%}, but can be skipped in unit tests.
      */
+    @CanIgnoreReturnValue
     public Builder setBuiltinsBzlPackagePathInSource(String path) {
       this.builtinsBzlPackagePathInSource = path;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setPrerequisiteValidator(PrerequisiteValidator prerequisiteValidator) {
       this.prerequisiteValidator = prerequisiteValidator;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addBuildInfoFactory(BuildInfoFactory factory) {
       buildInfoFactories.add(factory);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addRuleDefinition(RuleDefinition ruleDefinition) {
       Class<? extends RuleDefinition> ruleDefinitionClass = ruleDefinition.getClass();
       ruleDefinitionMap.put(ruleDefinitionClass.getName(), ruleDefinition);
@@ -277,6 +290,7 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addNativeAspectClass(NativeAspectClass aspectFactoryClass) {
       nativeAspectClassMap.put(aspectFactoryClass.getName(), aspectFactoryClass);
       return this;
@@ -288,6 +302,7 @@
      * <p>Note that configuration fragments annotated with a Starlark name must have a unique name;
      * no two different configuration fragments can share the same name.
      */
+    @CanIgnoreReturnValue
     public Builder addConfigurationFragment(Class<? extends Fragment> fragmentClass) {
       configurationFragmentClasses.add(fragmentClass);
       return this;
@@ -299,42 +314,50 @@
      * <p>If {@link #addConfigurationFragment} adds a fragment that also requires these options,
      * this method is redundant.
      */
+    @CanIgnoreReturnValue
     public Builder addConfigurationOptions(Class<? extends FragmentOptions> configurationOptions) {
       this.configurationOptions.add(configurationOptions);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addUniversalConfigurationFragment(Class<? extends Fragment> fragment) {
       this.universalFragments.add(fragment);
       addConfigurationFragment(fragment);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkBootstrap(Bootstrap bootstrap) {
       this.starlarkBootstraps.add(bootstrap);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkAccessibleTopLevels(String name, Object object) {
       this.starlarkAccessibleTopLevels.put(name, object);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkBuiltinsInternal(String name, Object object) {
       this.starlarkBuiltinsInternals.put(name, object);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addSymlinkDefinition(SymlinkDefinition symlinkDefinition) {
       this.symlinkDefinitions.add(symlinkDefinition);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addReservedActionMnemonic(String mnemonic) {
       this.reservedActionMnemonics.add(mnemonic);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setActionEnvironmentProvider(
         Function<BuildOptions, ActionEnvironment> actionEnvironmentProvider) {
       this.actionEnvironmentProvider = actionEnvironmentProvider;
@@ -346,6 +369,7 @@
      * don't depend on rules that aren't compatible with the same environments. Defaults to {@link
      * ConstraintSemantics}. See {@link ConstraintSemantics} for more details.
      */
+    @CanIgnoreReturnValue
     public Builder setConstraintSemantics(ConstraintSemantics<RuleContext> constraintSemantics) {
       this.constraintSemantics = constraintSemantics;
       return this;
@@ -355,6 +379,7 @@
      * Sets the policy for checking if third_party rules declare <code>licenses()</code>. See {@link
      * #thirdPartyLicenseExistencePolicy} for the default value.
      */
+    @CanIgnoreReturnValue
     public Builder setThirdPartyLicenseExistencePolicy(ThirdPartyLicenseExistencePolicy policy) {
       this.thirdPartyLicenseExistencePolicy = policy;
       return this;
@@ -370,6 +395,7 @@
      * feature flags, and support for this transition factory will likely be removed at some point
      * in the future (whenever automatic trimming is sufficiently workable).
      */
+    @CanIgnoreReturnValue
     public Builder addTrimmingTransitionFactory(TransitionFactory<RuleTransitionData> factory) {
       Preconditions.checkNotNull(factory);
       Preconditions.checkArgument(!factory.isSplit());
@@ -383,6 +409,7 @@
     }
 
     /** Sets the transition manual feature flag trimming should apply to toolchain deps. */
+    @CanIgnoreReturnValue
     public Builder setToolchainTaggedTrimmingTransition(PatchTransition transition) {
       Preconditions.checkNotNull(transition);
       Preconditions.checkState(toolchainTaggedTrimmingTransition == null);
@@ -406,6 +433,7 @@
      * Sets the predicate which determines whether the analysis cache should be invalidated for the
      * given options diff.
      */
+    @CanIgnoreReturnValue
     public Builder setShouldInvalidateCacheForOptionDiff(
         OptionsDiffPredicate shouldInvalidateCacheForOptionDiff) {
       Preconditions.checkState(
@@ -584,6 +612,7 @@
       return Optional.ofNullable(networkAllowlistForTests);
     }
 
+    @CanIgnoreReturnValue
     public Builder setNetworkAllowlistForTests(Label allowlist) {
       networkAllowlistForTests = allowlist;
       return this;
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 8e3e1ef..1481894 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
@@ -28,6 +28,7 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
 import com.google.devtools.build.lib.util.ClassName;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
@@ -118,41 +119,49 @@
 
     private Builder() {}
 
+    @CanIgnoreReturnValue
     public Builder addOptionsClass(Class<? extends FragmentOptions> optionsClass) {
       optionsClasses = append(optionsClasses, optionsClass);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addOptionsClasses(Collection<Class<? extends FragmentOptions>> optionsClasses) {
       this.optionsClasses = appendAll(this.optionsClasses, optionsClasses);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addFragmentClasses(Collection<Class<? extends Fragment>> fragmentClasses) {
       this.fragmentClasses = appendAll(this.fragmentClasses, fragmentClasses);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addDefine(String define) {
       defines = append(defines, define);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addDefines(Collection<String> defines) {
       this.defines = appendAll(this.defines, defines);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkOption(Label starlarkOption) {
       starlarkOptions = append(starlarkOptions, starlarkOption);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addStarlarkOptions(Collection<Label> starlarkOptions) {
       this.starlarkOptions = appendAll(this.starlarkOptions, starlarkOptions);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder merge(RequiredConfigFragmentsProvider provider) {
       optionsClasses = appendAll(optionsClasses, provider.getOptionsClasses());
       fragmentClasses = appendAll(fragmentClasses, provider.getFragmentClasses());
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index fed2278..7ca795e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -56,6 +56,7 @@
 import com.google.devtools.build.lib.packages.TargetUtils;
 import com.google.devtools.build.lib.packages.Type;
 import com.google.devtools.build.lib.packages.Type.LabelClass;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -491,6 +492,7 @@
    * Add files required to run the target. Artifacts from {@link #setFilesToBuild} and the runfiles
    * middleman, if any, are added automatically.
    */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addFilesToRun(NestedSet<Artifact> files) {
     filesToRunBuilder.addTransitive(files);
     return this;
@@ -507,6 +509,7 @@
   }
 
   /** Add a specific provider with a given value. */
+  @CanIgnoreReturnValue
   public <T extends TransitiveInfoProvider> RuleConfiguredTargetBuilder addProvider(
       Class<? extends T> key, T value) {
     providersBuilder.put(key, value);
@@ -514,12 +517,14 @@
   }
 
   /** Adds a specific provider. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addProvider(TransitiveInfoProvider provider) {
     providersBuilder.add(provider);
     return this;
   }
 
   /** Add a collection of specific providers. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addProviders(TransitiveInfoProviderMap providers) {
     providersBuilder.addAll(providers);
     return this;
@@ -533,6 +538,7 @@
    *
    * <p>Use {@link #addNativeDeclaredProvider(Info)} in definitions of native rules.
    */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addStarlarkDeclaredProvider(Info provider) {
     Provider constructor = provider.getProvider();
     // Starlark providers are already exported (enforced by SRCTU.getProviderKey).
@@ -554,6 +560,7 @@
    *
    * <p>Use {@link #addStarlarkDeclaredProvider(Info)} for Starlark rule implementations.
    */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addNativeDeclaredProviders(Iterable<Info> providers) {
     for (Info provider : providers) {
       addNativeDeclaredProvider(provider);
@@ -567,6 +574,7 @@
    *
    * <p>Use {@link #addStarlarkDeclaredProvider(Info)} for Starlark rule implementations.
    */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addNativeDeclaredProvider(Info provider) {
     Provider constructor = provider.getProvider();
     Preconditions.checkState(constructor.isExported());
@@ -591,14 +599,14 @@
   }
 
   /** Add a Starlark transitive info. The provider value must be safe. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addStarlarkTransitiveInfo(String name, Object value) {
     providersBuilder.put(name, value);
     return this;
   }
 
-  /**
-   * Set the runfiles support for executable targets.
-   */
+  /** Set the runfiles support for executable targets. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder setRunfilesSupport(
       RunfilesSupport runfilesSupport, Artifact executable) {
     this.runfilesSupport = runfilesSupport;
@@ -606,14 +614,14 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addTestActionTools(List<Artifact> tools) {
     this.additionalTestActionTools.addAll(tools);
     return this;
   }
 
-  /**
-   * Set the files to build.
-   */
+  /** Set the files to build. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder setFilesToBuild(NestedSet<Artifact> filesToBuild) {
     this.filesToBuild = filesToBuild;
     return this;
@@ -630,25 +638,22 @@
     return result;
   }
 
-  /**
-   * Adds a set of files to an output group.
-   */
+  /** Adds a set of files to an output group. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addOutputGroup(String name, NestedSet<Artifact> artifacts) {
     getOutputGroupBuilder(name).addTransitive(artifacts);
     return this;
   }
 
-  /**
-   * Adds a file to an output group.
-   */
+  /** Adds a file to an output group. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addOutputGroup(String name, Artifact artifact) {
     getOutputGroupBuilder(name).add(artifact);
     return this;
   }
 
-  /**
-   * Adds multiple output groups.
-   */
+  /** Adds multiple output groups. */
+  @CanIgnoreReturnValue
   public RuleConfiguredTargetBuilder addOutputGroups(Map<String, NestedSet<Artifact>> groups) {
     for (Map.Entry<String, NestedSet<Artifact>> group : groups.entrySet()) {
       getOutputGroupBuilder(group.getKey()).addTransitive(group.getValue());
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 478b191..58dc511 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
@@ -97,6 +97,7 @@
 import com.google.devtools.build.lib.util.StringUtil;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -1736,31 +1737,37 @@
       }
     }
 
+    @CanIgnoreReturnValue
     public Builder setRuleClassProvider(ConfiguredRuleClassProvider ruleClassProvider) {
       this.ruleClassProvider = ruleClassProvider;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setHostConfiguration(BuildConfigurationValue hostConfiguration) {
       this.hostConfiguration = hostConfiguration;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setConfigurationFragmentPolicy(ConfigurationFragmentPolicy policy) {
       this.configurationFragmentPolicy = policy;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setActionOwnerSymbol(ActionLookupKey actionOwnerSymbol) {
       this.actionOwnerSymbol = actionOwnerSymbol;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setMutability(Mutability mutability) {
       this.mutability = mutability;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setVisibility(NestedSet<PackageGroupContents> visibility) {
       this.visibility = visibility;
       return this;
@@ -1770,6 +1777,7 @@
      * Sets the prerequisites and checks their visibility. It also generates appropriate error or
      * warning messages and sets the error flag as appropriate.
      */
+    @CanIgnoreReturnValue
     public Builder setPrerequisites(
         OrderedSetMultimap<Attribute, ConfiguredTargetAndData> prerequisiteMap) {
       this.prerequisiteMap = Preconditions.checkNotNull(prerequisiteMap);
@@ -1777,6 +1785,7 @@
     }
 
     /** Adds attributes which are defined by an Aspect (and not by RuleClass). */
+    @CanIgnoreReturnValue
     public Builder setAspectAttributes(Map<String, Attribute> aspectAttributes) {
       this.aspectAttributes = ImmutableMap.copyOf(aspectAttributes);
       return this;
@@ -1786,12 +1795,14 @@
      * Sets the configuration conditions needed to determine which paths to follow for this rule's
      * configurable attributes.
      */
+    @CanIgnoreReturnValue
     public Builder setConfigConditions(ConfigConditions configConditions) {
       this.configConditions = Preconditions.checkNotNull(configConditions);
       return this;
     }
 
     /** Sets the collection of {@link ResolvedToolchainContext}s available to this rule. */
+    @CanIgnoreReturnValue
     @VisibleForTesting
     public Builder setToolchainContexts(
         ToolchainCollection<ResolvedToolchainContext> toolchainContexts) {
@@ -1802,6 +1813,7 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setExecGroupCollectionBuilder(
         ExecGroupCollection.Builder execGroupCollectionBuilder) {
       this.execGroupCollectionBuilder = execGroupCollectionBuilder;
@@ -1812,11 +1824,13 @@
      * Warning: if you set the exec properties using this method any exec_properties attribute value
      * will be ignored in favor of this value.
      */
+    @CanIgnoreReturnValue
     public Builder setExecProperties(ImmutableMap<String, String> execProperties) {
       this.rawExecProperties = execProperties;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setRequiredConfigFragments(
         @Nullable RequiredConfigFragmentsProvider requiredConfigFragments) {
       this.requiredConfigFragments = requiredConfigFragments;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index 9b73a4a..1302588 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -40,6 +40,7 @@
 import com.google.devtools.build.lib.starlarkbuildapi.SymlinkEntryApi;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -594,6 +595,7 @@
   }
 
   /** Set whether we should warn about conflicting symlink entries. */
+  @CanIgnoreReturnValue
   public Runfiles setConflictPolicy(ConflictPolicy conflictPolicy) {
     this.conflictPolicy = conflictPolicy;
     return this;
@@ -742,9 +744,8 @@
           legacyExternalRunfiles);
     }
 
-    /**
-     * Adds an artifact to the internal collection of artifacts.
-     */
+    /** Adds an artifact to the internal collection of artifacts. */
+    @CanIgnoreReturnValue
     public Builder addArtifact(Artifact artifact) {
       Preconditions.checkNotNull(artifact);
       Preconditions.checkArgument(
@@ -753,9 +754,8 @@
       return this;
     }
 
-    /**
-     * Adds several artifacts to the internal collection.
-     */
+    /** Adds several artifacts to the internal collection. */
+    @CanIgnoreReturnValue
     public Builder addArtifacts(Iterable<Artifact> artifacts) {
       for (Artifact artifact : artifacts) {
         addArtifact(artifact);
@@ -763,9 +763,8 @@
       return this;
     }
 
-    /**
-     * Adds a nested set to the internal collection.
-     */
+    /** Adds a nested set to the internal collection. */
+    @CanIgnoreReturnValue
     public Builder addTransitiveArtifacts(NestedSet<Artifact> artifacts) {
       artifactsBuilder.addTransitive(artifacts);
       return this;
@@ -778,6 +777,7 @@
      * artifacts will not have conflicting root relative paths, or the wrong artifact will end up in
      * the runfiles tree.
      */
+    @CanIgnoreReturnValue
     public Builder addTransitiveArtifactsWrappedInStableOrder(NestedSet<Artifact> artifacts) {
       NestedSet<Artifact> wrappedArtifacts =
           NestedSetBuilder.<Artifact>stableOrder().addTransitive(artifacts).build();
@@ -785,15 +785,15 @@
       return this;
     }
 
-    /**
-     * Adds a symlink.
-     */
+    /** Adds a symlink. */
+    @CanIgnoreReturnValue
     public Builder addSymlink(PathFragment link, Artifact target) {
       symlinksBuilder.add(new SymlinkEntry(link, target));
       return this;
     }
 
     /** Adds several symlinks. Neither keys nor values may be null. */
+    @CanIgnoreReturnValue
     public Builder addSymlinks(Map<PathFragment, Artifact> symlinks) {
       for (Map.Entry<PathFragment, Artifact> symlink : symlinks.entrySet()) {
         symlinksBuilder.add(new SymlinkEntry(symlink.getKey(), symlink.getValue()));
@@ -801,23 +801,22 @@
       return this;
     }
 
-    /**
-     * Adds several symlinks as a NestedSet.
-     */
+    /** Adds several symlinks as a NestedSet. */
+    @CanIgnoreReturnValue
     public Builder addSymlinks(NestedSet<SymlinkEntry> symlinks) {
       symlinksBuilder.addTransitive(symlinks);
       return this;
     }
 
-    /**
-     * Adds a root symlink.
-     */
+    /** Adds a root symlink. */
+    @CanIgnoreReturnValue
     public Builder addRootSymlink(PathFragment link, Artifact target) {
       rootSymlinksBuilder.add(new SymlinkEntry(link, target));
       return this;
     }
 
     /** Adds several root symlinks. Neither keys nor values may be null. */
+    @CanIgnoreReturnValue
     public Builder addRootSymlinks(Map<PathFragment, Artifact> symlinks) {
       for (Map.Entry<PathFragment, Artifact> symlink : symlinks.entrySet()) {
         rootSymlinksBuilder.add(new SymlinkEntry(symlink.getKey(), symlink.getValue()));
@@ -825,9 +824,8 @@
       return this;
     }
 
-    /**
-     * Adds several root symlinks as a NestedSet.
-     */
+    /** Adds several root symlinks as a NestedSet. */
+    @CanIgnoreReturnValue
     public Builder addRootSymlinks(NestedSet<SymlinkEntry> symlinks) {
       rootSymlinksBuilder.addTransitive(symlinks);
       return this;
@@ -836,6 +834,7 @@
      * Specify a function that can create additional manifest entries based on the input entries,
      * see {@link EmptyFilesSupplier} for more details.
      */
+    @CanIgnoreReturnValue
     public Builder setEmptyFilesSupplier(EmptyFilesSupplier supplier) {
       emptyFilesSupplier = Preconditions.checkNotNull(supplier);
       return this;
@@ -846,6 +845,7 @@
      *
      * @param runfilesSupport the runfiles support to be merged in
      */
+    @CanIgnoreReturnValue
     public Builder merge(@Nullable RunfilesSupport runfilesSupport) {
       if (runfilesSupport == null) {
         return this;
@@ -860,6 +860,7 @@
     }
 
     /** Add the other {@link Runfiles} object transitively. */
+    @CanIgnoreReturnValue
     private Builder merge(Runfiles runfiles, boolean includeArtifacts) {
       // Propagate the most strict conflict checking from merged-in runfiles
       if (runfiles.conflictPolicy.compareTo(conflictPolicy) > 0) {
@@ -890,11 +891,12 @@
     }
 
     /**
-     * Adds the runfiles for a particular target and visits the transitive closure of "srcs",
-     * "deps" and "data", collecting all of their respective runfiles.
+     * Adds the runfiles for a particular target and visits the transitive closure of "srcs", "deps"
+     * and "data", collecting all of their respective runfiles.
      */
-    public Builder addRunfiles(RuleContext ruleContext,
-        Function<TransitiveInfoCollection, Runfiles> mapping) {
+    @CanIgnoreReturnValue
+    public Builder addRunfiles(
+        RuleContext ruleContext, Function<TransitiveInfoCollection, Runfiles> mapping) {
       Preconditions.checkNotNull(mapping);
       Preconditions.checkNotNull(ruleContext);
       addDataDeps(ruleContext);
@@ -907,8 +909,9 @@
      *
      * <p>Dependencies in {@code srcs} and {@code deps} are considered.
      */
-    public Builder add(RuleContext ruleContext,
-        Function<TransitiveInfoCollection, Runfiles> mapping) {
+    @CanIgnoreReturnValue
+    public Builder add(
+        RuleContext ruleContext, Function<TransitiveInfoCollection, Runfiles> mapping) {
       Preconditions.checkNotNull(ruleContext);
       Preconditions.checkNotNull(mapping);
       for (TransitiveInfoCollection dep : getNonDataDeps(ruleContext)) {
@@ -921,26 +924,26 @@
       return this;
     }
 
-    /**
-     * Collects runfiles from data dependencies of a target.
-     */
+    /** Collects runfiles from data dependencies of a target. */
+    @CanIgnoreReturnValue
     public Builder addDataDeps(RuleContext ruleContext) {
       addTargets(getPrerequisites(ruleContext, "data"), RunfilesProvider.DATA_RUNFILES);
       return this;
     }
 
-    /**
-     * Collects runfiles from "srcs" and "deps" of a target.
-     */
-    public Builder addNonDataDeps(RuleContext ruleContext,
-        Function<TransitiveInfoCollection, Runfiles> mapping) {
+    /** Collects runfiles from "srcs" and "deps" of a target. */
+    @CanIgnoreReturnValue
+    public Builder addNonDataDeps(
+        RuleContext ruleContext, Function<TransitiveInfoCollection, Runfiles> mapping) {
       for (TransitiveInfoCollection target : getNonDataDeps(ruleContext)) {
         addTargetExceptFileTargets(target, mapping);
       }
       return this;
     }
 
-    public Builder addTargets(Iterable<? extends TransitiveInfoCollection> targets,
+    @CanIgnoreReturnValue
+    public Builder addTargets(
+        Iterable<? extends TransitiveInfoCollection> targets,
         Function<TransitiveInfoCollection, Runfiles> mapping) {
       for (TransitiveInfoCollection target : targets) {
         addTarget(target, mapping);
@@ -953,8 +956,9 @@
       return addTargetIncludingFileTargets(target, mapping);
     }
 
-    private Builder addTargetExceptFileTargets(TransitiveInfoCollection target,
-        Function<TransitiveInfoCollection, Runfiles> mapping) {
+    @CanIgnoreReturnValue
+    private Builder addTargetExceptFileTargets(
+        TransitiveInfoCollection target, Function<TransitiveInfoCollection, Runfiles> mapping) {
       Runfiles runfiles = mapping.apply(target);
       if (runfiles != null) {
         merge(runfiles);
@@ -987,6 +991,7 @@
     }
 
     /** Adds symlinks to given artifacts at their exec paths. */
+    @CanIgnoreReturnValue
     public Builder addSymlinksToArtifacts(Iterable<Artifact> artifacts) {
       for (Artifact artifact : artifacts) {
         addSymlink(artifact.getExecPath(), artifact);
@@ -999,6 +1004,7 @@
      * method exists solely to support the unfortunate legacy behavior of some rules; new uses
      * should not be added.
      */
+    @CanIgnoreReturnValue
     public Builder addLegacyExtraMiddleman(Artifact middleman) {
       Preconditions.checkArgument(middleman.isMiddlemanArtifact(), middleman);
       extraMiddlemenBuilder.add(middleman);
@@ -1053,6 +1059,7 @@
    * @return this object, in the fluent style
    * @throws EvalException if a nested set in the Runfiles object exceeds the depth limit
    */
+  @CanIgnoreReturnValue
   private Runfiles verifyNestedSetDepthLimit(StarlarkSemantics semantics) throws EvalException {
     int limit = semantics.get(BuildLanguageOptions.NESTED_SET_DEPTH_LIMIT);
     verifyNestedSetDepthLimitHelper(artifacts, "artifacts", limit);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ToolchainCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/ToolchainCollection.java
index 0465daf..572d077 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ToolchainCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ToolchainCollection.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.ExecGroup;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -95,6 +96,7 @@
       toolchainContexts.put(execGroup, context);
     }
 
+    @CanIgnoreReturnValue
     public Builder<T> addDefaultContext(T context) {
       addContext(ExecGroup.DEFAULT_EXEC_GROUP_NAME, context);
       return this;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java
index 5b241d8..4ac5689 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java
@@ -17,6 +17,7 @@
 import com.google.common.base.Preconditions;
 import com.google.devtools.build.lib.packages.Info;
 import com.google.devtools.build.lib.packages.Provider;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.LinkedHashMap;
 import javax.annotation.Nullable;
@@ -43,7 +44,7 @@
     return providers.containsKey(key);
   }
 
-
+  @CanIgnoreReturnValue
   public <T extends TransitiveInfoProvider> TransitiveInfoProviderMapBuilder put(
       Class<? extends T> providerClass, T provider) {
     Preconditions.checkNotNull(providerClass);
@@ -58,6 +59,7 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public TransitiveInfoProviderMapBuilder put(Info classObject) {
     Preconditions.checkNotNull(classObject);
     // TODO(bazel-team): VisibilityProvider should be migrated to Info to avoid the
@@ -73,6 +75,7 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public TransitiveInfoProviderMapBuilder put(String legacyKey, Object classObject) {
     Preconditions.checkNotNull(legacyKey);
     Preconditions.checkNotNull(classObject);
@@ -89,6 +92,7 @@
     return addAll(Arrays.asList(providers));
   }
 
+  @CanIgnoreReturnValue
   public TransitiveInfoProviderMapBuilder addAll(TransitiveInfoProviderMap other) {
     for (int i = 0; i < other.getProviderCount(); ++i) {
       providers.put(other.getProviderKeyAt(i), other.getProviderInstanceAt(i));
@@ -96,6 +100,7 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public TransitiveInfoProviderMapBuilder addAll(Iterable<TransitiveInfoProvider> providers) {
     for (TransitiveInfoProvider provider : providers) {
       add(provider);
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 7ee86ab..f80e0ad 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
@@ -116,6 +116,7 @@
 import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.devtools.common.options.OptionsProvider;
 import com.google.devtools.common.options.TriState;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -1573,46 +1574,55 @@
       return runtime;
     }
 
+    @CanIgnoreReturnValue
     public Builder setProductName(String productName) {
       this.productName = productName;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setFileSystem(FileSystem fileSystem) {
       this.fileSystem = fileSystem;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setServerDirectories(ServerDirectories serverDirectories) {
       this.serverDirectories = serverDirectories;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setClock(Clock clock) {
       this.clock = clock;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setAbruptShutdownHandler(Runnable handler) {
       this.abruptShutdownHandler = handler;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setStartupOptionsProvider(OptionsParsingResult startupOptionsProvider) {
       this.startupOptionsProvider = startupOptionsProvider;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addBlazeModule(BlazeModule blazeModule) {
       blazeModules.add(blazeModule);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setInstanceId(UUID id) {
       instanceId = id;
       return this;
     }
 
+    @CanIgnoreReturnValue
     @VisibleForTesting
     public Builder setEventBusExceptionHandler(
         SubscriberExceptionHandler eventBusExceptionHandler) {
@@ -1620,12 +1630,14 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     @VisibleForTesting
     public Builder setBugReporter(BugReporter bugReporter) {
       this.bugReporter = bugReporter;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setActionKeyContext(ActionKeyContext actionKeyContext) {
       this.actionKeyContext = actionKeyContext;
       return this;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventArtifactUploaderFactoryMap.java b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventArtifactUploaderFactoryMap.java
index fc414c6..d9976f5 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventArtifactUploaderFactoryMap.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventArtifactUploaderFactoryMap.java
@@ -14,6 +14,7 @@
 package com.google.devtools.build.lib.runtime;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.SortedMap;
 import java.util.TreeMap;
 import javax.annotation.Nullable;
@@ -47,6 +48,7 @@
 
     public Builder() {}
 
+    @CanIgnoreReturnValue
     public Builder add(String name, BuildEventArtifactUploaderFactory uploader) {
       uploaders.put(name, uploader);
       return this;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java
index 79224cd..f42291d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java
@@ -65,6 +65,7 @@
 import com.google.devtools.build.lib.pkgcache.TargetParsingCompleteEvent;
 import com.google.devtools.build.lib.runtime.CountingArtifactGroupNamer.LatchedGroupName;
 import com.google.devtools.build.lib.util.Pair;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -846,26 +847,31 @@
     private CountingArtifactGroupNamer artifactGroupNamer;
     private String oomMessage;
 
+    @CanIgnoreReturnValue
     public Builder buildEventTransports(Set<BuildEventTransport> value) {
       this.buildEventTransports = value;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder besStreamOptions(BuildEventStreamOptions value) {
       this.besStreamOptions = value;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder publishTargetSummaries(boolean publishTargetSummaries) {
       this.publishTargetSummaries = publishTargetSummaries;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder artifactGroupNamer(CountingArtifactGroupNamer value) {
       this.artifactGroupNamer = value;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder oomMessage(String oomMessage) {
       this.oomMessage = oomMessage;
       return this;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ProcessWrapper.java b/src/main/java/com/google/devtools/build/lib/runtime/ProcessWrapper.java
index adab024..3e9c87a 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ProcessWrapper.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ProcessWrapper.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.util.OS;
 import com.google.devtools.build.lib.util.OsUtils;
 import com.google.devtools.build.lib.vfs.Path;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.time.Duration;
 import java.util.List;
 import java.util.Map;
@@ -103,30 +104,35 @@
     }
 
     /** Sets the path to use for redirecting stdout, if any. */
+    @CanIgnoreReturnValue
     public CommandLineBuilder setStdoutPath(Path stdoutPath) {
       this.stdoutPath = stdoutPath;
       return this;
     }
 
     /** Sets the path to use for redirecting stderr, if any. */
+    @CanIgnoreReturnValue
     public CommandLineBuilder setStderrPath(Path stderrPath) {
       this.stderrPath = stderrPath;
       return this;
     }
 
     /** Sets the timeout for the command run using the process-wrapper tool. */
+    @CanIgnoreReturnValue
     public CommandLineBuilder setTimeout(Duration timeout) {
       this.timeout = timeout;
       return this;
     }
 
     /** Sets the path for writing execution statistics (e.g. resource usage). */
+    @CanIgnoreReturnValue
     public CommandLineBuilder setStatisticsPath(Path statisticsPath) {
       this.statisticsPath = statisticsPath;
       return this;
     }
 
     /** Incorporates settings from a spawn's execution info. */
+    @CanIgnoreReturnValue
     public CommandLineBuilder addExecutionInfo(Map<String, String> executionInfo) {
       if (executionInfo.containsKey(ExecutionRequirements.GRACEFUL_TERMINATION)) {
         gracefulSigterm = true;
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 b7982f8..bba51b1 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
@@ -23,6 +23,7 @@
 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.proto.InvocationPolicyOuterClass.InvocationPolicy;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.function.Supplier;
 
 /**
@@ -99,6 +100,7 @@
    * police the same options, so it's probably a good idea to not have too many modules that call
    * this.
    */
+  @CanIgnoreReturnValue
   public ServerBuilder addInvocationPolicy(InvocationPolicy policy) {
     invocationPolicyBuilder.mergeFrom(Preconditions.checkNotNull(policy));
     return this;
@@ -110,6 +112,7 @@
    * only one factory per server is allowed. If none is set, the server uses the default
    * implementation.
    */
+  @CanIgnoreReturnValue
   public ServerBuilder setQueryEnvironmentFactory(QueryEnvironmentFactory queryEnvironmentFactory) {
     Preconditions.checkState(
         this.queryEnvironmentFactory == null,
@@ -124,12 +127,14 @@
    * Adds the given command to the server. This overload only exists to avoid array object creation
    * in the common case.
    */
+  @CanIgnoreReturnValue
   public ServerBuilder addCommands(BlazeCommand command) {
     this.commands.add(Preconditions.checkNotNull(command));
     return this;
   }
 
   /** Adds the given commands to the server. */
+  @CanIgnoreReturnValue
   public ServerBuilder addCommands(BlazeCommand... commands) {
     this.commands.add(commands);
     return this;
@@ -140,6 +145,7 @@
    * the same name to the same builder, regardless of whether that happens within the same module or
    * across modules.
    */
+  @CanIgnoreReturnValue
   public ServerBuilder addInfoItems(InfoItem... infoItems) {
     for (InfoItem item : infoItems) {
       this.infoItems.put(item.getName(), item);
@@ -147,38 +153,45 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder addQueryFunctions(QueryFunction... functions) {
     this.queryFunctions.add(functions);
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder addQueryOutputFormatters(OutputFormatter... formatters) {
     this.queryOutputFormatters.add(formatters);
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder addQueryOutputFormatters(Iterable<OutputFormatter> formatters) {
     this.queryOutputFormatters.addAll(formatters);
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder addEnvironmentExtension(PackageFactory.EnvironmentExtension extension) {
     this.environmentExtensions.add(extension);
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder addBuildEventArtifactUploaderFactory(
       BuildEventArtifactUploaderFactory uploaderFactory, String name) {
     buildEventArtifactUploaderFactories.add(name, uploaderFactory);
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder setRepositoryRemoteExecutorFactory(
       RepositoryRemoteExecutorFactory repositoryRemoteExecutorFactory) {
     this.repositoryRemoteExecutorFactory = repositoryRemoteExecutorFactory;
     return this;
   }
 
+  @CanIgnoreReturnValue
   public ServerBuilder setDownloaderSupplier(Supplier<Downloader> downloaderSupplier) {
     this.downloaderSupplier = downloaderSupplier;
     return this;
@@ -188,6 +201,7 @@
    * Register a provider of authentication headers that blaze modules can use. See {@link
    * AuthHeadersProvider} for more details.
    */
+  @CanIgnoreReturnValue
   public ServerBuilder addAuthHeadersProvider(
       String name, AuthHeadersProvider authHeadersProvider) {
     authHeadersProvidersMap.put(name, authHeadersProvider);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
index d567954..2ddd38e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
@@ -41,6 +41,7 @@
 import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
 import com.google.devtools.build.lib.view.test.TestStatus.FailedTestCasesStatus;
 import com.google.devtools.build.lib.view.test.TestStatus.TestCase;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.protobuf.util.Durations;
 import com.google.protobuf.util.Timestamps;
 import java.util.ArrayList;
@@ -122,54 +123,63 @@
       checkMutation();
     }
 
+    @CanIgnoreReturnValue
     public Builder setConfiguration(BuildConfigurationValue configuration) {
       checkMutation(configuration);
       summary.configuration = checkNotNull(configuration, summary);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setStatus(BlazeTestStatus status) {
       checkMutation(status);
       summary.status = status;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setSkipped(boolean skipped) {
       checkMutation(skipped);
       summary.skipped = skipped;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addCoverageFiles(List<Path> coverageFiles) {
       checkMutation(coverageFiles);
       summary.coverageFiles.addAll(coverageFiles);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addPassedLogs(List<Path> passedLogs) {
       checkMutation(passedLogs);
       summary.passedLogs.addAll(passedLogs);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addPassedLog(Path passedLog) {
       checkMutation(passedLog);
       summary.passedLogs.add(passedLog);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addFailedLogs(List<Path> failedLogs) {
       checkMutation(failedLogs);
       summary.failedLogs.addAll(failedLogs);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addFailedLog(Path failedLog) {
       checkMutation(failedLog);
       summary.failedLogs.add(failedLog);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder collectTestCases(@Nullable TestCase testCase) {
       // Maintain the invariant: failedTestCases + totalUnknownTestCases <= totalTestCases
       if (testCase == null) {
@@ -211,6 +221,7 @@
       return 1;
     }
 
+    @CanIgnoreReturnValue
     public Builder addFailedTestCases(List<TestCase> testCases, FailedTestCasesStatus status) {
       checkMutation(status);
       checkMutation(testCases);
@@ -240,12 +251,14 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addTestTimes(List<Long> testTimes) {
       checkMutation(testTimes);
       summary.testTimes.addAll(testTimes);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder mergeTiming(long startTimeMillis, long runDurationMillis) {
       checkMutation();
       summary.firstStartTimeMillis = Math.min(summary.firstStartTimeMillis, startTimeMillis);
@@ -255,12 +268,14 @@
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder addWarnings(List<String> warnings) {
       checkMutation(warnings);
       summary.warnings.addAll(warnings);
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setActionRan(boolean actionRan) {
       checkMutation();
       summary.actionRan = actionRan;
@@ -273,30 +288,35 @@
      * @param numCached number of results cached locally or remotely
      * @return this Builder
      */
+    @CanIgnoreReturnValue
     public Builder setNumCached(int numCached) {
       checkMutation();
       summary.numCached = numCached;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setNumLocalActionCached(int numLocalActionCached) {
       checkMutation();
       summary.numLocalActionCached = numLocalActionCached;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setRanRemotely(boolean ranRemotely) {
       checkMutation();
       summary.ranRemotely = ranRemotely;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder setWasUnreportedWrongSize(boolean wasUnreportedWrongSize) {
       checkMutation();
       summary.wasUnreportedWrongSize = wasUnreportedWrongSize;
       return this;
     }
 
+    @CanIgnoreReturnValue
     public Builder mergeSystemFailure(@Nullable DetailedExitCode systemFailure) {
       checkMutation();
       summary.systemFailure =
@@ -317,6 +337,7 @@
     }
 
     /** Records new attempts for the given shard of the target. */
+    @CanIgnoreReturnValue
     public Builder addShardAttempts(int shardNumber, int newAtttempts) {
       checkMutation();
       summary.shardAttempts[shardNumber] += newAtttempts;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java b/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java
index 887e9ac..e1a6244 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java
@@ -33,6 +33,7 @@
 import com.google.devtools.build.lib.vfs.SyscallCache;
 import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyFunctionName;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Map;
 import javax.annotation.Nullable;
 
@@ -134,6 +135,7 @@
    * Sets a factory for creating {@link SkyframeExecutor} objects. Note that only one factory per
    * workspace is allowed.
    */
+  @CanIgnoreReturnValue
   public WorkspaceBuilder setSkyframeExecutorFactory(
       SkyframeExecutorFactory skyframeExecutorFactory) {
     Preconditions.checkState(this.skyframeExecutorFactory == null,
@@ -147,6 +149,7 @@
    * Sets the workspace status action factory contributed by this module. Only one factory per
    * workspace is allowed.
    */
+  @CanIgnoreReturnValue
   public WorkspaceBuilder setWorkspaceStatusActionFactory(
       WorkspaceStatusAction.Factory workspaceStatusActionFactory) {
     Preconditions.checkState(this.workspaceStatusActionFactory == null,
@@ -156,6 +159,7 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public WorkspaceBuilder setAllocationTracker(AllocationTracker allocationTracker) {
     Preconditions.checkState(
         this.allocationTracker == null, "At most one allocation tracker can be set.");
@@ -163,6 +167,7 @@
     return this;
   }
 
+  @CanIgnoreReturnValue
   public WorkspaceBuilder setPerCommandSyscallCache(SyscallCache perCommandSyscallCache) {
     Preconditions.checkState(
         this.perCommandSyscallCache == null,
@@ -176,15 +181,17 @@
   /**
    * Add a {@link DiffAwareness} factory. These will be used to determine which files, if any,
    * changed between Blaze commands. Note that these factories are attempted in the order in which
-   * they are added to this class, so order matters - in order to guarantee a specific order, only
-   * a single module should add such factories.
+   * they are added to this class, so order matters - in order to guarantee a specific order, only a
+   * single module should add such factories.
    */
+  @CanIgnoreReturnValue
   public WorkspaceBuilder addDiffAwarenessFactory(DiffAwareness.Factory factory) {
     this.diffAwarenessFactories.add(Preconditions.checkNotNull(factory));
     return this;
   }
 
   /** Add an "extra" SkyFunction for SkyValues. */
+  @CanIgnoreReturnValue
   public WorkspaceBuilder addSkyFunction(SkyFunctionName name, SkyFunction skyFunction) {
     Preconditions.checkNotNull(name);
     Preconditions.checkNotNull(skyFunction);
@@ -193,17 +200,20 @@
   }
 
   /** Add "extra" SkyFunctions for SkyValues. */
+  @CanIgnoreReturnValue
   public WorkspaceBuilder addSkyFunctions(Map<SkyFunctionName, SkyFunction> skyFunctions) {
     this.skyFunctions.putAll(Preconditions.checkNotNull(skyFunctions));
     return this;
   }
 
+  @CanIgnoreReturnValue
   public WorkspaceBuilder setSkyframeExecutorRepositoryHelpersHolder(
       SkyframeExecutorRepositoryHelpersHolder skyframeExecutorRepositoryHelpersHolder) {
     this.skyframeExecutorRepositoryHelpersHolder = skyframeExecutorRepositoryHelpersHolder;
     return this;
   }
 
+  @CanIgnoreReturnValue
   public WorkspaceBuilder setSkyKeyStateReceiver(
       SkyframeExecutor.SkyKeyStateReceiver skyKeyStateReceiver) {
     Preconditions.checkState(
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/CentralDirectory.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/CentralDirectory.java
index fa5d1f6..b104369 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/CentralDirectory.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/CentralDirectory.java
@@ -16,6 +16,7 @@
 import static com.google.devtools.build.android.ziputils.DirectoryEntry.CENOFF;
 
 import com.google.common.base.Preconditions;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
@@ -98,6 +99,7 @@
    * @return this central directory view
    * @throws IllegalStateException if the file offset is not set prior to parsing
    */
+  @CanIgnoreReturnValue
   public CentralDirectory parse() throws IllegalStateException {
     Preconditions.checkState(fileOffset != -1, "File offset not set prior to parsing");
     count = 0;
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/DataDescriptor.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/DataDescriptor.java
index e35a16c..1a8075c 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/DataDescriptor.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/DataDescriptor.java
@@ -15,6 +15,7 @@
 
 import static java.nio.ByteOrder.LITTLE_ENDIAN;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 
 /**
@@ -84,6 +85,7 @@
     return view;
   }
 
+  @CanIgnoreReturnValue
   private DataDescriptor init() {
     buffer.putInt(0, SIGNATURE);
     hasMarker = true;
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/DirectoryEntry.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/DirectoryEntry.java
index b6528b3..f177ce0 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/DirectoryEntry.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/DirectoryEntry.java
@@ -16,6 +16,7 @@
 import static java.nio.ByteOrder.LITTLE_ENDIAN;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 
 /**
@@ -120,6 +121,7 @@
     return view;
   }
 
+  @CanIgnoreReturnValue
   private DirectoryEntry init(byte[] name, byte[] extra, byte[] comment, int size) {
     buffer.putInt(0, SIGNATURE);
     set(CENNAM, name.length);
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/EndOfCentralDirectory.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/EndOfCentralDirectory.java
index 20d9021..3ee620e 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/EndOfCentralDirectory.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/EndOfCentralDirectory.java
@@ -16,6 +16,7 @@
 import static java.nio.ByteOrder.LITTLE_ENDIAN;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 
 /**
@@ -83,6 +84,7 @@
     return view;
   }
 
+  @CanIgnoreReturnValue
   private EndOfCentralDirectory init(byte[] comment) {
     buffer.putInt(0, SIGNATURE);
     set(ENDCOM, comment.length);
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/LocalFileHeader.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/LocalFileHeader.java
index 5319389..473b5a0 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/LocalFileHeader.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/LocalFileHeader.java
@@ -16,6 +16,7 @@
 import static java.nio.ByteOrder.LITTLE_ENDIAN;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 
 /**
@@ -112,6 +113,7 @@
     return view;
   }
 
+  @CanIgnoreReturnValue
   private LocalFileHeader init(byte[] name, byte[] extra, int size) {
     buffer.putInt(0, SIGNATURE);
     set(LOCNAM, name.length);
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/SplitZip.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/SplitZip.java
index 0528175..a3b33a0 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/SplitZip.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/SplitZip.java
@@ -28,6 +28,7 @@
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Sets;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -81,17 +82,20 @@
   }
 
   /**
-   * Configures a resource file. By default, resources are output in the initial shard.
-   * If a resource file is specified, resources are written to this instead.
+   * Configures a resource file. By default, resources are output in the initial shard. If a
+   * resource file is specified, resources are written to this instead.
+   *
    * @param resourceFile in not {@code null}, the name of a file in which to output resources.
    * @return this object.
    */
+  @CanIgnoreReturnValue
   public SplitZip setResourceFile(String resourceFile) {
     this.resourceFile = resourceFile;
     return this;
   }
 
   // Package private for testing with mock file
+  @CanIgnoreReturnValue
   SplitZip setResourceFile(ZipOut resOut) {
     resourceOut = resOut;
     return this;
@@ -112,12 +116,14 @@
    * @param clFile path of class file list.
    * @return this object
    */
+  @CanIgnoreReturnValue
   public SplitZip setMainClassListFile(String clFile) {
     filterFile = clFile;
     return this;
   }
 
   // Package private for testing with mock file
+  @CanIgnoreReturnValue
   SplitZip setMainClassListStreamForTesting(InputStream clInputStream) {
     filterInputStream = clInputStream;
     return this;
@@ -137,6 +143,7 @@
    * @param flag set to {@code true} to turn on verbose mode.
    * @return this object
    */
+  @CanIgnoreReturnValue
   public SplitZip setVerbose(boolean flag) {
     verbose = flag;
     return this;
@@ -155,6 +162,7 @@
    *
    * @param flag {@code true} will split .dex files; {@code false} treats them as resources
    */
+  @CanIgnoreReturnValue
   public SplitZip setSplitDexedClasses(boolean flag) {
     splitDexFiles = flag;
     return this;
@@ -167,6 +175,7 @@
    * @param date modified date and time to set for entries in output.
    * @return this object.
    */
+  @CanIgnoreReturnValue
   public SplitZip setEntryDate(Date date) {
     this.date = date;
     this.dosTime = date == null ? null : new DosTime(date);
@@ -178,6 +187,7 @@
    *
    * @return this object.
    */
+  @CanIgnoreReturnValue
   public SplitZip useDefaultEntryDate() {
     this.date = DosTime.DOS_EPOCHISH;
     this.dosTime = DosTime.EPOCHISH;
@@ -198,6 +208,7 @@
    * @return this object
    * @throws java.io.IOException
    */
+  @CanIgnoreReturnValue
   public SplitZip addInputs(Iterable<String> inputs) throws IOException {
     for (String i : inputs) {
       addInput(i);
@@ -212,6 +223,7 @@
    * @return this object
    * @throws java.io.IOException
    */
+  @CanIgnoreReturnValue
   public SplitZip addInput(String filename) throws IOException {
     if (filename != null) {
       inputs.add(new ZipIn(new FileInputStream(filename).getChannel(), filename));
@@ -220,6 +232,7 @@
   }
 
   // Package private, for testing using mock file system.
+  @CanIgnoreReturnValue
   SplitZip addInput(ZipIn in) throws IOException {
     Preconditions.checkNotNull(in);
     inputs.add(in);
@@ -233,6 +246,7 @@
    * @return this object
    * @throws java.io.IOException
    */
+  @CanIgnoreReturnValue
   public SplitZip addOutputs(Iterable<String> outputs) throws IOException {
     for (String o : outputs) {
       addOutput(o);
@@ -247,6 +261,7 @@
    * @return this object
    * @throws java.io.IOException
    */
+  @CanIgnoreReturnValue
   public SplitZip addOutput(String output) throws IOException {
     Preconditions.checkNotNull(output);
     outputs.add(new ZipOut(new FileOutputStream(output, false).getChannel(), output));
@@ -254,6 +269,7 @@
   }
 
   // Package private for testing with mock file
+  @CanIgnoreReturnValue
   SplitZip addOutput(ZipOut output) throws IOException {
     Preconditions.checkNotNull(output);
     outputs.add(output);
@@ -261,10 +277,11 @@
   }
 
   /**
-   * Set a predicate to only include files with matching filenames in any of the outputs.  <b>Other
+   * Set a predicate to only include files with matching filenames in any of the outputs. <b>Other
    * zip entries are dropped</b>, regardless of whether they're classes or resources and regardless
    * of whether they're listed in {@link #setMainClassListFile}.
    */
+  @CanIgnoreReturnValue
   public SplitZip setInputFilter(Predicate<String> inputFilter) {
     this.inputFilter = Preconditions.checkNotNull(inputFilter);
     return this;
@@ -277,6 +294,7 @@
    * @return this object
    * @throws java.io.IOException
    */
+  @CanIgnoreReturnValue
   public SplitZip run() throws IOException {
     verbose("SplitZip: Splitting in: " + outputs.size());
     verbose("SplitZip: with filter: " + filterFile);
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/ZipIn.java b/src/tools/android/java/com/google/devtools/build/android/ziputils/ZipIn.java
index 078a5c5..be3f04f 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/ZipIn.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/ZipIn.java
@@ -22,6 +22,7 @@
 import static com.google.devtools.build.android.ziputils.EndOfCentralDirectory.ENDSUB;
 
 import com.google.common.primitives.UnsignedInts;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -565,8 +566,10 @@
 
     /**
      * Sets the header of this zip entry.
+     *
      * @return this object.
      */
+    @CanIgnoreReturnValue
     public ZipEntry withHeader(LocalFileHeader header) {
       this.header = header;
       return this;
@@ -581,8 +584,10 @@
 
     /**
      * Sets the data descriptor of this zip entry.
+     *
      * @return this object.
      */
+    @CanIgnoreReturnValue
     public ZipEntry withDescriptor(DataDescriptor descriptor) {
       this.descriptor = descriptor;
       return this;
@@ -597,8 +602,10 @@
 
     /**
      * Sets the byte buffer providing access to the raw content of this zip entry.
+     *
      * @return this object
      */
+    @CanIgnoreReturnValue
     public ZipEntry withContent(ByteBuffer content) {
       this.content = content;
       return this;
@@ -613,8 +620,10 @@
 
     /**
      * Sets the central directory entry for this zip entry.
+     *
      * @return this object.
      */
+    @CanIgnoreReturnValue
     public ZipEntry withEntry(DirectoryEntry entry) {
       this.entry = entry;
       return this;
@@ -629,8 +638,10 @@
 
     /**
      * Sets the status code for this zip entry.
+     *
      * @return this object.
      */
+    @CanIgnoreReturnValue
     public ZipEntry withCode(Status code) {
       this.code = code;
       return this;