final bool inSoundMode = <int?>[] is! List<int>;

class A<T> {
  A();
  factory A.fact() => new A<T>();
  factory A.redirect() = A<T>;
}

typedef F<X extends num> = A<X>;
typedef G<Y> = A<int>;
typedef H<X, Y> = A<X>;
const f1a = A<int>.new;
const f1b = F<int>.new;
const A<int> Function() f1c = F.new;
const f1d = A<int>.fact;
const f1e = F<int>.fact;
const A<int> Function() f1f = F.fact;
const f1g = A<int>.redirect;
const f1h = F<int>.redirect;
const A<int> Function() f1i = F.redirect;
const g1a = A<int>.new;
const g1b = G<String>.new;
const A<int> Function() g1c = G.new;
const h1a = A<int>.new;
const h1b = H<int, String>.new;
const A<int> Function() h1c = H.new;
main() {}
test<T extends num>() {}
expect(expected, actual) {}
