extension type B<T>(int it) {
  B.named(this.it);
  factory B.fact(int it) => B(it);
  factory B.redirect(int it) = B;
  get g0 => A(1);
  get g1 => A.new;
  get g2 => A.named(1);
  get g3 => A.named;
  get g4 => A.fact(1);
  get g5 => A.fact;
  get g6 => A.redirect(1);
  get g7 => A.redirect;
}

typedef A<X> = B<X>;

void main() {}
