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

class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  method foo({core::bool? c = true, core::bool? a}) → dynamic
    ;
}
class B extends self::A {
  synthetic constructor •() → self::B
    ;
  method foo({core::bool? c = true, core::bool? a}) → dynamic
    ;
}
class C extends self::B {
  synthetic constructor •() → self::C
    ;
  method foo({core::bool? c = true, core::bool? a}) → dynamic
    ;
}
class A1 extends core::Object {
  synthetic constructor •() → self::A1
    ;
  method foo({core::bool? a = true, core::bool? c}) → dynamic
    ;
}
class B1 extends self::A1 {
  synthetic constructor •() → self::B1
    ;
  method foo({core::bool? a = true, core::bool? c}) → dynamic
    ;
}
class C1 extends self::B1 {
  synthetic constructor •() → self::C1
    ;
  method foo({core::bool? a = true, core::bool? c}) → dynamic
    ;
}
static method main() → dynamic
  ;
