// @dart = 2.16
part "duplicated_declarations_part.dart";
import 'duplicated_declarations_lib.dart' as Typedef;
import 'duplicated_declarations_lib.dart' as Typedef;
typedef Typedef = void Function();
typedef Typedef = Object Function();
import 'duplicated_declarations_lib.dart' as Typedef;
typedef void OldTypedef();
typedef Object OldTypedef();
var field = "1st";
var field = "2nd";
main() {}
main() {}
foo() {}
class C {
  C(a);
  C(a, b);
  var field = "1st";
  var field = "2nd";
  m() {}
  m() {}
  static s() {}
  static s() {}
  static f() => s;
}
class Sub extends C {
  Sub() : super(null);
  m() => super.m();
}
class C {
  C._();
}
enum Enum { Enum, a, a, b, }
enum Enum { a, b, c, }
enum AnotherEnum { a, b, c, _name, index, toString, values, }
useAnotherEnum() {}
