import 'late_statics_lib.dart' as lib;
export 'late_statics_lib.dart';

void main() {}

class Statics {
  static late int a;
  static late final int b;
  static late int c = -1;
  static late final int d = -1;
}

void testUninitializedNonFinalStaticField() {}
void testUninitializedFinalStaticField() {}
void testInitializedNonFinalStaticField() {}
void testInitializedFinalStaticField() {}
void testUninitializedNonFinalTopLevelField() {}
void testUninitializedFinalTopLevelField() {}
void testInitializedNonFinalTopLevelField() {}
void testInitializedFinalTopLevelField() {}
