library /*isNonNullableByDefault*/;
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
    ;
}
extension A2 on self::A1 {
  get instanceProperty = self::A2|get#instanceProperty;
  operator + = self::A2|+;
  operator - = self::A2|-;
  operator unary- = self::A2|unary-;
  static field staticField = self::A2|staticField;
  static get staticProperty = get self::A2|staticProperty;
  set instanceProperty = self::A2|set#instanceProperty;
  static set staticProperty = set self::A2|staticProperty;
}
static field core::int A2|staticField;
static method A2|get#instanceProperty(lowered final self::A1 #this) → core::int
  ;
static method A2|set#instanceProperty(lowered final self::A1 #this, core::int value) → void
  ;
static method A2|+(lowered final self::A1 #this, core::int value) → core::int
  ;
static method A2|-(lowered final self::A1 #this, core::int value) → core::int
  ;
static method A2|unary-(lowered final self::A1 #this) → core::int
  ;
static get A2|staticProperty() → core::int
  ;
static set A2|staticProperty(core::int value) → void
  ;
static method main() → dynamic
  ;
