library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:7:10: Error: Superclass has no method named '[]='.
//     super[4] = 42;
//          ^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:9:17: Error: Superclass has no method named '[]'.
//     return super[2];
//                 ^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:8:10: Error: Superclass has no method named '[]'.
//     super[4] += 5;
//          ^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:8:10: Error: Superclass has no method named '[]='.
//     super[4] += 5;
//          ^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:3: Error: 'on' isn't a type.
//   on Exception catch (e) { }
//   ^^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:6: Error: Expected ';' after this.
//   on Exception catch (e) { }
//      ^^^^^^^^^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:16: Error: 'catch' can't be used as an identifier because it's a keyword.
// Try renaming this to be an identifier that isn't a keyword.
//   on Exception catch (e) { }
//                ^^^^^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:23: Error: Undefined name 'e'.
//   on Exception catch (e) { }
//                       ^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:16: Error: Method not found: 'catch'.
//   on Exception catch (e) { }
//                ^^^^^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:24: Error: Expected ';' after this.
//   on Exception catch (e) { }
//                        ^
//
import self as self;
import "dart:core" as core;

class E extends core::Object {
  synthetic constructor •() → self::E
    : super core::Object::•()
    ;
  method foo() → dynamic {
    super.[]=(4, 42);
    let final core::int #t1 = 4 in invalid-expression "pkg/front_end/testcases/rasta/unresolved_recovery.dart:8:10: Error: Superclass has no method named '[]='.
    super[4] += 5;
         ^";
    return super.[](2);
  }
}
static method beforeTestMissingTry() → dynamic {
  self::testMissingTry();
}
static method testMissingTry() → dynamic {
  invalid-type Exception;
  invalid-expression "pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:16: Error: Method not found: 'catch'.
  on Exception catch (e) { }
               ^^^^^";
  {}
}
static method main() → dynamic {}
