diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysFalseClassInlinerMethodConstraint.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysFalseClassInlinerMethodConstraint.java
index c441134..0ac793a 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysFalseClassInlinerMethodConstraint.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysFalseClassInlinerMethodConstraint.java
@@ -13,7 +13,7 @@
 
   private AlwaysFalseClassInlinerMethodConstraint() {}
 
-  public static AlwaysFalseClassInlinerMethodConstraint getInstance() {
+  static AlwaysFalseClassInlinerMethodConstraint getInstance() {
     return INSTANCE;
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysTrueClassInlinerMethodConstraint.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysTrueClassInlinerMethodConstraint.java
index 3488111..56e1226 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysTrueClassInlinerMethodConstraint.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/AlwaysTrueClassInlinerMethodConstraint.java
@@ -13,7 +13,7 @@
 
   private AlwaysTrueClassInlinerMethodConstraint() {}
 
-  public static AlwaysTrueClassInlinerMethodConstraint getInstance() {
+  static AlwaysTrueClassInlinerMethodConstraint getInstance() {
     return INSTANCE;
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraint.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraint.java
index e8ab3ab..640c4c7 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraint.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraint.java
@@ -11,4 +11,16 @@
   boolean isEligibleForNewInstanceClassInlining(ProgramMethod method);
 
   boolean isEligibleForStaticGetClassInlining(ProgramMethod method);
+
+  static AlwaysFalseClassInlinerMethodConstraint alwaysFalse() {
+    return AlwaysFalseClassInlinerMethodConstraint.getInstance();
+  }
+
+  static AlwaysTrueClassInlinerMethodConstraint alwaysTrue() {
+    return AlwaysTrueClassInlinerMethodConstraint.getInstance();
+  }
+
+  static OnlyNewInstanceClassInlinerMethodConstraint onlyNewInstanceClassInlining() {
+    return OnlyNewInstanceClassInlinerMethodConstraint.getInstance();
+  }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraintAnalysis.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraintAnalysis.java
index fea67a4..d36a76c 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraintAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/ClassInlinerMethodConstraintAnalysis.java
@@ -19,12 +19,12 @@
         isEligibleForStaticGetClassInlining(classInlinerEligibilityInfo, parameterUsagesInfo);
     if (isEligibleForNewInstanceClassInlining) {
       if (isEligibleForStaticGetClassInlining) {
-        return alwaysTrue();
+        return ClassInlinerMethodConstraint.alwaysTrue();
       }
-      return onlyNewInstanceClassInlining();
+      return ClassInlinerMethodConstraint.onlyNewInstanceClassInlining();
     }
     assert !isEligibleForStaticGetClassInlining;
-    return alwaysFalse();
+    return ClassInlinerMethodConstraint.alwaysFalse();
   }
 
   private static boolean isEligibleForNewInstanceClassInlining(
@@ -58,16 +58,4 @@
     }
     return true;
   }
-
-  private static AlwaysFalseClassInlinerMethodConstraint alwaysFalse() {
-    return AlwaysFalseClassInlinerMethodConstraint.getInstance();
-  }
-
-  private static AlwaysTrueClassInlinerMethodConstraint alwaysTrue() {
-    return AlwaysTrueClassInlinerMethodConstraint.getInstance();
-  }
-
-  private static OnlyNewInstanceClassInlinerMethodConstraint onlyNewInstanceClassInlining() {
-    return OnlyNewInstanceClassInlinerMethodConstraint.getInstance();
-  }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/OnlyNewInstanceClassInlinerMethodConstraint.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/OnlyNewInstanceClassInlinerMethodConstraint.java
index d3f35d4..9bb1702 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/OnlyNewInstanceClassInlinerMethodConstraint.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/constraint/OnlyNewInstanceClassInlinerMethodConstraint.java
@@ -13,7 +13,7 @@
 
   private OnlyNewInstanceClassInlinerMethodConstraint() {}
 
-  public static OnlyNewInstanceClassInlinerMethodConstraint getInstance() {
+  static OnlyNewInstanceClassInlinerMethodConstraint getInstance() {
     return INSTANCE;
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java
index 45764df..46b5a70 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java
@@ -13,7 +13,6 @@
 import com.android.tools.r8.ir.analysis.value.UnknownValue;
 import com.android.tools.r8.ir.code.InvokeDirect;
 import com.android.tools.r8.ir.optimize.classinliner.ClassInlinerEligibilityInfo;
-import com.android.tools.r8.ir.optimize.classinliner.constraint.AlwaysFalseClassInlinerMethodConstraint;
 import com.android.tools.r8.ir.optimize.classinliner.constraint.ClassInlinerMethodConstraint;
 import com.android.tools.r8.ir.optimize.info.ParameterUsagesInfo.ParameterUsage;
 import com.android.tools.r8.ir.optimize.info.bridge.BridgeInfo;
@@ -77,7 +76,7 @@
 
   @Override
   public ClassInlinerMethodConstraint getClassInlinerMethodConstraint() {
-    return AlwaysFalseClassInlinerMethodConstraint.getInstance();
+    return ClassInlinerMethodConstraint.alwaysFalse();
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java
index 43667c8..bdcaae4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java
@@ -16,7 +16,6 @@
 import com.android.tools.r8.ir.analysis.value.UnknownValue;
 import com.android.tools.r8.ir.code.InvokeDirect;
 import com.android.tools.r8.ir.optimize.classinliner.ClassInlinerEligibilityInfo;
-import com.android.tools.r8.ir.optimize.classinliner.constraint.AlwaysFalseClassInlinerMethodConstraint;
 import com.android.tools.r8.ir.optimize.classinliner.constraint.ClassInlinerMethodConstraint;
 import com.android.tools.r8.ir.optimize.info.ParameterUsagesInfo.ParameterUsage;
 import com.android.tools.r8.ir.optimize.info.bridge.BridgeInfo;
@@ -36,7 +35,7 @@
   private AbstractValue abstractReturnValue =
       DefaultMethodOptimizationInfo.UNKNOWN_ABSTRACT_RETURN_VALUE;
   private ClassInlinerMethodConstraint classInlinerConstraint =
-      AlwaysFalseClassInlinerMethodConstraint.getInstance();
+      ClassInlinerMethodConstraint.alwaysFalse();
   private TypeElement returnsObjectWithUpperBoundType = DefaultMethodOptimizationInfo.UNKNOWN_TYPE;
   private ClassTypeElement returnsObjectWithLowerBoundType =
       DefaultMethodOptimizationInfo.UNKNOWN_CLASS_TYPE;
