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

class Class extends core::Object {
  field core::Function field1a;
  field () → core::int field1b;
  field (core::int) → core::int field2;
  field (core::int, core::int) → core::int field3;
  field (core::int, [core::int]) → core::int field4;
  field ([core::int, core::int]) → core::int field5;
  field (core::int, {b: core::int}) → core::int field6;
  field ({a: core::int, b: core::int}) → core::int field7;
  synthetic constructor •() → self::Class
    ;
  get getter1a() → core::Function
    ;
  get getter1b() → () → core::int
    ;
  get getter2() → (core::int) → core::int
    ;
  get getter3() → (core::int, core::int) → core::int
    ;
  get getter4() → (core::int, [core::int]) → core::int
    ;
  get getter5() → ([core::int, core::int]) → core::int
    ;
  get getter6() → (core::int, {b: core::int}) → core::int
    ;
  get getter7() → ({a: core::int, b: core::int}) → core::int
    ;
}
class Subclass extends self::Class {
  synthetic constructor •() → self::Subclass
    ;
  get field1a() → core::Function
    ;
  get field1b() → () → core::int
    ;
  get field2() → (core::int) → core::int
    ;
  get field3() → (core::int, core::int) → core::int
    ;
  get field4() → (core::int, [core::int]) → core::int
    ;
  get field5() → ([core::int, core::int]) → core::int
    ;
  get field6() → (core::int, {b: core::int}) → core::int
    ;
  get field7() → ({a: core::int, b: core::int}) → core::int
    ;
  get getter1a() → core::Function
    ;
  get getter1b() → () → core::int
    ;
  get getter2() → (core::int) → core::int
    ;
  get getter3() → (core::int, core::int) → core::int
    ;
  get getter4() → (core::int, [core::int]) → core::int
    ;
  get getter5() → ([core::int, core::int]) → core::int
    ;
  get getter6() → (core::int, {b: core::int}) → core::int
    ;
  get getter7() → ({a: core::int, b: core::int}) → core::int
    ;
}
static field core::bool enableRead;
static method read(core::int value) → core::int
  ;
static method method1() → core::int
  ;
static method method2(core::int a) → core::int
  ;
static method method3(core::int a, core::int b) → core::int
  ;
static method method4(core::int a, [core::int b]) → core::int
  ;
static method method5([core::int a, core::int b]) → core::int
  ;
static method method6(core::int a, {core::int b}) → core::int
  ;
static method method7({core::int a, core::int b}) → core::int
  ;
static method main() → dynamic
  ;
static method callField(self::Class c) → dynamic
  ;
static method callGetter(self::Class c) → dynamic
  ;
static method expect(dynamic expected, dynamic actual) → dynamic
  ;
