withUnnamedArguments(int? i, void Function(void Function(), Object?) f) {}
withUnnamedArgumentsParenthesized(
    int? i, void Function(void Function(), Object?) f) {}
withUnnamedArgumentsParenthesizedTwice(
    int? i, void Function(void Function(), Object?) f) {}
withNamedArguments(
    int? i, void Function({required void Function() g, Object? x}) f) {}
withNamedArgumentsParenthesized(
    int? i, void Function({required void Function() g, Object? x}) f) {}
withNamedArgumentsParenthesizedTwice(
    int? i, void Function({required void Function() g, Object? x}) f) {}
withIdentical_lhs(int? i) {}
withIdentical_rhs(int? i) {}

class B {
  B(Object? x, void Function() g, Object? y);
  B.redirectingConstructorInvocation(int? i)
      : this(i!, () {
          i = null;
        }, i);
}

class C extends B {
  C.superConstructorInvocation(int? i)
      : super(i!, () {
          i = null;
        }, i);
}

main() {}
