class A1 {
  A1(this.foo);
  A1.named(this.foo);
  A1.named2(int foo) : foo = foo;
  A1.named3({required int foo}) : foo = foo;
  final int foo;
}

class A2 {
  A2({required int this.foo, required String this.bar});
  final String bar;
  final int foo;
}

class B1 extends A1 {
  B1(super.foo);
  B1.named(super.foo) : super.named();
  B1.named2(super.foo) : super.named2();
  B1.named3({required super.foo}) : super.named3();
}

class B2 extends A2 {
  B2({required super.bar, required super.foo});
}

main() {}
