diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart
new file mode 100644
index 0000000..e5661c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline.expect
new file mode 100644
index 0000000..e5661c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..e5661c0
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
new file mode 100644
index 0000000..95402af
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo(a: 0, (x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo(a: 0, (x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: #t1);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
new file mode 100644
index 0000000..95402af
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo(a: 0, (x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo(a: 0, (x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: #t1);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
new file mode 100644
index 0000000..d05e48f
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
+  ;
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic
+  ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure.dart";
+
+static method bar(core::int i) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart
new file mode 100644
index 0000000..7570e46
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_lib.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure.dart';
+
+bar(int i) {
+  i._foo(a: 0, (x) {
+    x;
+  });
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart
new file mode 100644
index 0000000..26dff41
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline.expect
new file mode 100644
index 0000000..26dff41
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..26dff41
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1_lib.dart';
+
+extension on int {
+  void _foo<T>(void Function(T) x, {required T a}) => throw '';
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
new file mode 100644
index 0000000..7e86e82
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo((x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo((x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: 0);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
new file mode 100644
index 0000000..7e86e82
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo((x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo((x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: 0);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
new file mode 100644
index 0000000..e74ddb8
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
+  ;
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic
+  ;
+
+library /*isNonNullableByDefault*/;
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
new file mode 100644
index 0000000..7e86e82
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
@@ -0,0 +1,42 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1_lib.dart";
+
+extension _extension#0 on core::int {
+  method _foo = self::_extension#0|_foo;
+  tearoff _foo = self::_extension#0|get#_foo;
+}
+static method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a = #C1}) → void
+  return throw "";
+static method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {T% a = #C1}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static method main() → dynamic {}
+
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+//   i._foo((x) {
+//     ^^^^
+//
+import self as self2;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///weekly_bot_91_failure_variation_1.dart";
+
+static method bar(core::int i) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart:4:5: Error: The method '_foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named '_foo'.
+  i._foo((x) {
+    ^^^^" in i{<unresolved>}._foo((dynamic x) → Null {
+    x;
+  }, a: 0);
+}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart
new file mode 100644
index 0000000..0611970
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1_lib.dart
@@ -0,0 +1,7 @@
+import 'weekly_bot_91_failure_variation_1.dart';
+
+bar(int i) {
+  i._foo((x) {
+    x;
+  }, a: 0);
+}
diff --git a/pkg/front_end/testcases/modular.status b/pkg/front_end/testcases/modular.status
index b2aa3a1..e478644 100644
--- a/pkg/front_end/testcases/modular.status
+++ b/pkg/front_end/testcases/modular.status
@@ -29,6 +29,7 @@
 general/crashes/crash_02/main: Crash
 general/crashes/crash_06/main: Crash
 general/duplicated_declarations: TypeCheckError
+general/error_recovery/weekly_bot_91_failure: Crash
 general/getter_vs_setter_type: TypeCheckError
 general/implement_semi_stub: TypeCheckError
 general/implicit_super_call: TypeCheckError
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 4025cef..09865af 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -78,6 +78,7 @@
 general/error_recovery/issue_39958_02: RuntimeError
 general/error_recovery/issue_39958_03: RuntimeError
 general/error_recovery/issue_39958_04: RuntimeError
+general/error_recovery/weekly_bot_91_failure: Crash
 general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/getter_vs_setter_type: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 50e8f90..db831f6 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -168,6 +168,7 @@
 general/error_recovery/issue_39958_02: RuntimeError
 general/error_recovery/issue_39958_03: RuntimeError
 general/error_recovery/issue_39958_04: RuntimeError
+general/error_recovery/weekly_bot_91_failure: Crash
 general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/getter_vs_setter_type: TypeCheckError
diff --git a/tools/VERSION b/tools/VERSION
index 6db6686..1be6210 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 128
+PRERELEASE 129
 PRERELEASE_PATCH 0
\ No newline at end of file
