1diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
2index ff3e351996..f857e61d1e 100644
3--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
4+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
5@@ -93,7 +93,7 @@ class LambdaClassFixer extends ClassVisitor {
6     checkArgument(BitFlags.noneSet(access, Opcodes.ACC_INTERFACE), "Not a class: %s", name);
7     checkState(this.originalInternalName == null, "not intended for reuse but reused for %s", name);
8     originalInternalName = name;
9-    hasState = false;
10+    hasState = true;
11     hasFactory = false;
12     desc = null;
13     this.signature = null;
14@@ -136,7 +136,7 @@ class LambdaClassFixer extends ClassVisitor {
15     } else if ("<init>".equals(name)) {
16       this.desc = desc;
17       this.signature = signature;
18-      if (!lambdaInfo.needFactory() && !desc.startsWith("()")) {
19+      if (!lambdaInfo.needFactory()) {
20         access &= ~Opcodes.ACC_PRIVATE; // make constructor accessible if we'll call it directly
21       }
22     }
23@@ -156,10 +156,6 @@ class LambdaClassFixer extends ClassVisitor {
24
25   @Override
26   public void visitEnd() {
27-    checkState(
28-        !hasState || hasFactory,
29-        "Expected factory method for capturing lambda %s",
30-        getInternalName());
31     if (!hasState) {
32       checkState(
33           signature == null,
34diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
35index 8f90d25ff5..f5ed6d524a 100644
36--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
37+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
38@@ -423,8 +423,7 @@ class LambdaDesugaring extends ClassVisitor {
39         String lambdaClassName = internalName + "$$Lambda$" + (lambdaCount++);
40         Type[] capturedTypes = Type.getArgumentTypes(desc);
41         boolean needFactory =
42-            capturedTypes.length != 0
43-                && !attemptAllocationBeforeArgumentLoads(lambdaClassName, capturedTypes);
44+                !attemptAllocationBeforeArgumentLoads(lambdaClassName, capturedTypes);
45         lambdas.generateLambdaClass(
46             internalName,
47             LambdaInfo.create(
48@@ -435,7 +434,7 @@ class LambdaDesugaring extends ClassVisitor {
49                 bridgeInfo.bridgeMethod()),
50             bsmMethod,
51             args);
52-        if (desc.startsWith("()")) {
53+        if (false) {
54           // For stateless lambda classes we'll generate a singleton instance that we can just load
55           checkState(capturedTypes.length == 0);
56           super.visitFieldInsn(
57@@ -493,7 +492,6 @@ class LambdaDesugaring extends ClassVisitor {
58      * @return {@code true} if we were able to insert a new/dup, {@code false} otherwise
59      */
60     private boolean attemptAllocationBeforeArgumentLoads(String internalName, Type[] paramTypes) {
61-      checkArgument(paramTypes.length > 0, "Expected at least one param for %s", internalName);
62       // Walk backwards past loads corresponding to constructor arguments to find the instruction
63       // after which we need to insert our NEW/DUP pair
64       AbstractInsnNode insn = instructions.getLast();
65