diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index 17c2e32..b1292dc 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -1019,15 +1019,6 @@
         iterator.insertNullCheckInstruction(
             appView, code, blocks, invoke.getFirstArgument(), nullCheckPosition);
 
-    // TODO(b/199864962): Lens code rewriting should follow the order of graph lenses, i.e., enum
-    //  unboxing rewriting should happen after method staticizing.
-    if (receiverType.isClassType()
-        && appView.unboxedEnums().isUnboxedEnum(receiverType.asClassType().getClassType())) {
-      iterator.previousUntil(instruction -> instruction == nullCheck);
-      iterator.next();
-      enumUnboxer.rewriteNullCheck(iterator, nullCheck);
-    }
-
     // Reset the block iterator.
     if (invoke.getBlock().hasCatchHandlers()) {
       BasicBlock splitBlock = invoke.getBlock();
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EmptyEnumUnboxer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EmptyEnumUnboxer.java
index f436603..1583873 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EmptyEnumUnboxer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EmptyEnumUnboxer.java
@@ -11,8 +11,6 @@
 import com.android.tools.r8.graph.RewrittenPrototypeDescription;
 import com.android.tools.r8.ir.analysis.fieldvalueanalysis.StaticFieldValues;
 import com.android.tools.r8.ir.code.IRCode;
-import com.android.tools.r8.ir.code.InstructionListIterator;
-import com.android.tools.r8.ir.code.InvokeMethod;
 import com.android.tools.r8.ir.code.Phi;
 import com.android.tools.r8.ir.conversion.IRConverter;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
@@ -68,11 +66,6 @@
   }
 
   @Override
