diff --git a/test/564-checker-inline-loop/src/Main.java b/test/564-checker-inline-loop/src/Main.java
index 41eca35..6929913 100644
--- a/test/564-checker-inline-loop/src/Main.java
+++ b/test/564-checker-inline-loop/src/Main.java
@@ -21,6 +21,9 @@
   /// CHECK-DAG:                      Return [<<Invoke>>]
 
   /// CHECK-START: int Main.inlineLoop() inliner (after)
+  /// CHECK-NOT:                      InvokeStaticOrDirect
+
+  /// CHECK-START: int Main.inlineLoop() inliner (after)
   /// CHECK-DAG:     <<Constant:i\d+>>   IntConstant 42
   /// CHECK-DAG:                         Return [<<Constant>>]
 
@@ -28,31 +31,31 @@
   /// CHECK:                         Goto loop:{{B\d+}}
 
   public static int inlineLoop() {
-    return $inline$loopMethod();
+    return loopMethod();
   }
 
   /// CHECK-START: void Main.inlineWithinLoop() inliner (before)
   /// CHECK:      InvokeStaticOrDirect
 
+  /// CHECK-START: void Main.inlineWithinLoop() inliner (after)
+  /// CHECK-NOT:  InvokeStaticOrDirect
+
   /// CHECK-START: void Main.inlineWithinLoop() licm (after)
   /// CHECK-DAG:  Goto loop:<<OuterLoop:B\d+>> outer_loop:none
   /// CHECK-DAG:  Goto outer_loop:<<OuterLoop>>
 
   public static void inlineWithinLoop() {
     while (doLoop) {
-      $inline$loopMethod();
+      loopMethod();
     }
   }
 
-  public static int $inline$loopMethod() {
-    // We use `otherDoLoop` here so we don't propagate the knowledge that `doLoop` is true when
-    // inlining from `inlineWithinLoop`.
-    while (otherDoLoop) {}
+  public static int loopMethod() {
+    while (doLoop) {}
     return 42;
   }
 
   public static boolean doLoop = false;
-  public static boolean otherDoLoop = false;
 
   public static void main(String[] args) {
     inlineLoop();
