class A {
  num fieldNonNullableOfA;
  late num fieldLateNonNullableOfA;
  final dynamic fieldFinalDynamicOfA;
  late final dynamic fieldLateFinalDynamicOfA;
}

abstract class AbstractA {
  external num fieldExternalNonNullableOfAbstractA;
  abstract num fieldAbstractNonNullableOfAbstractA;
  external final dynamic fieldExternalFinalDynamicOfAbstractA;
  abstract final dynamic fieldAbstractFinalDynamicOfAbstractA;
}

class B {
  num fieldNonNullableOfB;
  late num fieldLateNonNullableOfB;
  final dynamic fieldFinalDynamicOfB;
  late final dynamic fieldLateFinalDynamicOfB;
  factory B() => throw 42;
}

abstract class AbstractB {
  external num fieldExternalNonNullableOfAbstractB;
  abstract num fieldAbstractNonNullableOfAbstractB;
  external final dynamic fieldExternalFinalDynamicOfAbstractB;
  abstract final dynamic fieldAbstractFinalDynamicOfAbstractB;
}

mixin M {
  num fieldNonNullableOfM;
  late num fieldLateNonNullableOfM;
  external num fieldExternalNonNullableOfM;
  abstract num fieldAbstractNonNullableOfM;
  final dynamic fieldFinalDynamicOfM;
  late final dynamic fieldLateFinalDynamicOfM;
  external final dynamic fieldExternalFinalDynamicOfM;
  abstract final dynamic fieldAbstractFinalDynamicOfM;
}
main() {}
