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> {
  static late int ;
  lateExtensionField1;
  static late int ;
  lateExtensionField2;
  static staticMethod() {}
}
main() {}
expect(expected, actual) {}
throws(f(), String message) {}
