diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index fd2ecb3..5f65f6a 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.Reporter;
 import java.nio.file.Path;
 import java.util.ArrayList;
@@ -35,7 +36,7 @@
   private final StringConsumer mainDexListConsumer;
   private final int minApiLevel;
   private final Reporter reporter;
-  private final boolean enableDesugaring;
+  private final DesugarState desugarState;
   private final boolean includeClassesChecksum;
   private final boolean optimizeMultidexForLinearAlloc;
   private final BiPredicate<String, Long> dexClassChecksumFilter;
@@ -48,7 +49,7 @@
     mode = null;
     minApiLevel = 0;
     reporter = new Reporter();
-    enableDesugaring = true;
+    desugarState = DesugarState.ON;
     includeClassesChecksum = false;
     optimizeMultidexForLinearAlloc = false;
     dexClassChecksumFilter = (name, checksum) -> true;
@@ -62,7 +63,7 @@
       StringConsumer mainDexListConsumer,
       int minApiLevel,
       Reporter reporter,
-      boolean enableDesugaring,
+      DesugarState desugarState,
       boolean optimizeMultidexForLinearAlloc,
       boolean includeClassesChecksum,
       BiPredicate<String, Long> dexClassChecksumFilter,
@@ -75,7 +76,7 @@
     this.mainDexListConsumer = mainDexListConsumer;
     this.minApiLevel = minApiLevel;
     this.reporter = reporter;
-    this.enableDesugaring = enableDesugaring;
+    this.desugarState = desugarState;
     this.optimizeMultidexForLinearAlloc = optimizeMultidexForLinearAlloc;
     this.includeClassesChecksum = includeClassesChecksum;
     this.dexClassChecksumFilter = dexClassChecksumFilter;
@@ -113,7 +114,11 @@
 
   /** Get the use-desugaring state. True if enabled, false otherwise. */
   public boolean getEnableDesugaring() {
-    return enableDesugaring;
+    return desugarState == DesugarState.ON;
+  }
+
+  DesugarState getDesugarState() {
+    return desugarState;
   }
 
   /** True if the output dex files has checksum information encoded in it. False otherwise. */
@@ -161,7 +166,7 @@
 
     private CompilationMode mode;
     private int minApiLevel = 0;
-    private boolean disableDesugaring = false;
+    private DesugarState desugarState = DesugarState.ON;
     private List<StringResource> desugaredLibraryConfigurationResources = new ArrayList<>();
     private boolean includeClassesChecksum = false;
     private boolean lookupLibraryBeforeProgram = true;
@@ -411,7 +416,7 @@
 
     @Deprecated
     public B setEnableDesugaring(boolean enableDesugaring) {
-      this.disableDesugaring = !enableDesugaring;
+      this.desugarState = enableDesugaring ? DesugarState.ON : DesugarState.OFF;
       return self();
     }
 
@@ -427,13 +432,17 @@
      * <p>Note that even for API 27, desugaring is still required for closures support on ART.
      */
     public B setDisableDesugaring(boolean disableDesugaring) {
-      this.disableDesugaring = disableDesugaring;
+      this.desugarState = disableDesugaring ? DesugarState.OFF : DesugarState.ON;
       return self();
     }
 
     /** Is desugaring forcefully disabled. */
     public boolean getDisableDesugaring() {
-      return disableDesugaring;
+      return desugarState == DesugarState.OFF;
+    }
+
+    DesugarState getDesugaringState() {
+      return desugarState;
     }
 
     @Deprecated
