diff --git a/test/463-checker-boolean-simplifier/src/Main.java b/test/463-checker-boolean-simplifier/src/Main.java
index 3f3110f..e237448 100644
--- a/test/463-checker-boolean-simplifier/src/Main.java
+++ b/test/463-checker-boolean-simplifier/src/Main.java
@@ -41,9 +41,9 @@
   // CHECK-DAG:     <<Param:z\d+>>    ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
   // CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
-  // CHECK-DAG:                       If [ <<Param>> ]
-  // CHECK-DAG:     <<Phi:i\d+>>      Phi [ <<Const1>> <<Const0>> ]
-  // CHECK-DAG:                       Return [ <<Phi>> ]
+  // CHECK-DAG:                       If [<<Param>>]
+  // CHECK-DAG:     <<Phi:i\d+>>      Phi [<<Const1>>,<<Const0>>]
+  // CHECK-DAG:                       Return [<<Phi>>]
 
   // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (before)
   // CHECK:                           Goto
@@ -54,8 +54,8 @@
   // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (after)
   // CHECK-DAG:     <<Param:z\d+>>    ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
-  // CHECK-DAG:     <<NotParam:z\d+>> BooleanNot [ <<Param>> ]
-  // CHECK-DAG:                       Return [ <<NotParam>> ]
+  // CHECK-DAG:     <<NotParam:z\d+>> BooleanNot [<<Param>>]
+  // CHECK-DAG:                       Return [<<NotParam>>]
 
   // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (after)
   // CHECK-NOT:                       If
@@ -79,18 +79,18 @@
   // CHECK-DAG:     <<ParamY:i\d+>>   ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
   // CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
-  // CHECK-DAG:     <<Cond:z\d+>>     GreaterThan [ <<ParamX>> <<ParamY>> ]
-  // CHECK-DAG:                       If [ <<Cond>> ]
-  // CHECK-DAG:     <<Phi:i\d+>>      Phi [ <<Const0>> <<Const1>> ]
-  // CHECK-DAG:                       Return [ <<Phi>> ]
+  // CHECK-DAG:     <<Cond:z\d+>>     GreaterThan [<<ParamX>>,<<ParamY>>]
+  // CHECK-DAG:                       If [<<Cond>>]
+  // CHECK-DAG:     <<Phi:i\d+>>      Phi [<<Const0>>,<<Const1>>]
+  // CHECK-DAG:                       Return [<<Phi>>]
 
   // CHECK-START: boolean Main.GreaterThan(int, int) boolean_simplifier (after)
   // CHECK-DAG:     <<ParamX:i\d+>>   ParameterValue
   // CHECK-DAG:     <<ParamY:i\d+>>   ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
   // CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
