import 'issue46719.dart' as self;

List<X> m<X>(X x) => [x];

class A<T> {
  A();
  A.named();
  List<X> m<X>(X x) => [x];
  static List<X> n<X>(X x) => [x];
}

extension FunctionApplier on Function {
  void applyAndPrint(List<Object?> positionalArguments) =>
      print(Function.apply(this, positionalArguments, const {}));
}

test() {}
void main() {}
