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: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:9:17: Error: Superclass has no method named '[]'.
//     return super[2];
//                 ^
//
// 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 {
    invalid-expression "pkg/front_end/testcases/rasta/unresolved_recovery.dart:7:10: Error: Superclass has no method named '[]='.
    super[4] = 42;
         ^";
    invalid-expression "pkg/front_end/testcases/rasta/unresolved_recovery.dart:8:10: Error: Superclass has no method named '[]='.
    super[4] += 5;
         ^";
    return invalid-expression "pkg/front_end/testcases/rasta/unresolved_recovery.dart:9:17: Error: Superclass has no method named '[]'.
    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 {}
