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() {}
