import 'dart:async';

typedef T<X> = X;
T<int>? v1;
List<T<void>> v2 = [];
final T<String> v3 = throw "Anything";
const List<T<C>> v4 = [];
const v5 = <Type, Type>{T: T};

abstract class C {
  static T<C>? v1;
  static List<T<T>> v2 = [];
  static final T<Null> v3 = throw "Anything";
  static const List<T<List>> v4 = [];
  T<D>? v5;
  List<T<T>> v6 = [];
  final T<Null> v7;
  C() : v7 = null;
  C.name1(this.v5, this.v7);
  factory C.name2(T<D> arg1, T<Null> arg2) = C1.name1;
  T<double> operator +(T<double> other);
  T<FutureOr<FutureOr<void>>> get g;
  set g(T<FutureOr<FutureOr<void>>> value);
  Map<T<C>, T<C>> m1(covariant T<C> arg1, [Set<Set<T<C>>> arg2]);
  void m2({T arg1, Map<T, T> arg2(T Function(T) arg21, T arg22)});
}

class C1 implements C {
  C1.name1(T<D> arg1, T<Null> arg2);
  noSuchMethod(Invocation invocation) => throw 0;
}

class D {}

extension E on T<dynamic> {
  T<dynamic> foo(T<dynamic> t) => t;
}

main() {}