diff --git a/src/main/java/com/android/tools/r8/CompatDxHelper.java b/src/main/java/com/android/tools/r8/CompatDxHelper.java
index a84bab5..fb186f4 100644
--- a/src/main/java/com/android/tools/r8/CompatDxHelper.java
+++ b/src/main/java/com/android/tools/r8/CompatDxHelper.java
@@ -6,6 +6,7 @@
 
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 
 public class CompatDxHelper {
   public static void run(D8Command command, Boolean minimalMainDex)
@@ -13,7 +14,7 @@
     AndroidApp app = command.getInputApp();
     InternalOptions options = command.getInternalOptions();
     // DX does not desugar.
-    options.enableDesugaring = false;
+    options.desugarState = DesugarState.OFF;
     // DX allows --multi-dex without specifying a main dex list for legacy devices.
     // That is broken, but for CompatDX we do the same to not break existing builds
     // that are trying to transition.
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index b76e6a7..467570f 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.AssertionConfigurationWithDefault;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringDiagnostic;
 import java.nio.file.Path;
@@ -213,7 +214,7 @@
           getMainDexListConsumer(),
           getMinApiLevel(),
           getReporter(),
-          !getDisableDesugaring(),
+          getDesugaringState(),
           intermediate,
           isOptimizeMultidexForLinearAlloc(),
           getIncludeClassesChecksum(),
@@ -281,7 +282,7 @@
       StringConsumer mainDexListConsumer,
       int minApiLevel,
       Reporter diagnosticsHandler,
-      boolean enableDesugaring,
+      DesugarState enableDesugaring,
       boolean intermediate,
       boolean optimizeMultidexForLinearAlloc,
       boolean encodeChecksum,
@@ -354,7 +355,7 @@
 
     // TODO(b/137168535) Disable non-null tracking for now.
     internal.enableNonNullTracking = false;
-    internal.enableDesugaring = getEnableDesugaring();
+    internal.desugarState = getDesugarState();
     internal.encodeChecksums = getIncludeClassesChecksum();
     internal.dexClassChecksumFilter = getDexClassChecksumFilter();
     internal.enableInheritanceClassInDexDistributor = isOptimizeMultidexForLinearAlloc();
diff --git a/src/main/java/com/android/tools/r8/DexFileMergerHelper.java b/src/main/java/com/android/tools/r8/DexFileMergerHelper.java
index 1ed8cac..2509e12 100644
--- a/src/main/java/com/android/tools/r8/DexFileMergerHelper.java
+++ b/src/main/java/com/android/tools/r8/DexFileMergerHelper.java
@@ -17,6 +17,7 @@
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.ExceptionUtils;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
 import java.io.IOException;
@@ -71,7 +72,7 @@
       Boolean minimalMainDex,
       Map<String, Integer> inputOrdering)
       throws IOException {
-    options.enableDesugaring = false;
+    options.desugarState = DesugarState.OFF;
     options.enableMainDexListCheck = false;
     options.minimalMainDex = minimalMainDex;
     assert !options.isMinifying();
diff --git a/src/main/java/com/android/tools/r8/DexSplitterHelper.java b/src/main/java/com/android/tools/r8/DexSplitterHelper.java
index 2dee6ef..7ec9143 100644
--- a/src/main/java/com/android/tools/r8/DexSplitterHelper.java
+++ b/src/main/java/com/android/tools/r8/DexSplitterHelper.java
@@ -21,6 +21,7 @@
 import com.android.tools.r8.utils.FeatureClassMapping;
 import com.android.tools.r8.utils.FeatureClassMapping.FeatureMappingException;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
 import java.io.IOException;
@@ -58,7 +59,7 @@
       ExecutorService executor)
       throws IOException {
     InternalOptions options = command.getInternalOptions();
-    options.enableDesugaring = false;
+    options.desugarState = DesugarState.OFF;
     options.enableMainDexListCheck = false;
     options.ignoreMainDexMissingClasses = true;
     options.minimalMainDex = false;
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index d190d6c..9db1c33 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.AssertionConfigurationWithDefault;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.Pair;
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringDiagnostic;
@@ -90,7 +91,7 @@
         mainDexListConsumer,
         minApiLevel,
         diagnosticsHandler,
-        true,
+        DesugarState.ON,
         false,
         false,
         (name, checksum) -> true,
@@ -166,7 +167,7 @@
 
     // TODO(b/137168535) Disable non-null tracking for now.
     internal.enableNonNullTracking = false;
-    assert internal.enableDesugaring;
+    assert internal.desugarState == DesugarState.ON;
     assert internal.enableInheritanceClassInDexDistributor;
     internal.enableInheritanceClassInDexDistributor = false;
 
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 187e095..4051f9c 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -25,6 +25,7 @@
 import com.android.tools.r8.utils.ExceptionDiagnostic;
 import com.android.tools.r8.utils.FileUtils;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.InternalOptions.LineNumberOptimization;
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringDiagnostic;
@@ -530,8 +531,10 @@
 
       assert getProgramConsumer() != null;
 
-      boolean desugaring =
-          (getProgramConsumer() instanceof ClassFileConsumer) ? false : !getDisableDesugaring();
+      DesugarState desugaring =
+          (getProgramConsumer() instanceof ClassFileConsumer)
+              ? DesugarState.OFF
+              : getDesugaringState();
 
       FeatureSplitConfiguration featureSplitConfiguration =
           !featureSplits.isEmpty() ? new FeatureSplitConfiguration(featureSplits, reporter) : null;
@@ -703,7 +706,7 @@
       CompilationMode mode,
       int minApiLevel,
       Reporter reporter,
-      boolean enableDesugaring,
+      DesugarState enableDesugaring,
       boolean enableTreeShaking,
       boolean enableMinification,
       boolean disableVerticalClassMerging,
@@ -792,7 +795,7 @@
     internal.debug = getMode() == CompilationMode.DEBUG;
     internal.programConsumer = getProgramConsumer();
     internal.minApiLevel = getMinApiLevel();
-    internal.enableDesugaring = getEnableDesugaring();
+    internal.desugarState = getDesugarState();
     assert internal.isShrinking() == getEnableTreeShaking();
     assert internal.isMinifying() == getEnableMinification();
     // In current implementation we only enable lambda merger if the tree
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 477925a..b40b925 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -90,6 +90,7 @@
 import com.android.tools.r8.utils.CfgPrinter;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.InternalOptions.OutlineOptions;
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.android.tools.r8.utils.ThreadUtils;
@@ -244,17 +245,18 @@
       this.methodOptimizationInfoCollector = null;
       return;
     }
