class A {
  A.foo1() {}
  A.foo2(int x) {}
  A() {}
  factory A.bar1() => new A();
}
A Function() test1() => A.foo1;
A Function() test2() => A.foo2;
A Function() test3() => A.new;
A Function(int) test4() => A.new;
A Function() test5() => A.bar1;
A Function(int) test6() => A.bar1;
main() {}
