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