diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 91b6ab7..a7d57b1 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -765,7 +765,11 @@
 
       // Validity checks.
       assert application.classes().stream().allMatch(clazz -> clazz.isValid(options));
-      assert appView.rootSet().verifyKeptItemsAreKept(application, appView.appInfo());
+      if (options.isShrinking()
+          || options.isMinifying()
+          || options.getProguardConfiguration().hasApplyMappingFile()) {
+        assert appView.rootSet().verifyKeptItemsAreKept(application, appView.appInfo());
+      }
       assert appView
           .graphLense()
           .verifyMappingToOriginalProgram(
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 229f3a6..ef5da18 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
@@ -241,8 +241,6 @@
                   newInValues.add(invoke.inValues().get(i));
                 }
               }
-              assert newInValues.size()
-                  == actualTarget.proto.parameters.size() + (actualInvokeType == STATIC ? 0 : 1);
             } else {
               newInValues = invoke.inValues();
             }
@@ -254,6 +252,9 @@
               newInValues.add(extraNullValue);
             }
 
+            assert newInValues.size()
+                == actualTarget.proto.parameters.size() + (actualInvokeType == STATIC ? 0 : 1);
+
             Invoke newInvoke =
                 Invoke.create(actualInvokeType, actualTarget, null, newOutValue, newInValues);
             iterator.replaceCurrentInstruction(newInvoke);
diff --git a/src/test/examplesJava11/nesthostexample/BasicNestHostWithInnerClassConstructors.java b/src/test/examplesJava11/nesthostexample/BasicNestHostWithInnerClassConstructors.java
index f3ee216..1326c8f 100644
--- a/src/test/examplesJava11/nesthostexample/BasicNestHostWithInnerClassConstructors.java
+++ b/src/test/examplesJava11/nesthostexample/BasicNestHostWithInnerClassConstructors.java
@@ -28,8 +28,12 @@
       this.field = field;
     }
 
-    private BasicNestedClass(String unused, String field, String alsoUnused) {
-      this.field = field + "UnusedConstructor";
+    private BasicNestedClass(Object unused, Object field, Object alsoUnused) {
+      this.field = field.toString() + "UnusedConstructor";
+    }
+
+    private BasicNestedClass(UnInstantiatedClass instance, UnInstantiatedClass otherInstance) {
+      this.field = "nothing";
     }
 
     public static BasicNestHostWithInnerClassConstructors createOuterInstance(String field) {
@@ -37,6 +41,8 @@
     }
   }
 
+  public static class UnInstantiatedClass {}
+
   public static void main(String[] args) {
     BasicNestHostWithInnerClassConstructors outer = BasicNestedClass.createOuterInstance("field");
     BasicNestedClass inner =
@@ -44,11 +50,13 @@
     BasicNestHostWithInnerClassConstructors noBridge =
         new BasicNestHostWithInnerClassConstructors(1);
     BasicNestedClass unusedParamConstructor =
-        new BasicNestedClass("unused", "innerField", "alsoUnused");
+        new BasicNestedClass(new Object(), "innerField", new Object());
+    BasicNestedClass uninstantiatedParamConstructor = new BasicNestedClass(null, null);
 
     System.out.println(outer.field);
     System.out.println(inner.field);
     System.out.println(noBridge.field);
     System.out.println(unusedParamConstructor.field);
+    System.out.println(uninstantiatedParamConstructor.field);
   }
 }
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java
index 2838b43..a9fcd68 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAccessControlTestUtils.java
@@ -33,6 +33,7 @@
           "BasicNestHostWithInnerClassMethods$BasicNestedClass",
           "BasicNestHostWithInnerClassConstructors",
           "BasicNestHostWithInnerClassConstructors$BasicNestedClass",
+          "BasicNestHostWithInnerClassConstructors$UnInstantiatedClass",
           "BasicNestHostWithAnonymousInnerClass",
           "BasicNestHostWithAnonymousInnerClass$1",
           "BasicNestHostWithAnonymousInnerClass$InterfaceForAnonymousClass",
@@ -128,7 +129,8 @@
                   "hostMethodstaticHostMethodstaticNestMethod"))
           .put(
               "constructors",
-              StringUtils.lines("field", "nest1SField", "1", "innerFieldUnusedConstructor"))
+              StringUtils.lines(
+                  "field", "nest1SField", "1", "innerFieldUnusedConstructor", "nothing"))
           .put(
               "anonymous",
               StringUtils.lines(
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
new file mode 100644
index 0000000..1ed0e0a
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
@@ -0,0 +1,74 @@
+// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.desugar.nestaccesscontrol;
+
+import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.classesOfNest;
+import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.getExpectedResult;
+import static com.android.tools.r8.desugar.nestaccesscontrol.NestAccessControlTestUtils.getMainClass;
+
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.ToolHelper.DexVm;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class NestConstructorRemovedArgTest extends TestBase {
+
+  public NestConstructorRemovedArgTest(TestParameters parameters) {
+    this.parameters = parameters;
+  }
+
+  private final TestParameters parameters;
+
+  @Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters()
+        .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withDexRuntime(DexVm.Version.first())
+        .withDexRuntime(DexVm.Version.last())
+        .withAllApiLevels()
+        .build();
+  }
+
+  @Test
+  public void testRemoveArgConstructorNestsR8() throws Exception {
+    String nestID = "constructors";
+    testForR8(parameters.getBackend())
+        .addKeepMainRule(getMainClass(nestID))
+        .noMinification()
+        .setMinApi(parameters.getApiLevel())
+        .addOptionsModification(
+            options -> {
+              options.enableClassInlining = false;
+            })
+        .addProgramFiles(classesOfNest(nestID))
+        .compile()
+        .run(parameters.getRuntime(), getMainClass(nestID))
+        .assertSuccessWithOutput(getExpectedResult(nestID));
+  }
+
+  @Test
+  public void testRemoveArgConstructorNestsR8NoTreeShaking() throws Exception {
+    String nestID = "constructors";
+    testForR8(parameters.getBackend())
+        .noTreeShaking()
+        .addKeepMainRule(getMainClass(nestID))
+        .noMinification()
+        .setMinApi(parameters.getApiLevel())
+        .addOptionsModification(
+            options -> {
+              options.enableClassInlining = false;
+            })
+        .addProgramFiles(classesOfNest(nestID))
+        .compile()
+        .run(parameters.getRuntime(), getMainClass(nestID))
+        .assertSuccessWithOutput(getExpectedResult(nestID));
+  }
+}
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java
index 0f89cbb..bb59533 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestOnProgramAndClassPathTest.java
@@ -73,7 +73,7 @@
             containsString("BasicNestHostWithInnerClassConstructors$BasicNestedClass"));
     inner.inspect(
         inspector -> {
-          assertThisNumberOfBridges(inspector, 2);
+          assertThisNumberOfBridges(inspector, 3);
           assertNestConstructor(inspector);
         });
     D8TestCompileResult host =