-    this.lambdaRewriter = options.enableDesugaring ? new LambdaRewriter(appView) : null;
+    this.lambdaRewriter =
+        options.desugarState == DesugarState.ON ? new LambdaRewriter(appView) : null;
     this.interfaceMethodRewriter =
         options.isInterfaceMethodDesugaringEnabled()
             ? new InterfaceMethodRewriter(appView, this)
             : null;
     this.twrCloseResourceRewriter =
-        (options.enableDesugaring && enableTwrCloseResourceDesugaring())
+        ((options.desugarState == DesugarState.ON) && enableTwrCloseResourceDesugaring())
             ? new TwrCloseResourceRewriter(appView, this)
             : null;
     this.backportedMethodRewriter =
-        options.enableDesugaring
+        options.desugarState == DesugarState.ON
             ? new BackportedMethodRewriter(appView, this)
             : null;
     this.covariantReturnTypeAnnotationTransformer =
@@ -1290,7 +1292,7 @@
     deadCodeRemover.run(code);
     assert code.isConsistentSSA();
 
-    if (options.enableDesugaring && enableTryWithResourcesDesugaring()) {
+    if (options.desugarState == DesugarState.ON && enableTryWithResourcesDesugaring()) {
       codeRewriter.rewriteThrowableAddAndGetSuppressed(code);
     }
     if (backportedMethodRewriter != null) {
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 9ed931c..c233df4 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -74,6 +74,11 @@
     ON
   }
 
+  public enum DesugarState {
+    OFF,
+    ON
+  }
+
   public static final int SUPPORTED_CF_MAJOR_VERSION = Opcodes.V11;
   public static final int SUPPORTED_DEX_VERSION =
       AndroidApiLevel.LATEST.getDexVersion().getIntValue();
@@ -398,7 +403,7 @@
   // Flag to turn on/off lambda class merging in R8.
   public boolean enableLambdaMerging = false;
   // Flag to turn on/off desugaring in D8/R8.
-  public boolean enableDesugaring = true;
+  public DesugarState desugarState = DesugarState.ON;
   // Flag to turn on/off JDK11+ nest-access control
   public boolean enableNestBasedAccessDesugaring = true;
   // Flag to turn on/off reduction of nest to improve class merging optimizations.
@@ -1135,7 +1140,7 @@
     if (!hasConsumer()) {
       return false;
     }
-    return enableDesugaring
+    return desugarState == DesugarState.ON
         && interfaceMethodDesugaring == OffOrAuto.Auto
         && (!canUseDefaultAndStaticInterfaceMethods() || enableCfInterfaceMethodDesugaring);
   }
diff --git a/src/test/java/com/android/tools/r8/BaseCompilerCommandTest.java b/src/test/java/com/android/tools/r8/BaseCompilerCommandTest.java
index bc9ec14..21c3272 100644
--- a/src/test/java/com/android/tools/r8/BaseCompilerCommandTest.java
+++ b/src/test/java/com/android/tools/r8/BaseCompilerCommandTest.java
@@ -3,14 +3,16 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8;
 
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
+
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 
 // Utilities common to all compiler command tests.
 public class BaseCompilerCommandTest {
 
   public static void assertDesugaringDisabled(BaseCompilerCommand command) {
-    assertFalse(command.getEnableDesugaring());
-    assertFalse(command.getInternalOptions().enableDesugaring);
+    assertEquals(DesugarState.OFF, command.getDesugarState());
+    assertEquals(DesugarState.OFF, command.getInternalOptions().desugarState);
   }
 
 }
diff --git a/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithUnderscoreThisTestRunner.java b/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithUnderscoreThisTestRunner.java
index feda70f..8769dc2 100644
--- a/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithUnderscoreThisTestRunner.java
+++ b/src/test/java/com/android/tools/r8/desugar/DefaultLambdaWithUnderscoreThisTestRunner.java
@@ -19,6 +19,7 @@
 import com.android.tools.r8.references.MethodReference;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
 import com.android.tools.r8.utils.StringUtils;
 import com.google.common.collect.ImmutableList;
 import java.util.Collections;
@@ -118,7 +119,7 @@
             .addOptionsModification(
                 internalOptions -> {
                   if (parameters.isCfRuntime()) {
-                    internalOptions.enableDesugaring = true;
+                    internalOptions.desugarState = DesugarState.ON;
                     internalOptions.enableCfInterfaceMethodDesugaring = true;
                   }
                 });
