class A<X> {
  A.foo() {}
  A() {}
  factory A.bar() => new A<X>();
}
testFoo() => A.foo;
testFooArgs() => A<int>.foo;
testNew() => A.new;
testNewArgs() => A<int>.new;
testBar() => A.bar;
testBarArgs() => A<int>.bar;
testFooExtraArgs() => A<int, String>.foo;
testNewExtraArgs() => A<int, String>.new;
testBarExtraArgs() => A<int, String>.bar;
method() {}
main() {}
