Change the name of the OptionsProvider class -> OptionsParsingResult. This is CL 1/3 in order to add a <code>getSkylarkOptions()</code> method to the top level OptionsProvider which is currently known as OptionsClassProvider.

OptionsClassProvider will be renamed to OptionsProvider in CL 2/3 in this series to better reflect the fact that the class will be a more general options provider instead of specifically an options ~class~ provider. This requires changing the current OptionsProvider class to something else, which is what this CL is doing.

PiperOrigin-RevId: 208885826
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java
index e34830a..f857cc9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java
@@ -90,7 +90,7 @@
 import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 import com.google.devtools.common.options.OptionsBase;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Map;
@@ -187,7 +187,7 @@
   }
 
   @Override
-  public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) {
+  public void serverInit(OptionsParsingResult startupOptions, ServerBuilder builder) {
     builder.addCommands(new FetchCommand());
     builder.addCommands(new SyncCommand());
     builder.addInfoItems(new RepositoryCacheInfoItem(repositoryCache));
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java b/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
index 202a29b..60fe650 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
@@ -37,7 +37,7 @@
 import com.google.devtools.build.lib.util.AbruptExitException;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.util.EnumSet;
 
@@ -61,7 +61,7 @@
   public void editOptions(OptionsParser optionsParser) { }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     BlazeRuntime runtime = env.getRuntime();
     if (options.getResidue().isEmpty()) {
       env.getReporter().handle(Event.error(String.format(
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java b/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java
index 3ea7364..1f4cf12 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java
@@ -39,7 +39,7 @@
 import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /** Syncs all repositories specifed in the workspace file */
 @Command(
@@ -63,7 +63,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     try {
       env.setupPackageCache(options, env.getRuntime().getDefaultsPackageContent());
       SkyframeExecutor skyframeExecutor = env.getSkyframeExecutor();
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
index e31d00c..20a5446 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
@@ -44,7 +44,7 @@
 import com.google.devtools.build.lib.util.io.OutErr;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.util.Set;
 import java.util.logging.Logger;
@@ -147,8 +147,8 @@
   @Nullable
   @VisibleForTesting
   BuildEventStreamer tryCreateStreamer(
-      OptionsProvider startupOptionsProvider,
-      OptionsProvider optionsProvider,
+      OptionsParsingResult startupOptionsProvider,
+      OptionsParsingResult optionsProvider,
       EventHandler commandLineReporter,
       ModuleEnvironment moduleEnvironment,
       Clock clock,
@@ -216,8 +216,8 @@
       Clock clock,
       BuildEventArtifactUploaderFactoryMap buildEventArtifactUploaderFactoryMap,
       EventHandler commandLineReporter,
-      OptionsProvider startupOptionsProvider,
-      OptionsProvider optionsProvider)
+      OptionsParsingResult startupOptionsProvider,
+      OptionsParsingResult optionsProvider)
       throws IOException, OptionsParsingException {
     T besOptions =
         checkNotNull(
@@ -300,7 +300,8 @@
 
   protected abstract Set<String> whitelistedCommands();
 
-  protected Set<String> keywords(T besOptions, @Nullable OptionsProvider startupOptionsProvider) {
+  protected Set<String> keywords(
+      T besOptions, @Nullable OptionsParsingResult startupOptionsProvider) {
     return besOptions
         .besKeywords
         .stream()
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java
index 66b55e6..9c62a8d 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java
@@ -16,18 +16,18 @@
 
 import static com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader.LOCAL_FILES_UPLOADER;
 
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /** A factory for {@link BuildEventArtifactUploader}. */
 public interface BuildEventArtifactUploaderFactory {
 
   BuildEventArtifactUploaderFactory LOCAL_FILES_UPLOADER_FACTORY =
-      (OptionsProvider options) -> LOCAL_FILES_UPLOADER;
+      (OptionsParsingResult options) -> LOCAL_FILES_UPLOADER;
 
   /**
    * Returns a new instance of a {@link BuildEventArtifactUploader}. The call is responsible for
    * calling {@link BuildEventArtifactUploader#shutdown()} on the returned instance.
    */
-  BuildEventArtifactUploader create(OptionsProvider options);
+  BuildEventArtifactUploader create(OptionsParsingResult options);
 }
 
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
index cafc20a..57d312e 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
@@ -23,7 +23,7 @@
 import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
 import com.google.devtools.build.lib.buildeventstream.BuildEventTransport;
 import com.google.devtools.build.lib.util.AbruptExitException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.util.function.Consumer;
 
@@ -107,7 +107,7 @@
    * @throws IOException Exception propagated from a {@link BuildEventTransport} creation failure.
    */
   public static ImmutableSet<BuildEventTransport> createFromOptions(
-      OptionsProvider options,
+      OptionsParsingResult options,
       BuildEventArtifactUploaderFactoryMap artifactUploaders,
       Consumer<AbruptExitException> exitFunc)
       throws IOException {
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 02a99e7..6599396 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
@@ -35,7 +35,7 @@
 import com.google.devtools.build.lib.util.io.OutErr;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsClassProvider;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -83,8 +83,8 @@
           LoadingPhaseThreadsOption.class);
 
   private BuildRequest(String commandName,
-                       final OptionsProvider options,
-                       final OptionsProvider startupOptions,
+                       final OptionsParsingResult options,
+                       final OptionsParsingResult startupOptions,
                        List<String> targets,
                        OutErr outErr,
                        UUID id,
@@ -301,8 +301,8 @@
     return ImmutableList.copyOf(getBuildOptions().aspects);
   }
 
-  public static BuildRequest create(String commandName, OptionsProvider options,
-      OptionsProvider startupOptions,
+  public static BuildRequest create(String commandName, OptionsParsingResult options,
+      OptionsParsingResult startupOptions,
       List<String> targets, OutErr outErr, UUID commandId, long commandStartTime) {
 
     BuildRequest request = new BuildRequest(commandName, options, startupOptions, targets, outErr,
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/memory/AllocationTrackerModule.java b/src/main/java/com/google/devtools/build/lib/profiler/memory/AllocationTrackerModule.java
index 72f1fe1..f3ebbef 100644
--- a/src/main/java/com/google/devtools/build/lib/profiler/memory/AllocationTrackerModule.java
+++ b/src/main/java/com/google/devtools/build/lib/profiler/memory/AllocationTrackerModule.java
@@ -23,7 +23,7 @@
 import com.google.devtools.build.lib.runtime.WorkspaceBuilder;
 import com.google.devtools.build.lib.syntax.Callstack;
 import com.google.devtools.build.lib.vfs.FileSystem;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.UUID;
 
 /**
@@ -55,7 +55,7 @@
 
   @Override
   public void blazeStartup(
-      OptionsProvider startupOptions,
+      OptionsParsingResult startupOptions,
       BlazeVersionInfo versionInfo,
       UUID instanceId,
       FileSystem fileSystem,
diff --git a/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderFactory.java b/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderFactory.java
index be43302..39d7537 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderFactory.java
@@ -15,7 +15,7 @@
 
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
 import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploaderFactory;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import io.grpc.Context;
 import javax.annotation.Nullable;
 
@@ -40,7 +40,7 @@
   }
 
   @Override
-  public BuildEventArtifactUploader create(OptionsProvider options) {
+  public BuildEventArtifactUploader create(OptionsParsingResult options) {
     return new ByteStreamBuildEventArtifactUploader(uploader.retain(), remoteServerName, ctx,
         remoteInstanceName);
   }
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
index 14f373e..ff7bbac 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
@@ -40,7 +40,7 @@
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.common.options.OptionsBase;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.protobuf.Any;
 import com.google.protobuf.InvalidProtocolBufferException;
 import com.google.rpc.PreconditionFailure;
@@ -71,7 +71,7 @@
       buildEventArtifactUploaderFactoryDelegate = new BuildEventArtifactUploaderFactoryDelegate();
 
   @Override
-  public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) {
+  public void serverInit(OptionsParsingResult startupOptions, ServerBuilder builder) {
     builder.addBuildEventArtifactUploaderFactory(buildEventArtifactUploaderFactoryDelegate, "remote");
   }
 
@@ -310,7 +310,7 @@
     }
 
     @Override
-    public BuildEventArtifactUploader create(OptionsProvider options) {
+    public BuildEventArtifactUploader create(OptionsParsingResult options) {
       BuildEventArtifactUploaderFactory uploaderFactory0 = this.uploaderFactory;
       if (uploaderFactory0 == null) {
         return BuildEventArtifactUploader.LOCAL_FILES_UPLOADER;
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 9e57bf8..db26f14 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
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.vfs.JavaIoFileSystem;
 import com.google.devtools.build.lib.windows.WindowsFileSystem;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
  * Module to provide a {@link FileSystem} instance that uses {@code SHA256} as the default hash
@@ -36,7 +36,7 @@
 public class BazelFileSystemModule extends BlazeModule {
 
   @Override
-  public void globalInit(OptionsProvider startupOptionsProvider) throws AbruptExitException {
+  public void globalInit(OptionsParsingResult startupOptionsProvider) throws AbruptExitException {
     BlazeServerStartupOptions startupOptions =
         Preconditions.checkNotNull(
             startupOptionsProvider.getOptions(BlazeServerStartupOptions.class));
@@ -60,7 +60,7 @@
   }
 
   @Override
-  public FileSystem getFileSystem(OptionsProvider startupOptions) {
+  public FileSystem getFileSystem(OptionsParsingResult startupOptions) {
     if ("0".equals(System.getProperty("io.bazel.EnableJni"))) {
       // Ignore UnixFileSystem, to be used for bootstrapping.
       return OS.getCurrent() == OS.WINDOWS ? new WindowsFileSystem() : new JavaIoFileSystem();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommand.java
index f1ffeec..80a64a7 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommand.java
@@ -14,19 +14,19 @@
 package com.google.devtools.build.lib.runtime;
 
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
- * Interface implemented by Blaze commands. In addition to implementing this interface, each
- * command must be annotated with a {@link Command} annotation.
+ * Interface implemented by Blaze commands. In addition to implementing this interface, each command
+ * must be annotated with a {@link Command} annotation.
  */
 public interface BlazeCommand {
   /**
-   * This method provides the imperative portion of the command. It takes a {@link OptionsProvider}
-   * instance {@code options}, which provides access to the options instances via {@link
-   * OptionsProvider#getOptions(Class)}, and access to the residue (the remainder of the command
-   * line) via {@link OptionsProvider#getResidue()}. The framework parses and makes available
-   * exactly the options that the command class specifies via the annotation {@link
+   * This method provides the imperative portion of the command. It takes a {@link
+   * OptionsParsingResult} instance {@code options}, which provides access to the options instances
+   * via {@link OptionsParsingResult#getOptions(Class)}, and access to the residue (the remainder of
+   * the command line) via {@link OptionsParsingResult#getResidue()}. The framework parses and makes
+   * available exactly the options that the command class specifies via the annotation {@link
    * Command#options()}. The command indicates success / failure via its return value, which becomes
    * the Unix exit status of the Blaze client process. It may indicate that the server needs to be
    * shut down or that a particular binary needs to be exec()ed on the terminal where Blaze was
@@ -37,12 +37,11 @@
    *     in {@link Command#options()}.
    * @return The Unix exit status for the Blaze client.
    */
-  BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options);
+  BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options);
 
   /**
-   * Allows the command to provide command-specific option defaults and/or
-   * requirements. This method is called after all command-line and rc file options have been
-   * parsed.
+   * Allows the command to provide command-specific option defaults and/or requirements. This method
+   * is called after all command-line and rc file options have been parsed.
    *
    * @param optionsParser the options parser for the current command
    */
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
index 70ae168..99bbd81 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
@@ -47,7 +47,7 @@
 import com.google.devtools.common.options.OpaqueOptionsData;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -252,7 +252,7 @@
             createOptionsParser(command),
             invocationPolicy);
     ExitCode earlyExitCode = optionHandler.parseOptions(args, storedEventHandler);
-    OptionsProvider options = optionHandler.getOptionsResult();
+    OptionsParsingResult options = optionHandler.getOptionsResult();
 
     CommandLineEvent originalCommandLineEvent =
         new CommandLineEvent.OriginalCommandLineEvent(
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 5f2bb66..806ca40 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
@@ -37,7 +37,7 @@
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsClassProvider;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.util.UUID;
 import javax.annotation.Nullable;
@@ -70,7 +70,7 @@
    *
    * @throws AbruptExitException to shut down the server immediately
    */
-  public void globalInit(OptionsProvider startupOptions) throws AbruptExitException {
+  public void globalInit(OptionsParsingResult startupOptions) throws AbruptExitException {
   }
 
   /**
@@ -82,7 +82,7 @@
    *
    * @param startupOptions the server's startup options
    */
-  public FileSystem getFileSystem(OptionsProvider startupOptions) throws AbruptExitException {
+  public FileSystem getFileSystem(OptionsParsingResult startupOptions) throws AbruptExitException {
     return null;
   }
 
@@ -99,7 +99,7 @@
    * @throws AbruptExitException to shut down the server immediately
    */
   public void blazeStartup(
-      OptionsProvider startupOptions,
+      OptionsParsingResult startupOptions,
       BlazeVersionInfo versionInfo,
       UUID instanceId,
       FileSystem fileSystem,
@@ -117,7 +117,7 @@
    *
    * @throws AbruptExitException to shut down the server immediately
    */
-  public void serverInit(OptionsProvider startupOptions, ServerBuilder builder)
+  public void serverInit(OptionsParsingResult startupOptions, ServerBuilder builder)
       throws AbruptExitException {
   }
 
@@ -148,13 +148,13 @@
 
   /**
    * Called to notify modules that the given command is about to be executed. This allows capturing
-   * the {@link com.google.common.eventbus.EventBus}, {@link Command}, or {@link OptionsProvider}.
+   * the {@link com.google.common.eventbus.EventBus}, {@link Command}, or {@link
+   * OptionsParsingResult}.
    *
    * @param env the command
    * @throws AbruptExitException modules can throw this exception to abort the command
    */
-  public void beforeCommand(CommandEnvironment env) throws AbruptExitException {
-  }
+  public void beforeCommand(CommandEnvironment env) throws AbruptExitException {}
 
   /**
    * Returns additional listeners to the console output stream. Called at the beginning of each
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java
index 4b344ab..733ef84 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeOptionHandler.java
@@ -33,7 +33,7 @@
 import com.google.devtools.common.options.OptionValueDescription;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.devtools.common.options.ParsedOptionDescription;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -84,9 +84,11 @@
     this.invocationPolicy = invocationPolicy;
   }
 
-  // Return options as OptionsProvider so the options can't be easily modified after we've
-  // applied the invocation policy.
-  OptionsProvider getOptionsResult() {
+  /**
+   * Return options as {@link OptionsParsingResult} so the options can't be easily modified after
+   * we've applied the invocation policy.
+   */
+  OptionsParsingResult getOptionsResult() {
     return optionsParser;
   }
 
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 5e052a2..f0a7c17 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
@@ -87,7 +87,7 @@
 import com.google.devtools.common.options.OptionsClassProvider;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.devtools.common.options.TriState;
 import java.io.File;
 import java.io.IOException;
@@ -149,7 +149,7 @@
   private final AtomicInteger storedExitCode = new AtomicInteger();
 
   // We pass this through here to make it available to the MasterLogWriter.
-  private final OptionsProvider startupOptionsProvider;
+  private final OptionsParsingResult startupOptionsProvider;
 
   private final ProjectFile.Provider projectFileProvider;
   @Nullable private final InvocationPolicy moduleInvocationPolicy;
@@ -174,7 +174,7 @@
       ActionKeyContext actionKeyContext,
       Clock clock,
       Runnable abruptShutdownHandler,
-      OptionsProvider startupOptionsProvider,
+      OptionsParsingResult startupOptionsProvider,
       Iterable<BlazeModule> blazeModules,
       SubscriberExceptionHandler eventBusExceptionHandler,
       ProjectFile.Provider projectFileProvider,
@@ -559,7 +559,7 @@
     return clock;
   }
 
-  public OptionsProvider getStartupOptionsProvider() {
+  public OptionsParsingResult getStartupOptionsProvider() {
     return startupOptionsProvider;
   }
 
@@ -989,7 +989,7 @@
    * parser can set the source for every option correctly. If that cannot be parsed or is missing,
    * we just report an unknown source for every startup option.
    */
-  private static OptionsProvider parseStartupOptions(
+  private static OptionsParsingResult parseStartupOptions(
       Iterable<BlazeModule> modules, List<String> args) throws OptionsParsingException {
     ImmutableList<Class<? extends OptionsBase>> optionClasses =
         BlazeCommandUtils.getStartupOptions(modules);
@@ -1031,7 +1031,7 @@
   private static BlazeRuntime newRuntime(Iterable<BlazeModule> blazeModules, List<String> args,
       Runnable abruptShutdownHandler)
       throws AbruptExitException, OptionsParsingException {
-    OptionsProvider options = parseStartupOptions(blazeModules, args);
+    OptionsParsingResult options = parseStartupOptions(blazeModules, args);
     for (BlazeModule module : blazeModules) {
       module.globalInit(options);
     }
@@ -1283,7 +1283,7 @@
     private ServerDirectories serverDirectories;
     private Clock clock;
     private Runnable abruptShutdownHandler;
-    private OptionsProvider startupOptionsProvider;
+    private OptionsParsingResult startupOptionsProvider;
     private final List<BlazeModule> blazeModules = new ArrayList<>();
     private SubscriberExceptionHandler eventBusExceptionHandler = new RemoteExceptionHandler();
     private UUID instanceId;
@@ -1402,7 +1402,7 @@
       return this;
     }
 
-    public Builder setStartupOptionsProvider(OptionsProvider startupOptionsProvider) {
+    public Builder setStartupOptionsProvider(OptionsParsingResult startupOptionsProvider) {
       this.startupOptionsProvider = startupOptionsProvider;
       return this;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
index 608bb96..54d04cf 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
@@ -34,7 +34,7 @@
 import com.google.devtools.build.lib.util.LoggingUtil;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.util.List;
 import java.util.logging.Level;
@@ -195,7 +195,7 @@
    *     fully configured at this point.
    */
   public CommandEnvironment initCommand(
-      Command command, OptionsProvider options, List<String> warnings) {
+      Command command, OptionsParsingResult options, List<String> warnings) {
     CommandEnvironment env =
         new CommandEnvironment(
             runtime,
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuiltinCommandModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BuiltinCommandModule.java
index 63896d3c..48b4c0b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BuiltinCommandModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BuiltinCommandModule.java
@@ -30,7 +30,7 @@
 import com.google.devtools.build.lib.runtime.commands.ShutdownCommand;
 import com.google.devtools.build.lib.runtime.commands.TestCommand;
 import com.google.devtools.build.lib.runtime.commands.VersionCommand;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
  * Internal module for the built-in commands.
@@ -43,7 +43,7 @@
   }
 
   @Override
-  public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) {
+  public void serverInit(OptionsParsingResult startupOptions, ServerBuilder builder) {
     builder.addCommands(
         new BuildCommand(),
         new CanonicalizeCommand(),
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 46aa72b..9b0d784 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
@@ -46,7 +46,7 @@
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.common.options.OptionsClassProvider;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
@@ -79,7 +79,7 @@
   private final TimestampGranularityMonitor timestampGranularityMonitor;
   private final Thread commandThread;
   private final Command command;
-  private final OptionsProvider options;
+  private final OptionsParsingResult options;
 
   private String[] crashData;
 
@@ -123,7 +123,7 @@
       EventBus eventBus,
       Thread commandThread,
       Command command,
-      OptionsProvider options,
+      OptionsParsingResult options,
       List<String> warnings) {
     this.runtime = runtime;
     this.workspace = workspace;
@@ -229,7 +229,7 @@
     return command.name();
   }
 
-  public OptionsProvider getOptions() {
+  public OptionsParsingResult getOptions() {
     return options;
   }
 
@@ -561,7 +561,7 @@
    * @throws AbruptExitException if this command is unsuitable to be run as specified
    */
   void beforeCommand(
-      OptionsProvider options,
+      OptionsParsingResult options,
       CommonCommandOptions commonOptions,
       long waitTimeInMs,
       InvocationPolicy invocationPolicy)
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandLineEvent.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandLineEvent.java
index adc9b5a..5eff056 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandLineEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandLineEvent.java
@@ -34,7 +34,7 @@
 import com.google.devtools.common.options.OptionPriority;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.devtools.common.options.ParsedOptionDescription;
 import com.google.devtools.common.options.proto.OptionFilters;
 import com.google.protobuf.InvalidProtocolBufferException;
@@ -61,15 +61,15 @@
   /** A CommandLineEvent that stores functions and values common to both Bazel command lines. */
   public abstract static class BazelCommandLineEvent extends CommandLineEvent {
     protected final String productName;
-    protected final OptionsProvider activeStartupOptions;
+    protected final OptionsParsingResult activeStartupOptions;
     protected final String commandName;
-    protected final OptionsProvider commandOptions;
+    protected final OptionsParsingResult commandOptions;
 
     BazelCommandLineEvent(
         String productName,
-        OptionsProvider activeStartupOptions,
+        OptionsParsingResult activeStartupOptions,
         String commandName,
-        OptionsProvider commandOptions) {
+        OptionsParsingResult commandOptions) {
       this.productName = productName;
       this.activeStartupOptions = activeStartupOptions;
       this.commandName = commandName;
@@ -187,7 +187,7 @@
     public OriginalCommandLineEvent(
         BlazeRuntime runtime,
         String commandName,
-        OptionsProvider commandOptions,
+        OptionsParsingResult commandOptions,
         Optional<List<Pair<String, String>>> originalStartupOptions) {
       this(
           runtime.getProductName(),
@@ -200,9 +200,9 @@
     @VisibleForTesting
     OriginalCommandLineEvent(
         String productName,
-        OptionsProvider activeStartupOptions,
+        OptionsParsingResult activeStartupOptions,
         String commandName,
-        OptionsProvider commandOptions,
+        OptionsParsingResult commandOptions,
         Optional<List<Pair<String, String>>> originalStartupOptions) {
       super(productName, activeStartupOptions, commandName, commandOptions);
       this.originalStartupOptions = originalStartupOptions;
@@ -280,7 +280,7 @@
     public static final String LABEL = "canonical";
 
     public CanonicalCommandLineEvent(
-        BlazeRuntime runtime, String commandName, OptionsProvider commandOptions) {
+        BlazeRuntime runtime, String commandName, OptionsParsingResult commandOptions) {
       this(
           runtime.getProductName(),
           runtime.getStartupOptionsProvider(),
@@ -291,9 +291,9 @@
     @VisibleForTesting
     CanonicalCommandLineEvent(
         String productName,
-        OptionsProvider activeStartupOptions,
+        OptionsParsingResult activeStartupOptions,
         String commandName,
-        OptionsProvider commandOptions) {
+        OptionsParsingResult commandOptions) {
       super(productName, activeStartupOptions, commandName, commandOptions);
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java
index e0b3b60..a5ef728 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.util.LoggingUtil;
 import com.google.devtools.build.lib.util.io.OutErr;
 import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.logging.Level;
@@ -33,7 +33,7 @@
   private OutputStream logOutputStream;
 
   @Override
-  public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) {
+  public void serverInit(OptionsParsingResult startupOptions, ServerBuilder builder) {
     builder.addInfoItems(new CommandLogInfoItem());
   }
 
@@ -64,7 +64,7 @@
   }
 
   static boolean writeCommandLog(BlazeRuntime runtime) {
-    OptionsProvider startupOptionsProvider = runtime.getStartupOptionsProvider();
+    OptionsParsingResult startupOptionsProvider = runtime.getStartupOptionsProvider();
     return startupOptionsProvider.getOptions(BlazeServerStartupOptions.class).writeCommandLog;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/GotOptionsEvent.java b/src/main/java/com/google/devtools/build/lib/runtime/GotOptionsEvent.java
index 00eee34..7acbc16 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/GotOptionsEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/GotOptionsEvent.java
@@ -22,15 +22,15 @@
 import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent;
 import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
 import com.google.devtools.build.lib.util.OptionsUtils;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.Collection;
 import java.util.Objects;
 
 /** An event in which the command line options are discovered. */
 public class GotOptionsEvent implements BuildEventWithOrderConstraint {
 
-  private final OptionsProvider startupOptions;
-  private final OptionsProvider options;
+  private final OptionsParsingResult startupOptions;
+  private final OptionsParsingResult options;
   private final InvocationPolicy invocationPolicy;
 
   /**
@@ -40,23 +40,21 @@
    * @param options the parsed options
    */
   public GotOptionsEvent(
-      OptionsProvider startupOptions, OptionsProvider options, InvocationPolicy invocationPolicy) {
+      OptionsParsingResult startupOptions,
+      OptionsParsingResult options,
+      InvocationPolicy invocationPolicy) {
     this.startupOptions = startupOptions;
     this.options = options;
     this.invocationPolicy = invocationPolicy;
   }
 
-  /**
-   * @return the parsed startup options
-   */
-  public OptionsProvider getStartupOptions() {
+  /** @return the parsed startup options */
+  public OptionsParsingResult getStartupOptions() {
     return startupOptions;
   }
 
-  /**
-   * @return the parsed options.
-   */
-  public OptionsProvider getOptions() {
+  /** @return the parsed options. */
+  public OptionsParsingResult getOptions() {
     return options;
   }
 
@@ -80,7 +78,7 @@
     BuildEventStreamProtos.OptionsParsed.Builder optionsBuilder =
         BuildEventStreamProtos.OptionsParsed.newBuilder();
 
-    OptionsProvider options = getStartupOptions();
+    OptionsParsingResult options = getStartupOptions();
     optionsBuilder.addAllStartupOptions(OptionsUtils.asArgumentList(options));
     optionsBuilder.addAllExplicitStartupOptions(
         OptionsUtils.asArgumentList(
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java b/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java
index 320cc54..74e041b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TerminalTestResultNotifier.java
@@ -26,7 +26,7 @@
 import com.google.devtools.common.options.OptionDocumentationCategory;
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -76,13 +76,13 @@
   }
 
   private final AnsiTerminalPrinter printer;
-  private final OptionsProvider options;
+  private final OptionsParsingResult options;
   private final TestSummaryOptions summaryOptions;
 
   /**
    * @param printer The terminal to print to
    */
-  public TerminalTestResultNotifier(AnsiTerminalPrinter printer, OptionsProvider options) {
+  public TerminalTestResultNotifier(AnsiTerminalPrinter printer, OptionsParsingResult options) {
     this.printer = printer;
     this.options = options;
     this.summaryOptions = options.getOptions(TestSummaryOptions.class);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/AqueryCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/AqueryCommand.java
index ec8ca19..1e8b991 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/AqueryCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/AqueryCommand.java
@@ -33,7 +33,7 @@
 import com.google.devtools.common.options.OptionPriority.PriorityCategory;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashSet;
@@ -66,7 +66,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     // TODO(twerth): Reduce overlap with CqueryCommand.
     env.getReporter()
         .handle(
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
index b217e93..d2c5471 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.runtime.LoadingPhaseThreadsOption;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.List;
 
 /**
@@ -65,7 +65,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     BlazeRuntime runtime = env.getRuntime();
     List<String> targets;
     try (SilentCloseable closeable = Profiler.instance().profile("ProjectFileSupport.getTargets")) {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java
index f181c0b..bdd9894 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java
@@ -32,7 +32,7 @@
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.Collection;
 import java.util.List;
 import java.util.logging.Level;
@@ -127,7 +127,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     BlazeRuntime runtime = env.getRuntime();
     Options canonicalizeOptions = options.getOptions(Options.class);
     String commandName = canonicalizeOptions.forCommand;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
index d848d47..8b42274 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CleanCommand.java
@@ -36,7 +36,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.FileDescriptor;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -99,14 +99,14 @@
 
   /** Posted on the public event stream to announce that a clean is happening. */
   public static class CleanStartingEvent {
-    private final OptionsProvider optionsProvider;
+    private final OptionsParsingResult optionsParsingResult;
 
-    public CleanStartingEvent(OptionsProvider optionsProvider) {
-      this.optionsProvider = optionsProvider;
+    public CleanStartingEvent(OptionsParsingResult optionsParsingResult) {
+      this.optionsParsingResult = optionsParsingResult;
     }
 
-    public OptionsProvider getOptionsProvider() {
-      return optionsProvider;
+    public OptionsParsingResult getOptionsProvider() {
+      return optionsParsingResult;
     }
   }
 
@@ -124,7 +124,7 @@
   private static final Logger logger = Logger.getLogger(CleanCommand.class.getName());
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     Options cleanOptions = options.getOptions(Options.class);
     boolean async = cleanOptions.async;
     env.getEventBus().post(new NoBuildEvent());
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CqueryCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CqueryCommand.java
index 9574e58..131ce46 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CqueryCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CqueryCommand.java
@@ -33,7 +33,7 @@
 import com.google.devtools.common.options.OptionPriority.PriorityCategory;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashSet;
@@ -76,7 +76,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     if (options.getResidue().isEmpty()) {
       env.getReporter()
           .handle(
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
index a396c80..ece5e19 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
@@ -42,7 +42,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
@@ -187,7 +187,7 @@
   public void editOptions(OptionsParser optionsParser) {}
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     BlazeRuntime runtime = env.getRuntime();
     DumpOptions dumpOptions = options.getOptions(DumpOptions.class);
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java
index acd43a0..16d2d75 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java
@@ -50,7 +50,7 @@
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParser.HelpVerbosity;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.Base64;
 import java.util.Collections;
@@ -121,7 +121,7 @@
   public void editOptions(OptionsParser optionsParser) {}
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     env.getEventBus().post(new NoBuildEvent());
 
     BlazeRuntime runtime = env.getRuntime();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
index b2e2ec5..5e65c97 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
@@ -35,7 +35,7 @@
 import com.google.devtools.common.options.OptionMetadataTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
@@ -112,10 +112,10 @@
 
   @Override
   public BlazeCommandResult exec(
-      final CommandEnvironment env, final OptionsProvider optionsProvider) {
+      final CommandEnvironment env, final OptionsParsingResult optionsParsingResult) {
     final BlazeRuntime runtime = env.getRuntime();
     env.getReporter().switchToAnsiAllowingHandler();
-    Options infoOptions = optionsProvider.getOptions(Options.class);
+    Options infoOptions = optionsParsingResult.getOptions(Options.class);
     OutErr outErr = env.getReporter().getOutErr();
     // Creating a BuildConfiguration is expensive and often unnecessary. Delay the creation until
     // it is needed. We memoize so that it's cached intra-command (it's still created freshly on
@@ -128,14 +128,14 @@
                 // the package path. Since info inherits all the build options, all the necessary
                 // information is available here.
                 env.setupPackageCache(
-                    optionsProvider, runtime.getDefaultsPackageContent(optionsProvider));
+                    optionsParsingResult, runtime.getDefaultsPackageContent(optionsParsingResult));
                 env.getSkyframeExecutor()
                     .setConfigurationFragmentFactories(runtime.getConfigurationFragmentFactories());
                 // TODO(bazel-team): What if there are multiple configurations? [multi-config]
                 return env.getSkyframeExecutor()
                     .getConfiguration(
                         env.getReporter(),
-                        runtime.createBuildOptions(optionsProvider),
+                        runtime.createBuildOptions(optionsParsingResult),
                         /*keepGoing=*/ true);
               } catch (InvalidConfigurationException e) {
                 env.getReporter().handle(Event.error(e.getMessage()));
@@ -149,7 +149,7 @@
               }
             });
 
-    Map<String, InfoItem> items = getInfoItemMap(env, optionsProvider);
+    Map<String, InfoItem> items = getInfoItemMap(env, optionsParsingResult);
 
     try {
       if (infoOptions.showMakeEnvironment) {
@@ -160,7 +160,7 @@
         }
       }
 
-      List<String> residue = optionsProvider.getResidue();
+      List<String> residue = optionsParsingResult.getResidue();
       if (residue.size() > 1) {
         env.getReporter().handle(Event.error("at most one key may be specified"));
         return BlazeCommandResult.exitCode(ExitCode.COMMAND_LINE_ERROR);
@@ -206,7 +206,7 @@
     return BlazeCommandResult.exitCode(ExitCode.SUCCESS);
   }
 
-  static Map<String, InfoItem> getHardwiredInfoItemMap(OptionsProvider commandOptions,
+  static Map<String, InfoItem> getHardwiredInfoItemMap(OptionsParsingResult commandOptions,
       String productName) {
     List<InfoItem> hardwiredInfoItems =
         ImmutableList.<InfoItem>of(
@@ -251,9 +251,9 @@
   }
 
   static Map<String, InfoItem> getInfoItemMap(
-      CommandEnvironment env, OptionsProvider optionsProvider) {
+      CommandEnvironment env, OptionsParsingResult optionsParsingResult) {
     Map<String, InfoItem> items = new TreeMap<>(env.getRuntime().getInfoItems());
-    items.putAll(getHardwiredInfoItemMap(optionsProvider, env.getRuntime().getProductName()));
+    items.putAll(getHardwiredInfoItemMap(optionsParsingResult, env.getRuntime().getProductName()));
     return items;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java
index 004335d..b209a5d0 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoItem.java
@@ -38,7 +38,7 @@
 import com.google.devtools.build.lib.util.ProcessUtils;
 import com.google.devtools.build.lib.util.StringUtilities;
 import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
@@ -308,9 +308,9 @@
    * Info item for package_path
    */
   public static final class PackagePathInfoItem extends InfoItem {
-    private final OptionsProvider commandOptions;
+    private final OptionsParsingResult commandOptions;
 
-    public PackagePathInfoItem(OptionsProvider commandOptions) {
+    public PackagePathInfoItem(OptionsParsingResult commandOptions) {
       super("package_path",
           "The search path for resolving package labels.",
           false);
@@ -659,9 +659,9 @@
    */
   @Deprecated
   public static final class DefaultPackagePathInfoItem extends InfoItem {
-    private final OptionsProvider commandOptions;
+    private final OptionsParsingResult commandOptions;
 
-    public DefaultPackagePathInfoItem(OptionsProvider commandOptions) {
+    public DefaultPackagePathInfoItem(OptionsParsingResult commandOptions) {
       super("default-package-path",
           "The default package path",
           true);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java
index a7ca2c6..d181bd2 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/LicenseCommand.java
@@ -23,7 +23,7 @@
 import com.google.devtools.build.lib.util.ResourceFileLoader;
 import com.google.devtools.build.lib.util.io.OutErr;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.io.UncheckedIOException;
 import java.nio.file.FileVisitResult;
@@ -50,7 +50,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     env.getEventBus().post(new NoBuildEvent());
     OutErr outErr = env.getReporter().getOutErr();
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
index 46507cc..b7ea9f4 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
@@ -57,7 +57,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.protobuf.TextFormat;
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
@@ -100,7 +100,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     LoadingOptions loadingOptions =
         options.getOptions(LoadingOptions.class);
 
@@ -117,15 +117,19 @@
    */
   private class PrintActionRunner {
     private final boolean compileOneDependency;
-    private final OptionsProvider options;
+    private final OptionsParsingResult options;
     private final OutErr outErr;
     private final List<String> requestedTargets;
     private final boolean keepGoing;
     private final ExtraActionSummary.Builder summaryBuilder;
     private final Predicate<ActionAnalysisMetadata> actionMnemonicMatcher;
 
-    public PrintActionRunner(boolean compileOneDependency, OptionsProvider options, OutErr outErr,
-        List<String> requestedTargets, final Set<String> printActionMnemonics) {
+    public PrintActionRunner(
+        boolean compileOneDependency,
+        OptionsParsingResult options,
+        OutErr outErr,
+        List<String> requestedTargets,
+        final Set<String> printActionMnemonics) {
       this.compileOneDependency = compileOneDependency;
       this.options = options;
       this.outErr = outErr;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java
index 971bd90..8590ea4 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java
@@ -43,7 +43,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
@@ -213,7 +213,7 @@
   public void editOptions(OptionsParser optionsParser) {}
 
   @Override
-  public BlazeCommandResult exec(final CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(final CommandEnvironment env, OptionsParsingResult options) {
     ProfileOptions opts =
         options.getOptions(ProfileOptions.class);
 
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 d4d54b7..39701de 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
@@ -27,7 +27,7 @@
 import com.google.devtools.common.options.OptionPriority.PriorityCategory;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.List;
 
 /**
@@ -89,7 +89,7 @@
    * process it.
    */
   public static List<String> getTargets(
-      ProjectFile.Provider projectFileProvider, OptionsProvider options) {
+      ProjectFile.Provider projectFileProvider, OptionsParsingResult options) {
     List<String> targets = options.getResidue();
     if (projectFileProvider != null && !targets.isEmpty()
         && targets.get(0).startsWith(PROJECT_FILE_PREFIX)) {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java
index ae80554..659d6c5 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java
@@ -50,7 +50,7 @@
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.skyframe.WalkableGraph;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -89,7 +89,7 @@
    *        (only when --keep_going is in effect.)
    */
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     BlazeRuntime runtime = env.getRuntime();
     QueryOptions queryOptions = options.getOptions(QueryOptions.class);
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index 67a00b6..be09a8b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -77,7 +77,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.protobuf.ByteString;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -233,7 +233,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     RunOptions runOptions = options.getOptions(RunOptions.class);
     // This list should look like: ["//executable:target", "arg1", "arg2"]
     List<String> targetAndArgs = options.getResidue();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ShutdownCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ShutdownCommand.java
index 2047679..f6b6c50 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ShutdownCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ShutdownCommand.java
@@ -23,7 +23,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
  * The 'blaze shutdown' command.
@@ -55,7 +55,7 @@
   public void editOptions(OptionsParser optionsParser) {}
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     int limit = options.getOptions(Options.class).heapSizeLimit;
 
     // Iff limit is non-zero, shut down the server if total memory exceeds the
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/TestCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/TestCommand.java
index 5887aa5..1c380f9 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/TestCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/TestCommand.java
@@ -42,7 +42,7 @@
 import com.google.devtools.common.options.OptionPriority.PriorityCategory;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.Collection;
 import java.util.List;
 
@@ -82,7 +82,7 @@
   }
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     TestOutputFormat testOutput = options.getOptions(ExecutionOptions.class).testOutput;
     if (testOutput == TestStrategy.TestOutputFormat.STREAMED) {
       env.getReporter().handle(Event.warn(
@@ -107,7 +107,7 @@
   }
 
   private BlazeCommandResult doTest(CommandEnvironment env,
-      OptionsProvider options,
+      OptionsParsingResult options,
       AggregatingTestListener testListener) {
     BlazeRuntime runtime = env.getRuntime();
     // Run simultaneous build and test.
@@ -176,7 +176,7 @@
   private boolean analyzeTestResults(Collection<ConfiguredTarget> testTargets,
                                      Collection<ConfiguredTarget> skippedTargets,
                                      AggregatingTestListener listener,
-                                     OptionsProvider options) {
+                                     OptionsParsingResult options) {
     TestResultNotifier notifier = new TerminalTestResultNotifier(printer, options);
     return listener.getAnalyzer().differentialAnalyzeAndReport(
         testTargets, skippedTargets, listener, notifier);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/VersionCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/VersionCommand.java
index 729c3b7..ce0b18f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/VersionCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/VersionCommand.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
  * The 'blaze version' command, which informs users about the blaze version
@@ -39,7 +39,7 @@
   public void editOptions(OptionsParser optionsParser) {}
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     BlazeVersionInfo info = BlazeVersionInfo.instance();
     if (info.getSummary() == null) {
       env.getReporter().handle(Event.error("Version information not available"));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
index e5a3329..3b61fb4 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
@@ -51,7 +51,7 @@
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -141,7 +141,7 @@
   private static final String NO_TARGET_MESSAGE = "No targets found to run";
 
   @Override
-  public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+  public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
     Options mobileInstallOptions = options.getOptions(Options.class);
     WriteAdbArgsAction.Options adbOptions = options.getOptions(WriteAdbArgsAction.Options.class);
 
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallModule.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallModule.java
index 5942699..5ae08e8 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallModule.java
@@ -15,14 +15,14 @@
 
 import com.google.devtools.build.lib.runtime.BlazeModule;
 import com.google.devtools.build.lib.runtime.ServerBuilder;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 
 /**
  * Module for mobile_install.
  */
 public final class MobileInstallModule extends BlazeModule {
   @Override
-  public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) {
+  public void serverInit(OptionsParsingResult startupOptions, ServerBuilder builder) {
     builder.addCommands(
         new MobileInstallCommand());
   }
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
index 29b6065..ee6a959 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
@@ -28,7 +28,7 @@
 import com.google.devtools.build.lib.exec.SpawnRunner.SpawnExecutionContext;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
@@ -124,7 +124,7 @@
    * reference to the full set of build options (and also for performance, since this only needs to
    * be checked once-per-build).
    */
-  static boolean shouldAllowNetwork(OptionsProvider buildOptions) {
+  static boolean shouldAllowNetwork(OptionsParsingResult buildOptions) {
     // Allow network access, when --java_debug is specified, otherwise we can't connect to the
     // remote debug server of the test. This intentionally overrides the "block-network" execution
     // tag.
diff --git a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java
index 029d08c..343c9d5 100644
--- a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java
@@ -18,7 +18,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.common.options.Converter;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.devtools.common.options.ParsedOptionDescription;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -51,7 +51,7 @@
    * Returns a string representation of the non-hidden explicitly or implicitly
    * specified options; option values are shell-escaped.
    */
-  public static String asShellEscapedString(OptionsProvider options) {
+  public static String asShellEscapedString(OptionsParsingResult options) {
     return asShellEscapedString(options.asCompleteListOfParsedOptions());
   }
 
@@ -74,7 +74,7 @@
    * Return a representation of the non-hidden specified options, as a list of string. No escaping
    * is done.
    */
-  public static List<String> asArgumentList(OptionsProvider options) {
+  public static List<String> asArgumentList(OptionsParsingResult options) {
     return asArgumentList(options.asCompleteListOfParsedOptions());
   }
 
@@ -83,7 +83,7 @@
    * filtering out any sensitive options; option values are shell-escaped.
    */
   public static String asFilteredShellEscapedString(
-      OptionsProvider options, Iterable<ParsedOptionDescription> optionsList) {
+      OptionsParsingResult options, Iterable<ParsedOptionDescription> optionsList) {
     return asShellEscapedString(optionsList);
   }
 
@@ -92,7 +92,7 @@
    * specified options, filtering out any sensitive options; option values are
    * shell-escaped.
    */
-  public static String asFilteredShellEscapedString(OptionsProvider options) {
+  public static String asFilteredShellEscapedString(OptionsParsingResult options) {
     return asFilteredShellEscapedString(options, options.asCompleteListOfParsedOptions());
   }
 
diff --git a/src/main/java/com/google/devtools/common/options/OptionsParser.java b/src/main/java/com/google/devtools/common/options/OptionsParser.java
index e1c7cbb..9810988 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsParser.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParser.java
@@ -66,7 +66,7 @@
  *
  * @see Options a simpler class which you can use if you only have one options specification class
  */
-public class OptionsParser implements OptionsProvider {
+public class OptionsParser implements OptionsParsingResult {
 
   // TODO(b/65049598) make ConstructionException checked.
   /**
diff --git a/src/main/java/com/google/devtools/common/options/OptionsProvider.java b/src/main/java/com/google/devtools/common/options/OptionsParsingResult.java
similarity index 97%
rename from src/main/java/com/google/devtools/common/options/OptionsProvider.java
rename to src/main/java/com/google/devtools/common/options/OptionsParsingResult.java
index 3168564..655b856 100644
--- a/src/main/java/com/google/devtools/common/options/OptionsProvider.java
+++ b/src/main/java/com/google/devtools/common/options/OptionsParsingResult.java
@@ -21,7 +21,7 @@
  * A read-only interface for options parser results, which does not allow any
  * further parsing of options.
  */
-public interface OptionsProvider extends OptionsClassProvider {
+public interface OptionsParsingResult extends OptionsClassProvider {
 
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java b/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java
index 8657132..6abd99d 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java
@@ -42,7 +42,7 @@
 import com.google.devtools.common.options.Options;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -83,7 +83,7 @@
 
   @Mock public BuildEventStreamOptions bepOptions;
 
-  @Mock public OptionsProvider optionsProvider;
+  @Mock public OptionsParsingResult optionsProvider;
 
   @Mock public ModuleEnvironment moduleEnvironment;
 
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactoryMapTest.java b/src/test/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactoryMapTest.java
index 39dc16b..8a645e5 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactoryMapTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactoryMapTest.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
@@ -38,7 +38,7 @@
   @Before
   public void setUp() {
     noConversionUploaderFactory =
-        (OptionsProvider options) ->
+        (OptionsParsingResult options) ->
             new BuildEventArtifactUploader() {
               @Override
               public ListenableFuture<PathConverter> upload(Map<Path, LocalFile> files) {
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/AbstractCommandTest.java b/src/test/java/com/google/devtools/build/lib/runtime/AbstractCommandTest.java
index a05bd37..32a890f 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/AbstractCommandTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/AbstractCommandTest.java
@@ -24,7 +24,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -69,7 +69,7 @@
 
   private static class ConcreteCommand implements BlazeCommand {
     @Override
-    public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+    public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
       throw new UnsupportedOperationException();
     }
 
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
index 9e1b08a..fbf8c7b 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
@@ -38,7 +38,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -81,7 +81,7 @@
   private static class ReportNumCommand implements BlazeCommand {
 
     @Override
-    public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+    public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
       FooOptions fooOptions = options.getOptions(FooOptions.class);
       env.getReporter().getOutErr().printOut("" + fooOptions.numOption);
       return BlazeCommandResult.exitCode(ExitCode.SUCCESS);
@@ -100,7 +100,7 @@
   private static class ReportAllCommand implements BlazeCommand {
 
     @Override
-    public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+    public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
       FooOptions fooOptions = options.getOptions(FooOptions.class);
       env.getReporter()
           .getOutErr()
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
index 15b15f8..fd76f87 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import com.google.devtools.common.options.TestOptions;
 import java.util.Arrays;
 import org.junit.Before;
@@ -103,7 +103,7 @@
   )
   private static class C0Command implements BlazeCommand {
     @Override
-    public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+    public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
       throw new UnsupportedOperationException();
     }
 
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
index 0d39731..de6639f 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
@@ -36,7 +36,7 @@
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
-import com.google.devtools.common.options.OptionsProvider;
+import com.google.devtools.common.options.OptionsParsingResult;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.BrokenBarrierException;
@@ -92,7 +92,7 @@
     }
 
     @Override
-    public BlazeCommandResult exec(CommandEnvironment env, OptionsProvider options) {
+    public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
       CommandState commandState = new CommandState(
           env, options.getOptions(WaitOptions.class).expectInterruption, isTestShuttingDown);
       commandStateHandoff.getAndSet(null).set(commandState);