-  // CHECK-DAG:     <<Cond:z\d+>>     GreaterThan [ <<ParamX>> <<ParamY>> ]
-  // CHECK-DAG:                       Return [ <<Cond>> ]
+  // CHECK-DAG:     <<Cond:z\d+>>     GreaterThan [<<ParamX>>,<<ParamY>>]
+  // CHECK-DAG:                       Return [<<Cond>>]
 
   public static boolean GreaterThan(int x, int y) {
     return (x <= y) ? false : true;
@@ -106,18 +106,18 @@
   // CHECK-DAG:     <<ParamY:i\d+>>   ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
   // CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
-  // CHECK-DAG:     <<Cond:z\d+>>     GreaterThanOrEqual [ <<ParamX>> <<ParamY>> ]
-  // CHECK-DAG:                       If [ <<Cond>> ]
-  // CHECK-DAG:     <<Phi:i\d+>>      Phi [ <<Const1>> <<Const0>> ]
-  // CHECK-DAG:                       Return [ <<Phi>> ]
+  // CHECK-DAG:     <<Cond:z\d+>>     GreaterThanOrEqual [<<ParamX>>,<<ParamY>>]
+  // CHECK-DAG:                       If [<<Cond>>]
+  // CHECK-DAG:     <<Phi:i\d+>>      Phi [<<Const1>>,<<Const0>>]
+  // CHECK-DAG:                       Return [<<Phi>>]
 
   // CHECK-START: boolean Main.LessThan(int, int) boolean_simplifier (after)
   // CHECK-DAG:     <<ParamX:i\d+>>   ParameterValue
   // CHECK-DAG:     <<ParamY:i\d+>>   ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
   // CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
-  // CHECK-DAG:     <<Cond:z\d+>>     LessThan [ <<ParamX>> <<ParamY>> ]
-  // CHECK-DAG:                       Return [ <<Cond>> ]
+  // CHECK-DAG:     <<Cond:z\d+>>     LessThan [<<ParamX>>,<<ParamY>>]
+  // CHECK-DAG:                       Return [<<Cond>>]
 
   // CHECK-START: boolean Main.LessThan(int, int) boolean_simplifier (after)
   // CHECK-NOT:                       GreaterThanOrEqual
@@ -137,25 +137,25 @@
   // CHECK-DAG:     <<ParamZ:i\d+>>   ParameterValue
   // CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
   // CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
-  // CHECK-DAG:     <<CondXY:z\d+>>   GreaterThan [ <<ParamX>> <<ParamY>> ]
-  // CHECK-DAG:                       If [ <<CondXY>> ]
-  // CHECK-DAG:     <<CondYZ:z\d+>>   GreaterThan [ <<ParamY>> <<ParamZ>> ]
-  // CHECK-DAG:                       If [ <<CondYZ>> ]
-  // CHECK-DAG:     <<CondXYZ:z\d+>>  NotEqual [ <<PhiXY:i\d+>> <<PhiYZ:i\d+>> ]
-  // CHECK-DAG:                       If [ <<CondXYZ>> ]
-  // CHECK-DAG:                       Return [ <<PhiXYZ:i\d+>> ]
-  // CHECK-DAG:     <<PhiXY>>         Phi [ <<Const1>> <<Const0>> ]
-  // CHECK-DAG:     <<PhiYZ>>         Phi [ <<Const1>> <<Const0>> ]
-  // CHECK-DAG:     <<PhiXYZ>>        Phi [ <<Const1>> <<Const0>> ]
+  // CHECK-DAG:     <<CondXY:z\d+>>   GreaterThan [<<ParamX>>,<<ParamY>>]
+  // CHECK-DAG:                       If [<<CondXY>>]
+  // CHECK-DAG:     <<CondYZ:z\d+>>   GreaterThan [<<ParamY>>,<<ParamZ>>]
+  // CHECK-DAG:                       If [<<CondYZ>>]
+  // CHECK-DAG:     <<CondXYZ:z\d+>>  NotEqual [<<PhiXY:i\d+>>,<<PhiYZ:i\d+>>]
+  // CHECK-DAG:                       If [<<CondXYZ>>]
+  // CHECK-DAG:                       Return [<<PhiXYZ:i\d+>>]
+  // CHECK-DAG:     <<PhiXY>>         Phi [<<Const1>>,<<Const0>>]
+  // CHECK-DAG:     <<PhiYZ>>         Phi [<<Const1>>,<<Const0>>]
+  // CHECK-DAG:     <<PhiXYZ>>        Phi [<<Const1>>,<<Const0>>]
 
   // CHECK-START: boolean Main.ValuesOrdered(int, int, int) boolean_simplifier (after)
   // CHECK-DAG:     <<ParamX:i\d+>>   ParameterValue
   // CHECK-DAG:     <<ParamY:i\d+>>   ParameterValue
   // CHECK-DAG:     <<ParamZ:i\d+>>   ParameterValue
-  // CHECK-DAG:     <<CmpXY:z\d+>>    LessThanOrEqual [ <<ParamX>> <<ParamY>> ]
-  // CHECK-DAG:     <<CmpYZ:z\d+>>    LessThanOrEqual [ <<ParamY>> <<ParamZ>> ]
-  // CHECK-DAG:     <<CmpXYZ:z\d+>>   Equal [ <<CmpXY>> <<CmpYZ>> ]
-  // CHECK-DAG:                       Return [ <<CmpXYZ>> ]
+  // CHECK-DAG:     <<CmpXY:z\d+>>    LessThanOrEqual [<<ParamX>>,<<ParamY>>]
+  // CHECK-DAG:     <<CmpYZ:z\d+>>    LessThanOrEqual [<<ParamY>>,<<ParamZ>>]
+  // CHECK-DAG:     <<CmpXYZ:z\d+>>   Equal [<<CmpXY>>,<<CmpYZ>>]
+  // CHECK-DAG:                       Return [<<CmpXYZ>>]
 
   public static boolean ValuesOrdered(int x, int y, int z) {
     return (x <= y) == (y <= z);
@@ -165,18 +165,18 @@
   // CHECK-DAG:     <<Param:z\d+>>    ParameterValue
   // CHECK-DAG:     <<Const42:i\d+>>  IntConstant 42
   // CHECK-DAG:     <<Const43:i\d+>>  IntConstant 43
-  // CHECK-DAG:     <<NotParam:z\d+>> BooleanNot [ <<Param>> ]
-  // CHECK-DAG:                       If [ <<NotParam>> ]
-  // CHECK-DAG:     <<Phi:i\d+>>      Phi [ <<Const42>> <<Const43>> ]
-  // CHECK-DAG:                       Return [ <<Phi>> ]
+  // CHECK-DAG:     <<NotParam:z\d+>> BooleanNot [<<Param>>]
+  // CHECK-DAG:                       If [<<NotParam>>]
+  // CHECK-DAG:     <<Phi:i\d+>>      Phi [<<Const42>>,<<Const43>>]
+  // CHECK-DAG:                       Return [<<Phi>>]
 
   // CHECK-START: int Main.NegatedCondition(boolean) boolean_simplifier (after)
   // CHECK-DAG:     <<Param:z\d+>>    ParameterValue
   // CHECK-DAG:     <<Const42:i\d+>>  IntConstant 42
   // CHECK-DAG:     <<Const43:i\d+>>  IntConstant 43
-  // CHECK-DAG:                       If [ <<Param>> ]
-  // CHECK-DAG:     <<Phi:i\d+>>      Phi [ <<Const42>> <<Const43>> ]
-  // CHECK-DAG:                       Return [ <<Phi>> ]
+  // CHECK-DAG:                       If [<<Param>>]
+  // CHECK-DAG:     <<Phi:i\d+>>      Phi [<<Const42>>,<<Const43>>]
+  // CHECK-DAG:                       Return [<<Phi>>]
 
   // Note: The fact that branches are swapped is verified by running the test.
 
