library;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:1: Error: Expected 'on' after this.
// extension try<T> on Class<T> {}
// ^^^^^^^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:11: Error: Expected a type, but got 'try'.
// extension try<T> on Class<T> {}
//           ^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:11: Error: A extension declaration must have a body, even if it is empty.
// Try adding an empty body.
// extension try<T> on Class<T> {}
//           ^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:11: Error: Expected an identifier, but got 'try'.
// extension try<T> on Class<T> {}
//           ^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:11: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
// extension try<T> on Class<T> {}
//           ^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:18: Error: Expected '{' before this.
// extension try<T> on Class<T> {}
//                  ^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:21: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
// extension try<T> on Class<T> {}
//                     ^^^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:21: Error: 'Class' is already declared in this scope.
// extension try<T> on Class<T> {}
//                     ^^^^^
// pkg/front_end/testcases/extensions/issue38600.dart:5:7: Context: Previous declaration of 'Class'.
// class Class<T> {}
//       ^^^^^
//
// pkg/front_end/testcases/extensions/issue38600.dart:7:18: Error: Type 'on' not found.
// extension try<T> on Class<T> {}
//                  ^^
//
import self as self;
import "dart:core" as core;

class Class<T extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::Class<self::Class::T*>*
    ;
}
extension _extension#0 on invalid-type {
}
static method try<T extends core::Object* = dynamic>() → dynamic
  ;
static method main() → dynamic
  ;