-  public void rewriteNullCheck(InstructionListIterator iterator, InvokeMethod invoke) {
-    // Intentionally empty.
-  }
-
-  @Override
   public void unboxEnums(
       AppView<AppInfoWithLiveness> appView,
       IRConverter converter,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java
index a1212bf..8ff6293 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java
@@ -11,8 +11,6 @@
 import com.android.tools.r8.graph.RewrittenPrototypeDescription;
 import com.android.tools.r8.ir.analysis.fieldvalueanalysis.StaticFieldValues;
 import com.android.tools.r8.ir.code.IRCode;
-import com.android.tools.r8.ir.code.InstructionListIterator;
-import com.android.tools.r8.ir.code.InvokeMethod;
 import com.android.tools.r8.ir.code.Phi;
 import com.android.tools.r8.ir.conversion.IRConverter;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
@@ -48,7 +46,6 @@
   public abstract Set<Phi> rewriteCode(
       IRCode code, MethodProcessor methodProcessor, RewrittenPrototypeDescription prototypeChanges);
 
-  public abstract void rewriteNullCheck(InstructionListIterator iterator, InvokeMethod invoke);
 
   public abstract void unboxEnums(
       AppView<AppInfoWithLiveness> appView,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
index 8a357cb..e9ffe62 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
@@ -63,7 +63,6 @@
 import com.android.tools.r8.ir.code.If;
 import com.android.tools.r8.ir.code.InstanceGet;
 import com.android.tools.r8.ir.code.Instruction;
-import com.android.tools.r8.ir.code.InstructionListIterator;
 import com.android.tools.r8.ir.code.InvokeCustom;
 import com.android.tools.r8.ir.code.InvokeMethod;
 import com.android.tools.r8.ir.code.InvokeStatic;
@@ -653,9 +652,6 @@
             .fixupTypeReferences(converter, executorService);
     EnumUnboxingLens enumUnboxingLens = treeFixerResult.getLens();
 
-    // Update the graph lens.
-    appView.rewriteWithLens(enumUnboxingLens);
-
     // Enqueue the (lens rewritten) methods that require reprocessing.
     //
     // Note that the reprocessing set must be rewritten to the new enum unboxing lens before pruning
@@ -681,7 +677,6 @@
         new EnumUnboxingRewriter(
             appView,
             treeFixerResult.getCheckNotNullToCheckNotZeroMapping(),
-            converter,
             enumUnboxingLens,
             enumDataMap,
             utilityClasses);
@@ -1462,13 +1457,6 @@
   }
 
   @Override
-  public void rewriteNullCheck(InstructionListIterator iterator, InvokeMethod invoke) {
-    if (enumUnboxerRewriter != null) {
-      enumUnboxerRewriter.rewriteNullCheck(iterator, invoke);
-    }
-  }
-
-  @Override
   public void unsetRewriter() {
     enumUnboxerRewriter = null;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java
index f4360d3..d7b13ab 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java
@@ -34,7 +34,6 @@
 import com.android.tools.r8.ir.code.Phi;
 import com.android.tools.r8.ir.code.StaticGet;
 import com.android.tools.r8.ir.code.Value;
-import com.android.tools.r8.ir.conversion.IRConverter;
 import com.android.tools.r8.ir.conversion.MethodProcessor;
 import com.android.tools.r8.ir.optimize.enums.EnumInstanceFieldData.EnumInstanceFieldKnownData;
 import com.android.tools.r8.ir.optimize.enums.classification.CheckNotNullEnumUnboxerMethodClassification;
@@ -55,7 +54,6 @@
 
   private final AppView<AppInfoWithLiveness> appView;
   private final Map<DexMethod, DexMethod> checkNotNullToCheckNotZeroMapping;
-  private final IRConverter converter;
   private final DexItemFactory factory;
   private final InternalOptions options;
   private final EnumDataMap unboxedEnumsData;
@@ -65,13 +63,11 @@
   EnumUnboxingRewriter(
       AppView<AppInfoWithLiveness> appView,
       Map<DexMethod, DexMethod> checkNotNullToCheckNotZeroMapping,
-      IRConverter converter,
       EnumUnboxingLens enumUnboxingLens,
       EnumDataMap unboxedEnumsInstanceFieldData,
       EnumUnboxingUtilityClasses utilityClasses) {
     this.appView = appView;
     this.checkNotNullToCheckNotZeroMapping = checkNotNullToCheckNotZeroMapping;
-    this.converter = converter;
     this.factory = appView.dexItemFactory();
     this.options = appView.options();
     this.enumUnboxingLens = enumUnboxingLens;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java
index 862840b..773dadf 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java
@@ -132,12 +132,18 @@
       }
     }
 
+    // Install the new graph lens before processing any checkNotZero() methods.
+    EnumUnboxingLens lens = lensBuilder.build(appView);
+    appView.rewriteWithLens(lens);
+
+    // Rewrite outliner with lens.
+    converter.outliner.rewriteWithLens();
+
     // Create mapping from checkNotNull() to checkNotZero() methods.
     BiMap<DexMethod, DexMethod> checkNotNullToCheckNotZeroMapping =
         duplicateCheckNotNullMethods(converter, executorService);
 
-    return new Result(
-        checkNotNullToCheckNotZeroMapping, lensBuilder.build(appView), prunedItemsBuilder.build());
+    return new Result(checkNotNullToCheckNotZeroMapping, lens, prunedItemsBuilder.build());
   }
 
   private BiMap<DexMethod, DexMethod> duplicateCheckNotNullMethods(
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
index 6069b81..d5af406 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
@@ -725,13 +725,6 @@
       if (!isPrototypeChangesAllowed(method, interfaceDispatchOutsideProgram)) {
         return RewrittenPrototypeDescription.none();
       }
-      // TODO(b/199864962): Allow parameter removal from check-not-null classified methods.
-      if (method
-          .getOptimizationInfo()
-          .getEnumUnboxerMethodClassification()
-          .isCheckNotNullClassification()) {
-        return RewrittenPrototypeDescription.none();
-      }
       RewrittenPrototypeDescription prototypeChanges = computePrototypeChangesForMethod(method);
       if (prototypeChanges.isEmpty()) {
         return prototypeChanges;
diff --git a/src/test/java/com/android/tools/r8/optimize/argumentpropagation/CheckNotZeroMethodWithArgumentRemovalTest.java b/src/test/java/com/android/tools/r8/optimize/argumentpropagation/CheckNotZeroMethodWithArgumentRemovalTest.java
index be25553..3685b5c 100644
--- a/src/test/java/com/android/tools/r8/optimize/argumentpropagation/CheckNotZeroMethodWithArgumentRemovalTest.java
+++ b/src/test/java/com/android/tools/r8/optimize/argumentpropagation/CheckNotZeroMethodWithArgumentRemovalTest.java
@@ -50,8 +50,7 @@
               MethodSubject checkNotNullSubject =
                   mainClassSubject.uniqueMethodWithName("checkNotNull");
               assertThat(checkNotNullSubject, isPresent());
-              // TODO(b/199864962): Allow parameter removal from check-not-null classified methods.
-              assertEquals(2, checkNotNullSubject.getProgramMethod().getReference().getArity());
+              assertEquals(1, checkNotNullSubject.getProgramMethod().getReference().getArity());
             })
         .run(parameters.getRuntime(), Main.class)
         .assertSuccessWithEmptyOutput();
