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) {}
