diff --git a/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java b/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
index 22e0f8a..6db5b04 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
@@ -25,11 +25,13 @@
 /** A representation of a list of arguments. */
 public abstract class CommandLine {
 
-  public static final CommandLine EMPTY = new EmptyCommandLine();
+  public static CommandLine empty() {
+    return EmptyCommandLine.INSTANCE;
+  }
 
   /** Returns a {@link CommandLine} backed by the given list of arguments. */
   public static CommandLine of(ImmutableList<String> arguments) {
-    return arguments.isEmpty() ? CommandLine.EMPTY : new SimpleCommandLine(arguments);
+    return arguments.isEmpty() ? empty() : new SimpleCommandLine(arguments);
   }
 
   /**
@@ -40,7 +42,7 @@
     if (args.isEmpty()) {
       return commandLine;
     }
-    if (commandLine == EMPTY) {
+    if (commandLine == EmptyCommandLine.INSTANCE) {
       return CommandLine.of(args);
     }
     return new SuffixedCommandLine(args, commandLine);
@@ -126,6 +128,8 @@
       throws CommandLineExpansionException, InterruptedException;
 
   private static final class EmptyCommandLine extends AbstractCommandLine {
+    private static final EmptyCommandLine INSTANCE = new EmptyCommandLine();
+
     @Override
     public ImmutableList<String> arguments() {
       return ImmutableList.of();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
index dca5aea..58fbae4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
@@ -526,10 +526,10 @@
     if (!ruleContext.getRule().isAttrDefined("args", Type.STRING_LIST)) {
       // Some non-_binary rules create RunfilesSupport instances; it is fine to not have an args
       // attribute here.
-      return CommandLine.EMPTY;
+      return CommandLine.empty();
     }
     ImmutableList<String> args = ruleContext.getExpander().withDataLocations().tokenized("args");
-    return args.isEmpty() ? CommandLine.EMPTY : CommandLine.of(args);
+    return args.isEmpty() ? CommandLine.empty() : CommandLine.of(args);
   }
 
   private static ActionEnvironment computeActionEnvironment(RuleContext ruleContext)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLine.java
index 335df8c..11e23a3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLine.java
@@ -664,7 +664,7 @@
 
     CommandLine build(boolean flagPerLine) {
       if (arguments.isEmpty()) {
-        return CommandLine.EMPTY;
+        return CommandLine.empty();
       }
       Object[] args = arguments.toArray();
       return flagPerLine
