diff --git a/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
index 129ffa1..ef163ad 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
@@ -1078,7 +1078,6 @@
             }
           } else {
             arguments.add(value);
-            argumentRegisters += value.requiredRegisters();
             if (instruction.isInvokeMethod()) {
               argumentTypes.add(argumentTypeFromValue(value, instruction.asInvokeMethod(), i));
             } else {
@@ -1549,7 +1548,6 @@
                           representative.getDefinition().getClassFileVersion());
                     }
                   });
-      assert outlineMethod.getReference().getArity() <= Constants.U8BIT_MAX;
       eventConsumer.acceptOutlineMethod(outlineMethod, sites);
       generatedOutlines.put(outline, outlineMethod.getReference());
       outlineMethods.add(outlineMethod);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineInvokeStaticBailoutTest.java b/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineInvokeStaticBailoutTest.java
deleted file mode 100644
index a127403..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/outliner/OutlineInvokeStaticBailoutTest.java
+++ /dev/null
@@ -1,426 +0,0 @@
-// Copyright (c) 2023, 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.ir.optimize.outliner;
-
-import com.android.tools.r8.NeverInline;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.StringUtils;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-@RunWith(Parameterized.class)
-// This is a reproduction for b/291130232.
-public class OutlineInvokeStaticBailoutTest extends TestBase {
-
-  private static final String EXPECTED_RESULT =
-      StringUtils.lines(
-          "1000 1001 1002",
-          "1003 1004 1005",
-          "1006 1007 1008",
-          "1009 1010 1011",
-          "1012 1013 1014",
-          "1015 1016 1017",
-          "1018 1019 1020",
-          "1021 1022 1023",
-          "1024 1025 1026",
-          "1027 1028 1029",
-          "1030 1031 1032",
-          "1033 1034 1035",
-          "1036 1037 1038",
-          "1039 1040 1041",
-          "1042 1043 1044",
-          "1045 1046 1047",
-          "1048 1049 1050",
-          "1051 1052 1053",
-          "1054 1055 1056",
-          "1057 1058 1059",
-          "1060 1061 1062",
-          "1063 1064 1065",
-          "1066 1067 1068",
-          "1069 1070 1071",
-          "1072 1073 1074",
-          "1075 1076 1077",
-          "1078 1079 1080",
-          "1081 1082 1083",
-          "1084 1085 1086",
-          "1087 1088 1089",
-          "1090 1091 1092",
-          "1093 1094 1095",
-          "1096 1097 1098",
-          "1099 1100 1101",
-          "1102 1103 1104",
-          "1105 1106 1107",
-          "1108 1109 1110",
-          "1111 1112 1113",
-          "1114 1115 1116",
-          "1117 1118 1119",
-          "1120 1121 1122",
-          "1123 1124 1125",
-          "1126 1127 1128",
-          "1129 1130 1131",
-          "1132 1133 1134",
-          "1135 1136 1137",
-          "1138 1139 1140",
-          "1141 1142 1143",
-          "1144 1145 1146",
-          "1147 1148 1149",
-          "1150 1151 1152",
-          "1153 1154 1155",
-          "1156 1157 1158",
-          "1159 1160 1161",
-          "1162 1163 1164",
-          "1165 1166 1167",
-          "1168 1169 1170",
-          "1171 1172 1173",
-          "1174 1175 1176",
-          "1177 1178 1179",
-          "1180 1181 1182",
-          "1183 1184 1185",
-          "1186 1187 1188",
-          "1189 1190 1191",
-          "1192 1193 1194",
-          "1195 1196 1197",
-          "1198 1199 1200",
-          "1201 1202 1203",
-          "1204 1205 1206",
-          "1207 1208 1209",
-          "1210 1211 1212",
-          "1213 1214 1215",
-          "1216 1217 1218",
-          "1219 1220 1221",
-          "1222 1223 1224",
-          "1225 1226 1227",
-          "1228 1229 1230",
-          "1231 1232 1233",
-          "1234 1235 1236",
-          "1237 1238 1239",
-          "1240 1241 1242",
-          "1243 1244 1245",
-          "1246 1247 1248",
-          "1249 1250 1251",
-          "1252 1253 1254",
-          "1255 1256 1257",
-          "1258 1259 1260",
-          "1261 1262 1263",
-          "1264 1265 1266",
-          "1267 1268 1269",
-          "0 1 2",
-          "3 4 5",
-          "6 7 8",
-          "9 10 11",
-          "12 13 14",
-          "15 16 17",
-          "18 19 20",
-          "21 22 23",
-          "24 25 26",
-          "27 28 29",
-          "30 31 32",
-          "33 34 35",
-          "36 37 38",
-          "39 40 41",
-          "42 43 44",
-          "45 46 47",
-          "48 49 50",
-          "51 52 53",
-          "54 55 56",
-          "57 58 59",
-          "60 61 62",
-          "63 64 65",
-          "66 67 68",
-          "69 70 71",
-          "72 73 74",
-          "75 76 77",
-          "78 79 80",
-          "81 82 83",
-          "84 85 86",
-          "87 88 89",
-          "90 91 92",
-          "93 94 95",
-          "96 97 98",
-          "99 100 101",
-          "102 103 104",
-          "105 106 107",
-          "108 109 110",
-          "111 112 113",
-          "114 115 116",
-          "117 118 119",
-          "120 121 122",
-          "123 124 125",
-          "126 127 128",
-          "129 130 131",
-          "132 133 134",
-          "135 136 137",
-          "138 139 140",
-          "141 142 143",
-          "144 145 146",
-          "147 148 149",
-          "150 151 152",
-          "153 154 155",
-          "156 157 158",
-          "159 160 161",
-          "162 163 164",
-          "165 166 167",
-          "168 169 170",
-          "171 172 173",
-          "174 175 176",
-          "177 178 179",
-          "180 181 182",
-          "183 184 185",
-          "186 187 188",
-          "189 190 191",
-          "192 193 194",
-          "195 196 197",
-          "198 199 200",
-          "201 202 203",
-          "204 205 206",
-          "207 208 209",
-          "210 211 212",
-          "213 214 215",
-          "216 217 218",
-          "219 220 221",
-          "222 223 224",
-          "225 226 227",
-          "228 229 230",
-          "231 232 233",
-          "234 235 236",
-          "237 238 239",
-          "240 241 242",
-          "243 244 245",
-          "246 247 248",
-          "249 250 251",
-          "252 253 254",
-          "255 256 257",
-          "258 259 260",
-          "261 262 263",
-          "264 265 266",
-          "267 268 269");
-
-  private final TestParameters parameters;
-
-  @Parameterized.Parameters(name = "{0}")
-  public static TestParametersCollection data() {
-    return getTestParameters().withAllRuntimesAndApiLevels().build();
-  }
-
-  public OutlineInvokeStaticBailoutTest(TestParameters parameters) {
-    this.parameters = parameters;
-  }
-
-  @Test
-  public void test() throws Exception {
-    testForR8(parameters.getBackend())
-        .addInnerClasses(getClass())
-        .addKeepMainRule(TestClass.class)
-        .addOptionsModification(options -> options.outline.threshold = 2)
-        .enableInliningAnnotations()
-        .setMinApi(parameters)
-        .run(parameters.getRuntime(), TestClass.class)
-        .assertSuccessWithOutput(EXPECTED_RESULT);
-  }
-
-  public static class TestClass {
-
-    public static void main(String[] args) {
-      toOutline1();
-      toOutline2();
-    }
-
-    @NeverInline
-    private static void print(String s1, String s2, String s3) {
-      System.out.println(s1 + " " + s2 + " " + s3);
-    }
-
-    @NeverInline
-    private static void toOutline1() {
-      print("1000", "1001", "1002");
-      print("1003", "1004", "1005");
-      print("1006", "1007", "1008");
-      print("1009", "1010", "1011");
-      print("1012", "1013", "1014");
-      print("1015", "1016", "1017");
-      print("1018", "1019", "1020");
-      print("1021", "1022", "1023");
-      print("1024", "1025", "1026");
-      print("1027", "1028", "1029");
-      print("1030", "1031", "1032");
-      print("1033", "1034", "1035");
-      print("1036", "1037", "1038");
-      print("1039", "1040", "1041");
-      print("1042", "1043", "1044");
-      print("1045", "1046", "1047");
-      print("1048", "1049", "1050");
-      print("1051", "1052", "1053");
-      print("1054", "1055", "1056");
-      print("1057", "1058", "1059");
-      print("1060", "1061", "1062");
-      print("1063", "1064", "1065");
-      print("1066", "1067", "1068");
-      print("1069", "1070", "1071");
-      print("1072", "1073", "1074");
-      print("1075", "1076", "1077");
-      print("1078", "1079", "1080");
-      print("1081", "1082", "1083");
-      print("1084", "1085", "1086");
-      print("1087", "1088", "1089");
-      print("1090", "1091", "1092");
-      print("1093", "1094", "1095");
-      print("1096", "1097", "1098");
-      print("1099", "1100", "1101");
-      print("1102", "1103", "1104");
-      print("1105", "1106", "1107");
-      print("1108", "1109", "1110");
-      print("1111", "1112", "1113");
-      print("1114", "1115", "1116");
-      print("1117", "1118", "1119");
-      print("1120", "1121", "1122");
-      print("1123", "1124", "1125");
-      print("1126", "1127", "1128");
-      print("1129", "1130", "1131");
-      print("1132", "1133", "1134");
-      print("1135", "1136", "1137");
-      print("1138", "1139", "1140");
-      print("1141", "1142", "1143");
-      print("1144", "1145", "1146");
-      print("1147", "1148", "1149");
-      print("1150", "1151", "1152");
-      print("1153", "1154", "1155");
-      print("1156", "1157", "1158");
-      print("1159", "1160", "1161");
-      print("1162", "1163", "1164");
-      print("1165", "1166", "1167");
-      print("1168", "1169", "1170");
-      print("1171", "1172", "1173");
-      print("1174", "1175", "1176");
-      print("1177", "1178", "1179");
-      print("1180", "1181", "1182");
-      print("1183", "1184", "1185");
-      print("1186", "1187", "1188");
-      print("1189", "1190", "1191");
-      print("1192", "1193", "1194");
-      print("1195", "1196", "1197");
-      print("1198", "1199", "1200");
-      print("1201", "1202", "1203");
-      print("1204", "1205", "1206");
-      print("1207", "1208", "1209");
-      print("1210", "1211", "1212");
-      print("1213", "1214", "1215");
-      print("1216", "1217", "1218");
-      print("1219", "1220", "1221");
-      print("1222", "1223", "1224");
-      print("1225", "1226", "1227");
-      print("1228", "1229", "1230");
-      print("1231", "1232", "1233");
-      print("1234", "1235", "1236");
-      print("1237", "1238", "1239");
-      print("1240", "1241", "1242");
-      print("1243", "1244", "1245");
-      print("1246", "1247", "1248");
-      print("1249", "1250", "1251");
-      print("1252", "1253", "1254");
-      print("1255", "1256", "1257");
-      print("1258", "1259", "1260");
-      print("1261", "1262", "1263");
-      print("1264", "1265", "1266");
-      print("1267", "1268", "1269");
-    }
-
-    @NeverInline
-    private static void toOutline2() {
-      print("0", "1", "2");
-      print("3", "4", "5");
-      print("6", "7", "8");
-      print("9", "10", "11");
-      print("12", "13", "14");
-      print("15", "16", "17");
-      print("18", "19", "20");
-      print("21", "22", "23");
-      print("24", "25", "26");
-      print("27", "28", "29");
-      print("30", "31", "32");
-      print("33", "34", "35");
-      print("36", "37", "38");
-      print("39", "40", "41");
-      print("42", "43", "44");
-      print("45", "46", "47");
-      print("48", "49", "50");
-      print("51", "52", "53");
-      print("54", "55", "56");
-      print("57", "58", "59");
-      print("60", "61", "62");
-      print("63", "64", "65");
-      print("66", "67", "68");
-      print("69", "70", "71");
-      print("72", "73", "74");
-      print("75", "76", "77");
-      print("78", "79", "80");
-      print("81", "82", "83");
-      print("84", "85", "86");
-      print("87", "88", "89");
-      print("90", "91", "92");
-      print("93", "94", "95");
-      print("96", "97", "98");
-      print("99", "100", "101");
-      print("102", "103", "104");
-      print("105", "106", "107");
-      print("108", "109", "110");
-      print("111", "112", "113");
-      print("114", "115", "116");
-      print("117", "118", "119");
-      print("120", "121", "122");
-      print("123", "124", "125");
-      print("126", "127", "128");
-      print("129", "130", "131");
-      print("132", "133", "134");
-      print("135", "136", "137");
-      print("138", "139", "140");
-      print("141", "142", "143");
-      print("144", "145", "146");
-      print("147", "148", "149");
-      print("150", "151", "152");
-      print("153", "154", "155");
-      print("156", "157", "158");
-      print("159", "160", "161");
-      print("162", "163", "164");
-      print("165", "166", "167");
-      print("168", "169", "170");
-      print("171", "172", "173");
-      print("174", "175", "176");
-      print("177", "178", "179");
-      print("180", "181", "182");
-      print("183", "184", "185");
-      print("186", "187", "188");
-      print("189", "190", "191");
-      print("192", "193", "194");
-      print("195", "196", "197");
-      print("198", "199", "200");
-      print("201", "202", "203");
-      print("204", "205", "206");
-      print("207", "208", "209");
-      print("210", "211", "212");
-      print("213", "214", "215");
-      print("216", "217", "218");
-      print("219", "220", "221");
-      print("222", "223", "224");
-      print("225", "226", "227");
-      print("228", "229", "230");
-      print("231", "232", "233");
-      print("234", "235", "236");
-      print("237", "238", "239");
-      print("240", "241", "242");
-      print("243", "244", "245");
-      print("246", "247", "248");
-      print("249", "250", "251");
-      print("252", "253", "254");
-      print("255", "256", "257");
-      print("258", "259", "260");
-      print("261", "262", "263");
-      print("264", "265", "266");
-      print("267", "268", "269");
-    }
-  }
-}
