Remove InliningConstraintVisitor

Change-Id: I830e27b947a182e0d06fbc7c21a7245d3a8ff5b9
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java b/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java
index 23dbc06..fc2a080 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.NumericType;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -169,9 +167,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forBinop();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java b/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java
index f22b956..53536d2 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.CfState.Slot;
@@ -45,9 +43,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forArrayLength();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java b/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java
index db6e106..1f667b4 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.MemberType;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -90,9 +88,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forArrayGet();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java b/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java
index 3f155f4..d0eadef 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.MemberType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -80,9 +78,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forArrayPut();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java b/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java
index ca75d03..e89c480 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -61,9 +59,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forCheckCast(type, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfCmp.java b/src/main/java/com/android/tools/r8/cf/code/CfCmp.java
index 10c8eab..dac3eca 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfCmp.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfCmp.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.Cmp;
 import com.android.tools.r8.ir.code.Cmp.Bias;
 import com.android.tools.r8.ir.code.NumericType;
@@ -94,9 +92,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forBinop();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java b/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java
index a10e914..7f77ade 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -84,9 +82,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forConstClass(type, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java
index 6e34d8d..a9a1d73 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java
@@ -4,10 +4,8 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexMethodHandle;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.graph.UseRegistry.MethodHandleUse;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -60,9 +58,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forConstMethodHandle();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java
index f3b7e3b..063b6fa 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java
@@ -4,10 +4,8 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexProto;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -60,9 +58,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forConstMethodType();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java b/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java
index 69acb80..7ad901a 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -37,9 +35,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forConstInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java b/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
index fddbba4..72e4638 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -135,9 +133,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forConstInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstString.java b/src/main/java/com/android/tools/r8/cf/code/CfConstString.java
index 45e5a13..d52d901 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstString.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstString.java
@@ -4,10 +4,8 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.IRBuilder;
@@ -67,9 +65,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forConstInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java b/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java
index d4ec522..36ba9b4 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java
@@ -5,10 +5,8 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexReference;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -83,9 +81,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forDexItemBasedConstString(item, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java
index 996355b..a000dcf 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java
@@ -5,10 +5,8 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -125,9 +123,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     switch (opcode) {
       case Opcodes.GETSTATIC:
         return inliningConstraints.forStaticGet(field, invocationContext);
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfFrame.java b/src/main/java/com/android/tools/r8/cf/code/CfFrame.java
index a9f440d..e5a3c19 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfFrame.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfFrame.java
@@ -7,10 +7,8 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.IRBuilder;
@@ -295,9 +293,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return ConstraintWithTarget.ALWAYS;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfGoto.java b/src/main/java/com/android/tools/r8/cf/code/CfGoto.java
index d5f5bc6..efe67ba 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfGoto.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfGoto.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.IRBuilder;
@@ -62,9 +60,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forJumpInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfIf.java b/src/main/java/com/android/tools/r8/cf/code/CfIf.java
index e23c0cc..1ba9c06 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfIf.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfIf.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.If;
 import com.android.tools.r8.ir.code.If.Type;
 import com.android.tools.r8.ir.code.ValueType;
@@ -95,9 +93,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forJumpInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java b/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java
index 47f90b2..28a59d7 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.If;
 import com.android.tools.r8.ir.code.If.Type;
 import com.android.tools.r8.ir.code.ValueType;
@@ -96,9 +94,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forJumpInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfIinc.java b/src/main/java/com/android/tools/r8/cf/code/CfIinc.java
index 951da4f..92f2094 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfIinc.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfIinc.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.NumericType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -53,9 +51,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return ConstraintWithTarget.ALWAYS;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java b/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java
index 2cfdbaf..cb4baef 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -59,9 +57,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forInstanceOf(type, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
index 2801ca8..833e5e1 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -147,7 +145,5 @@
 
   public abstract ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView);
+      DexType invocationContext);
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java b/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java
index 4656408..6311bfd 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java
@@ -8,6 +8,7 @@
 import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.AppView;
+import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexProgramClass;
@@ -25,7 +26,6 @@
 import com.android.tools.r8.ir.conversion.IRBuilder;
 import com.android.tools.r8.ir.optimize.Inliner.ConstraintWithTarget;
 import com.android.tools.r8.ir.optimize.InliningConstraints;
-import com.android.tools.r8.jar.InliningConstraintVisitor;
 import com.android.tools.r8.naming.NamingLens;
 import java.util.Arrays;
 import org.objectweb.asm.MethodVisitor;
@@ -196,11 +196,78 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
-    return InliningConstraintVisitor.getConstraintForInvoke(
-        opcode, method, graphLense, appView, inliningConstraints, invocationContext);
+      DexType invocationContext) {
+    GraphLense graphLense = inliningConstraints.getGraphLense();
+    AppView<?> appView = inliningConstraints.getAppView();
+    DexMethod target = method;
+    // Find the DEX invocation type.
+    Type type;
+    switch (opcode) {
+      case Opcodes.INVOKEINTERFACE:
+        // Could have changed to an invoke-virtual instruction due to vertical class merging
+        // (if an interface is merged into a class).
+        type = graphLense.lookupMethod(target, null, Type.INTERFACE).getType();
+        assert type == Type.INTERFACE || type == Type.VIRTUAL;
+        break;
+
+      case Opcodes.INVOKESPECIAL:
+        if (appView.dexItemFactory().isConstructor(target)) {
+          type = Type.DIRECT;
+          assert noNeedToUseGraphLense(target, type, graphLense);
+        } else if (target.holder == invocationContext) {
+          // The method could have been publicized.
+          type = graphLense.lookupMethod(target, null, Type.DIRECT).getType();
+          assert type == Type.DIRECT || type == Type.VIRTUAL;
+        } else {
+          // This is a super call. Note that the vertical class merger translates some invoke-super
+          // instructions to invoke-direct. However, when that happens, the invoke instruction and
+          // the target method end up being in the same class, and therefore, we will allow inlining
+          // it. The result of using type=SUPER below will be the same, since it leads to the
+          // inlining constraint SAMECLASS.
+          // TODO(christofferqa): Consider using graphLense.lookupMethod (to do this, we need the
+          // context for the graph lense, though).
+          type = Type.SUPER;
+          assert noNeedToUseGraphLense(target, type, graphLense);
+        }
+        break;
+
+      case Opcodes.INVOKESTATIC: {
+        // Static invokes may have changed as a result of horizontal class merging.
+        GraphLenseLookupResult lookup = graphLense.lookupMethod(target, null, Type.STATIC);
+        target = lookup.getMethod();
+        type = lookup.getType();
+        break;
+      }
+
+      case Opcodes.INVOKEVIRTUAL: {
+        type = Type.VIRTUAL;
+        // Instructions that target a private method in the same class translates to
+        // invoke-direct.
+        if (target.holder == invocationContext) {
+          DexClass clazz = appView.definitionFor(target.holder);
+          if (clazz != null && clazz.lookupDirectMethod(target) != null) {
+            type = Type.DIRECT;
+          }
+        }
+
+        // Virtual invokes may have changed to interface invokes as a result of member rebinding.
+        GraphLenseLookupResult lookup = graphLense.lookupMethod(target, null, type);
+        target = lookup.getMethod();
+        type = lookup.getType();
+        break;
+      }
+
+      default:
+        throw new Unreachable("Unexpected opcode " + opcode);
+    }
+
+    return inliningConstraints.forInvoke(target, type, invocationContext);
+  }
+
+  private static boolean noNeedToUseGraphLense(
+      DexMethod method, Invoke.Type type, GraphLense graphLense) {
+    assert graphLense.lookupMethod(method, null, type).getType() == type;
+    return true;
   }
 
   private Type invokeTypeForInvokeSpecialToNonInitMethodOnHolder(
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java b/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java
index 301be60..231c115 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java
@@ -5,7 +5,6 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexCallSite;
 import com.android.tools.r8.graph.DexMethodHandle;
 import com.android.tools.r8.graph.DexString;
@@ -19,7 +18,6 @@
 import com.android.tools.r8.graph.DexValue.DexValueMethodType;
 import com.android.tools.r8.graph.DexValue.DexValueString;
 import com.android.tools.r8.graph.DexValue.DexValueType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -118,9 +116,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forInvokeCustom();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfLabel.java b/src/main/java/com/android/tools/r8/cf/code/CfLabel.java
index c6b2bd0..df9d6bd 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfLabel.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfLabel.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.IRBuilder;
@@ -60,9 +58,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return ConstraintWithTarget.ALWAYS;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfLoad.java b/src/main/java/com/android/tools/r8/cf/code/CfLoad.java
index 4067a79..ae1fd85 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfLoad.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfLoad.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -89,9 +87,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forLoad();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java b/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java
index c9ddad6..1d03017 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.NumericType;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -141,9 +139,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forBinop();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java b/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java
index 0fda291..dc117dd 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.Monitor.Type;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -54,9 +52,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forMonitor();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java b/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java
index bb79f60..936f62d 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -66,9 +64,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forInvokeMultiNewArray(type, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNeg.java b/src/main/java/com/android/tools/r8/cf/code/CfNeg.java
index cbd67ae..254ee77 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNeg.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNeg.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.NumericType;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -83,9 +81,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forUnop();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNew.java b/src/main/java/com/android/tools/r8/cf/code/CfNew.java
index ab00d86..46821da 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNew.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNew.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -57,9 +55,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forNewInstance(type, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java b/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java
index d4f26a6..10504d9 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -100,9 +98,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forNewArrayEmpty(type, invocationContext);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNop.java b/src/main/java/com/android/tools/r8/cf/code/CfNop.java
index 75f6be9..0ae7685 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNop.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNop.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.IRBuilder;
@@ -41,9 +39,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return ConstraintWithTarget.ALWAYS;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java b/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java
index 73d8f34..c1118e5 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.NumericType;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
@@ -154,9 +152,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forUnop();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfPosition.java b/src/main/java/com/android/tools/r8/cf/code/CfPosition.java
index 9302711..035604b 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfPosition.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfPosition.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.Position;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -69,9 +67,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return ConstraintWithTarget.ALWAYS;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfReturn.java b/src/main/java/com/android/tools/r8/cf/code/CfReturn.java
index 88972fe..76475fa 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfReturn.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfReturn.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -77,9 +75,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forReturn();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java b/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java
index 52d2ae3..fd55aa0 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.IRBuilder;
@@ -46,9 +44,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forReturn();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java
index 33205c1..5886058 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java
@@ -6,9 +6,7 @@
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -317,9 +315,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return ConstraintWithTarget.ALWAYS;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStore.java b/src/main/java/com/android/tools/r8/cf/code/CfStore.java
index 45f274a..5f8a05d 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfStore.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfStore.java
@@ -5,9 +5,7 @@
 
 import com.android.tools.r8.cf.CfPrinter;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
@@ -88,9 +86,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forStore();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java b/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
index f9c5f7e..47aff14 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.CfState.Slot;
@@ -105,9 +103,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forJumpInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfThrow.java b/src/main/java/com/android/tools/r8/cf/code/CfThrow.java
index 8d2f92b..a7609c0 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfThrow.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfThrow.java
@@ -4,9 +4,7 @@
 package com.android.tools.r8.cf.code;
 
 import com.android.tools.r8.cf.CfPrinter;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
 import com.android.tools.r8.ir.conversion.CfSourceCode;
 import com.android.tools.r8.ir.conversion.CfState;
 import com.android.tools.r8.ir.conversion.CfState.Slot;
@@ -48,9 +46,7 @@
   @Override
   public ConstraintWithTarget inliningConstraint(
       InliningConstraints inliningConstraints,
-      DexType invocationContext,
-      GraphLense graphLense,
-      AppView<?> appView) {
+      DexType invocationContext) {
     return inliningConstraints.forJumpInstruction();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java
index 2753232..5402e3a 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -509,7 +509,7 @@
       constraint =
           ConstraintWithTarget.meet(
               constraint,
-              insn.inliningConstraint(inliningConstraints, invocationContext, graphLense, appView),
+              insn.inliningConstraint(inliningConstraints, invocationContext),
               appView);
       if (constraint == ConstraintWithTarget.NEVER) {
         return constraint;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java b/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java
index 918231c..e50011a 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java
@@ -50,6 +50,14 @@
     this.graphLense = graphLense; // Note: Intentionally *not* appView.graphLense().
   }
 
+  public AppView<AppInfoWithLiveness> getAppView() {
+    return appView;
+  }
+
+  public GraphLense getGraphLense() {
+    return graphLense;
+  }
+
   public void disallowStaticInterfaceMethodCalls() {
     allowStaticInterfaceMethodCalls = false;
   }
diff --git a/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java b/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java
deleted file mode 100644
index 88f89c3..0000000
--- a/src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java
+++ /dev/null
@@ -1,268 +0,0 @@
-// Copyright (c) 2018, 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.jar;
-
-import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
-
-import com.android.tools.r8.errors.CompilationError;
-import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexEncodedMethod;
-import com.android.tools.r8.graph.DexField;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GraphLense;
-import com.android.tools.r8.graph.GraphLense.GraphLenseLookupResult;
-import com.android.tools.r8.graph.JarApplicationReader;
-import com.android.tools.r8.ir.code.Invoke;
-import com.android.tools.r8.ir.optimize.Inliner.ConstraintWithTarget;
-import com.android.tools.r8.ir.optimize.InliningConstraints;
-import com.android.tools.r8.shaking.AppInfoWithLiveness;
-import org.objectweb.asm.ConstantDynamic;
-import org.objectweb.asm.Handle;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.tree.TryCatchBlockNode;
-
-// This visitor can be used to determine if a piece of jar code has any instructions that the
-// inliner would not be willing to inline. This can be used to determine if a method can be force
-// inlined although its IR is still not available.
-//
-// Note that this class has only been implemented for the hooks in InliningConstraints that may
-// return a non-ALWAYS inlining constraint (e.g., InliningConstraints.forReturn is not called).
-public class InliningConstraintVisitor extends MethodVisitor {
-
-  private final JarApplicationReader application;
-  private final AppView<AppInfoWithLiveness> appView;
-  private final GraphLense graphLense;
-  private final InliningConstraints inliningConstraints;
-  private final DexEncodedMethod method;
-  private final DexType invocationContext;
-
-  private ConstraintWithTarget constraint;
-
-  public InliningConstraintVisitor(
-      JarApplicationReader application,
-      AppView<AppInfoWithLiveness> appView,
-      GraphLense graphLense,
-      DexEncodedMethod method,
-      DexType invocationContext) {
-    super(ASM_VERSION);
-    assert graphLense.isContextFreeForMethods();
-    this.application = application;
-    this.appView = appView;
-    this.graphLense = graphLense;
-    this.inliningConstraints = new InliningConstraints(appView, graphLense);
-    this.method = method;
-    this.invocationContext = invocationContext;
-
-    // Model a synchronized method as having a monitor instruction.
-    this.constraint = method.accessFlags.isSynchronized()
-        ? inliningConstraints.forMonitor() : ConstraintWithTarget.ALWAYS;
-  }
-
-  public void disallowStaticInterfaceMethodCalls() {
-    inliningConstraints.disallowStaticInterfaceMethodCalls();
-  }
-
-  public ConstraintWithTarget getConstraint() {
-    return constraint;
-  }
-
-  private void updateConstraint(ConstraintWithTarget other) {
-    constraint = ConstraintWithTarget.meet(constraint, other, appView);
-  }
-
-  // Used to signal that the result is ready, such that we do not need to visit all instructions of
-  // the method, if we can see early on that it cannot be inlined anyway.
-  public boolean isFinished() {
-    return constraint == ConstraintWithTarget.NEVER;
-  }
-
-  public void accept(TryCatchBlockNode tryCatchBlock) {
-    // Model a try-catch as a move-exception instruction.
-    updateConstraint(inliningConstraints.forMoveException());
-  }
-
-  @Override
-  public void visitFieldInsn(int opcode, String owner, String name, String desc) {
-    DexField field = application.getField(owner, name, desc);
-    switch (opcode) {
-      case Opcodes.GETFIELD:
-        updateConstraint(inliningConstraints.forInstanceGet(field, invocationContext));
-        break;
-
-      case Opcodes.PUTFIELD:
-        updateConstraint(inliningConstraints.forInstancePut(field, invocationContext));
-        break;
-
-      case Opcodes.GETSTATIC:
-        updateConstraint(inliningConstraints.forStaticGet(field, invocationContext));
-        break;
-
-      case Opcodes.PUTSTATIC:
-        updateConstraint(inliningConstraints.forStaticPut(field, invocationContext));
-        break;
-
-      default:
-        throw new Unreachable("Unexpected opcode " + opcode);
-    }
-  }
-
-  @Override
-  public void visitLdcInsn(Object cst) {
-    if (cst instanceof Type && ((Type) cst).getSort() != Type.METHOD) {
-      DexType type = application.getType((Type) cst);
-      updateConstraint(inliningConstraints.forConstClass(type, invocationContext));
-    } else if (cst instanceof Handle) {
-      updateConstraint(inliningConstraints.forConstMethodHandle());
-    } else if (cst instanceof ConstantDynamic) {
-      throw new CompilationError("Unsupported dynamic constant: " + cst.toString());
-    } else {
-      updateConstraint(inliningConstraints.forConstInstruction());
-    }
-  }
-
-  @Override
-  public void visitInvokeDynamicInsn(
-      String name,
-      String descriptor,
-      Handle bootstrapMethodHandle,
-      Object... bootstrapMethodArguments) {
-    updateConstraint(inliningConstraints.forInvokeCustom());
-  }
-
-  @Override
-  public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
-    DexType ownerType = application.getTypeFromName(owner);
-    DexMethod target = application.getMethod(ownerType, name, desc);
-    updateConstraint(
-        getConstraintForInvoke(
-            opcode, target, graphLense, appView, inliningConstraints, invocationContext));
-  }
-
-  public static ConstraintWithTarget getConstraintForInvoke(
-      int opcode,
-      DexMethod target,
-      GraphLense graphLense,
-      AppView<?> appView,
-      InliningConstraints inliningConstraints,
-      DexType invocationContext) {
-    // Find the DEX invocation type.
-    Invoke.Type type;
-    switch (opcode) {
-      case Opcodes.INVOKEINTERFACE:
-        // Could have changed to an invoke-virtual instruction due to vertical class merging
-        // (if an interface is merged into a class).
-        type = graphLense.lookupMethod(target, null, Invoke.Type.INTERFACE).getType();
-        assert type == Invoke.Type.INTERFACE || type == Invoke.Type.VIRTUAL;
-        break;
-
-      case Opcodes.INVOKESPECIAL:
-        if (appView.dexItemFactory().isConstructor(target)) {
-          type = Invoke.Type.DIRECT;
-          assert noNeedToUseGraphLense(target, type, graphLense);
-        } else if (target.holder == invocationContext) {
-          // The method could have been publicized.
-          type = graphLense.lookupMethod(target, null, Invoke.Type.DIRECT).getType();
-          assert type == Invoke.Type.DIRECT || type == Invoke.Type.VIRTUAL;
-        } else {
-          // This is a super call. Note that the vertical class merger translates some invoke-super
-          // instructions to invoke-direct. However, when that happens, the invoke instruction and
-          // the target method end up being in the same class, and therefore, we will allow inlining
-          // it. The result of using type=SUPER below will be the same, since it leads to the
-          // inlining constraint SAMECLASS.
-          // TODO(christofferqa): Consider using graphLense.lookupMethod (to do this, we need the
-          // context for the graph lense, though).
-          type = Invoke.Type.SUPER;
-          assert noNeedToUseGraphLense(target, type, graphLense);
-        }
-        break;
-
-      case Opcodes.INVOKESTATIC: {
-        // Static invokes may have changed as a result of horizontal class merging.
-        GraphLenseLookupResult lookup = graphLense.lookupMethod(target, null, Invoke.Type.STATIC);
-        target = lookup.getMethod();
-        type = lookup.getType();
-        break;
-      }
-
-      case Opcodes.INVOKEVIRTUAL: {
-        type = Invoke.Type.VIRTUAL;
-          // Instructions that target a private method in the same class translates to
-          // invoke-direct.
-          if (target.holder == invocationContext) {
-            DexClass clazz = appView.definitionFor(target.holder);
-          if (clazz != null && clazz.lookupDirectMethod(target) != null) {
-            type = Invoke.Type.DIRECT;
-          }
-        }
-
-        // Virtual invokes may have changed to interface invokes as a result of member rebinding.
-        GraphLenseLookupResult lookup = graphLense.lookupMethod(target, null, type);
-        target = lookup.getMethod();
-        type = lookup.getType();
-        break;
-      }
-
-      default:
-        throw new Unreachable("Unexpected opcode " + opcode);
-    }
-
-    return inliningConstraints.forInvoke(target, type, invocationContext);
-  }
-
-  private static boolean noNeedToUseGraphLense(
-      DexMethod method, Invoke.Type type, GraphLense graphLense) {
-    assert graphLense.lookupMethod(method, null, type).getType() == type;
-    return true;
-  }
-
-  @Override
-  public void visitInsn(int opcode) {
-    switch (opcode) {
-      case Opcodes.MONITORENTER:
-      case Opcodes.MONITOREXIT:
-        updateConstraint(inliningConstraints.forMonitor());
-        break;
-
-      default:
-        // All instructions here lead to the inlining constraint ALWAYS.
-    }
-  }
-
-  @Override
-  public void visitMultiANewArrayInsn(String desc, int dims) {
-    DexType type = application.getTypeFromDescriptor(desc);
-    updateConstraint(inliningConstraints.forInvokeMultiNewArray(type, invocationContext));
-  }
-
-  @Override
-  public void visitTypeInsn(int opcode, String typeName) {
-    DexType type = application.getTypeFromName(typeName);
-    switch (opcode) {
-      case Opcodes.ANEWARRAY:
-        updateConstraint(inliningConstraints.forNewArrayEmpty(type, invocationContext));
-        break;
-
-      case Opcodes.CHECKCAST:
-        updateConstraint(inliningConstraints.forCheckCast(type, invocationContext));
-        break;
-
-      case Opcodes.INSTANCEOF:
-        updateConstraint(inliningConstraints.forInstanceOf(type, invocationContext));
-        break;
-
-      case Opcodes.NEW:
-        updateConstraint(inliningConstraints.forNewInstance(type, invocationContext));
-        break;
-
-      default:
-        throw new Unreachable("Unexpected opcode " + opcode);
-    }
-  }
-}