class B {
  final int x;
  B(this.x);
}

class C extends B {
  late final y = x + 1;
  C(int x) : super(x);
  method() => x;
}

int? lateTopLevelField1Init;
int initLateTopLevelField1(int value) {}
late final int lateTopLevelField1 = initLateTopLevelField1(123);

class Class<T> {
  static int? lateStaticField1Init;
  static int initLateStaticField1(int value) {}
  static late final int lateStaticField1 = initLateStaticField1(87);
  static int? lateStaticField2Init;
  static int initLateStaticField2(int value) {}
  static late final int lateStaticField2 = initLateStaticField2(42);
  static staticMethod() {}
  int? lateInstanceFieldInit;
  int initLateInstanceField(int value) {}
  late final int lateInstanceField = initLateInstanceField(16);
  T? lateGenericFieldInit;
  T initLateGenericField(T value) {}
  final T field;
  late final T lateGenericField = initLateGenericField(field);
  Class(this.field);
  instanceMethod() {}
}

extension Extension<T> on Class<T> {
  static int? lateExtensionField1Init;
  static int initLateExtensionField1(int value) {}
  static late final int lateExtensionField1 = initLateExtensionField1(87);
  static int? lateExtensionField2Init;
  static int initLateExtensionField2(int value) {}
  static late final int lateExtensionField2 = initLateExtensionField2(42);
  static staticMethod() {}
}

main() {}
expect(expected, actual) {}
