library;
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(final self::Class* #this, core::int* x) → void
  ;
static method Extension0|get#m2(final self::Class* #this) → core::int*
  ;
static method Extension0|set#m3(final self::Class* #this, core::int* x) → void
  ;
static method Extension0|get#m4(final self::Class* #this) → core::int*
  ;
static method Extension1|get#m3(final self::Class* #this) → core::int*
  ;
static method Extension1|set#m4(final self::Class* #this, core::int* x) → void
  ;
static method main() → dynamic
  ;
static method errors() → dynamic
  ;
static method expect(dynamic expected, dynamic actual) → dynamic
  ;
