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

class A1 extends core::Object {
  final field core::int foo;
  constructor •(core::int foo) → self::A1
    ;
}
class B1 extends self::A1 {
  constructor •(core::int foo) → self::B1
    ;
}
class A2 extends core::Object {
  final field (core::int) → core::int foo;
  constructor •((core::int) → core::int foo) → self::A2
    ;
}
class B2 extends self::A2 {
  constructor •((core::int) → core::int foo) → self::B2
    ;
}
class A3 extends core::Object {
  final field (core::int) → core::int foo;
  constructor •((dynamic) → core::int foo) → self::A3
    ;
}
class B3 extends self::A3 {
  constructor •((dynamic) → core::int foo) → self::B3
    ;
}
class A4 extends core::Object {
  final field (() → void) → () → void foo;
  constructor •((() → void) → () → void foo) → self::A4
    ;
}
class B4 extends self::A4 {
  constructor •((() → void) → () → void foo) → self::B4
    ;
}
class A5 extends core::Object {
  final field (() → void) → () → void foo;
  constructor •((() → void) → () → void foo) → self::A5
    ;
}
class B5 extends self::A5 {
  constructor •((() → void) → () → void foo) → self::B5
    ;
}
static method main() → dynamic
  ;
