library;
//
// 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: Expected an identifier, but got 'catch'.
//   on Exception catch (e) { }
//                ^^^^^
//
// pkg/front_end/testcases/rasta/unresolved_recovery.dart:20:23: Error: Getter not found: '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 {}
