library;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/other_kinds.dart:18:1: Error: This requires the 'extension-methods' experiment to be enabled.
// Try enabling this experiment by adding it to the command line when compiling and running.
// extension A2 on A1 {
// ^^^^^^^^^
//
// pkg/front_end/testcases/extensions/other_kinds.dart:18:17: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
// extension A2 on A1 {
//                 ^^
//
// pkg/front_end/testcases/extensions/other_kinds.dart:18:17: Error: 'A1' is already declared in this scope.
// extension A2 on A1 {
//                 ^^
// pkg/front_end/testcases/extensions/other_kinds.dart:5:7: Context: Previous declaration of 'A1'.
// class A1 {
//       ^^
//
// pkg/front_end/testcases/extensions/other_kinds.dart:18:1: Warning: Type 'extension' not found.
// extension A2 on A1 {
// ^^^^^^^^^
//
// pkg/front_end/testcases/extensions/other_kinds.dart:18:14: Warning: Type 'on' not found.
// extension A2 on A1 {
//              ^^
//
import self as self;
import "dart:core" as core;

class A1 extends core::Object {
  field core::int* _instanceField;
  static field core::int* _staticField;
  synthetic constructor •() → self::A1*
    ;
  method getInstanceField() → core::int*
    ;
  method setInstanceField(core::int* value) → void
    ;
  static method getStaticField() → core::int*
    ;
  static method setStaticField(core::int* value) → void
    ;
}
static field invalid-type A2;
static method main() → dynamic
  ;
