late int lateTopLevelField;
late final int lateFinalTopLevelField;
late final int lateFinalTopLevelFieldWithInit = 0;

class Class {
  late int lateInstanceField;
  late final int lateFinalInstanceField1;
  late final int lateFinalInstanceField2;
  late final int lateFinalInstanceFieldWithInit = 0;
  late Class lateInstanceFieldThis = this;
  late final Class lateFinalInstanceFieldThis = this;
  static late int lateStaticField;
  static late final int lateFinalStaticField1;
  static late final int lateFinalStaticField2;
  static late final int lateFinalStaticFieldWithInit = 0;
  method() {}
  methodWithErrors() {}
}

main() {}
noErrors() {}
errors() {}
