late int ;
lateTopLevelField;
class Class<T> {
  static late int ;
  lateStaticField1;
  static late int ;
  lateStaticField2;
  static staticMethod() {}
  late int ;
  lateInstanceField;
  late T ;
  lateGenericInstanceField;
  instanceMethod(T value) {}
}
extension Extension<T> (){}
on Class<T> (){}
main() {}
expect(expected, actual) {}
throws(f(), String message) {}
