diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index 0dcaf2a..6bb06d5 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -86,14 +86,17 @@
     DexItemFactory factory = rewriter.getFactory();
     DexProto constructorProto = factory.createProto(
         factory.voidType, descriptor.captures.values);
-    this.constructor = factory.createMethod(
-        lambdaClassType, constructorProto, rewriter.constructorName);
+    this.constructor =
+        factory.createMethod(lambdaClassType, constructorProto, factory.constructorMethodName);
 
     this.target = createTarget(accessedFrom);
 
     boolean stateless = isStateless();
-    this.classConstructor = !stateless ? null
-        : factory.createMethod(lambdaClassType, constructorProto, rewriter.classConstructorName);
+    this.classConstructor =
+        !stateless
+            ? null
+            : factory.createMethod(
+                lambdaClassType, constructorProto, factory.classConstructorMethodName);
     this.lambdaField =
         !stateless
             ? null
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSourceCode.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSourceCode.java
index 4a12b2b..2900761 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSourceCode.java
@@ -22,7 +22,7 @@
   @Override
   protected void prepareInstructions() {
     // Super constructor call (always java.lang.Object.<init>()).
-    DexMethod objectInitMethod = lambda.rewriter.objectInitMethod;
+    DexMethod objectInitMethod = factory().objectMethods.constructor;
     add(
         builder -> {
           assert builder.getReceiverValue() != null;
@@ -55,7 +55,8 @@
     // be treated as equal, since it only has one call to super constructor,
     // which is always java.lang.Object.<init>().
     return captures().length == 0
-        ? System.identityHashCode(lambda.rewriter.objectInitMethod) : super.hashCode();
+        ? System.identityHashCode(factory().objectMethods.constructor)
+        : super.hashCode();
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSynthesizedCode.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSynthesizedCode.java
index 29fb5c8..906e15f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSynthesizedCode.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaConstructorSynthesizedCode.java
@@ -22,7 +22,7 @@
   @Override
   public Consumer<UseRegistry> getRegistryCallback() {
     return registry -> {
-      registry.registerInvokeDirect(lambda.rewriter.objectInitMethod);
+      registry.registerInvokeDirect(dexItemFactory().objectMethods.constructor);
       DexType[] capturedTypes = captures();
       for (int i = 0; i < capturedTypes.length; i++) {
         registry.registerInstanceFieldWrite(lambda.getCaptureField(i));
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
index f093a78..eb8ba3d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
@@ -66,10 +66,6 @@
 
   private final AppView<?> appView;
 
-  final DexMethod objectInitMethod;
-
-  final DexString constructorName;
-  final DexString classConstructorName;
   final DexString instanceFieldName;
 
   private final LambdaRewriterGraphLense graphLens;
@@ -94,14 +90,6 @@
   public LambdaRewriter(AppView<?> appView) {
     this.appView = appView;
     this.graphLens = new LambdaRewriterGraphLense(appView);
-    this.constructorName = getFactory().createString(Constants.INSTANCE_INITIALIZER_NAME);
-    this.objectInitMethod =
-        getFactory()
-            .createMethod(
-                getFactory().objectType,
-                getFactory().createProto(getFactory().voidType),
-                constructorName);
-    this.classConstructorName = getFactory().createString(Constants.CLASS_INITIALIZER_NAME);
     this.instanceFieldName = getFactory().createString(LAMBDA_INSTANCE_FIELD_NAME);
   }
 
