class A1 {
  final int foo;
  A1(int this.foo);
}

class B1 extends A1 {
  B1(int super.foo);
}

class A2 {
  final int Function(int) foo;
  A2(int Function(int) this.foo);
}

class B2 extends A2 {
  B2(int Function(int) super.foo);
}

class A3 {
  final int Function(int) foo;
  A3(int this.foo(int));
}

class B3 extends A3 {
  B3(int super.foo(int));
}

class A4 {
  final void Function() Function(void Function()) foo;
  A4(void Function() this.foo(void Function()));
}

class B4 extends A4 {
  B4(void Function() super.foo(void Function()));
}

class A5 {
  final void Function() Function(void Function()) foo;
  A5(void Function() Function(void Function()) this.foo);
}

class B5 extends A5 {
  B5(void Function() Function(void Function()) super.foo);
}

main() {}
