library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Class extends core::Object {
  synthetic constructor •() → self::Class
    ;
  get m1() → core::int
    ;
  set m2(core::int x) → void
    ;
}
extension Extension0 on self::Class {
  get m2 = self::Extension0|get#m2;
  get m4 = self::Extension0|get#m4;
  set m1 = self::Extension0|set#m1;
  set m3 = self::Extension0|set#m3;
}
extension Extension1 on self::Class {
  get m3 = self::Extension1|get#m3;
  set m4 = self::Extension1|set#m4;
}
static method Extension0|set#m1(lowered final self::Class #this, core::int x) → void
  ;
static method Extension0|get#m2(lowered final self::Class #this) → core::int
  ;
static method Extension0|set#m3(lowered final self::Class #this, core::int x) → void
  ;
static method Extension0|get#m4(lowered final self::Class #this) → core::int
  ;
static method Extension1|get#m3(lowered final self::Class #this) → core::int
  ;
static method Extension1|set#m4(lowered final self::Class #this, core::int x) → void
  ;
static method main() → dynamic
  ;
static method errors() → dynamic
  ;
static method expect(dynamic expected, dynamic actual) → dynamic
  ;
