library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:9:1: Error: Import directives must precede part directives.
// Try moving the import directives before the part directives.
// import 'duplicated_declarations_lib.dart' as Typedef;
// ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:11:1: Error: Import directives must precede part directives.
// Try moving the import directives before the part directives.
// import 'duplicated_declarations_lib.dart' as Typedef;
// ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:17:1: Error: Directives must appear before any declarations.
// Try moving the directive before any declarations.
// import 'duplicated_declarations_lib.dart' as Typedef;
// ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:9:1: Error: The part-of directive must be the only directive in a part.
// Try removing the other directives, or moving them to the library for which this is a part.
// import 'duplicated_declarations_lib.dart' as Typedef;
// ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:11:1: Error: The part-of directive must be the only directive in a part.
// Try removing the other directives, or moving them to the library for which this is a part.
// import 'duplicated_declarations_lib.dart' as Typedef;
// ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:17:1: Error: The part-of directive must be the only directive in a part.
// Try removing the other directives, or moving them to the library for which this is a part.
// import 'duplicated_declarations_lib.dart' as Typedef;
// ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:15:9: Error: 'Typedef' is already declared in this scope.
// typedef Typedef = Object Function();
//         ^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:13:9: Context: Previous declaration of 'Typedef'.
// typedef Typedef = void Function();
//         ^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:13:9: Error: 'Typedef' is already declared in this scope.
// typedef Typedef = void Function();
//         ^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:13:9: Context: Previous declaration of 'Typedef'.
// typedef Typedef = void Function();
//         ^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:15:9: Error: 'Typedef' is already declared in this scope.
// typedef Typedef = Object Function();
//         ^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:13:9: Context: Previous declaration of 'Typedef'.
// typedef Typedef = void Function();
//         ^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:21:16: Error: 'OldTypedef' is already declared in this scope.
// typedef Object OldTypedef();
//                ^^^^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:19:14: Context: Previous declaration of 'OldTypedef'.
// typedef void OldTypedef();
//              ^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:19:14: Error: 'OldTypedef' is already declared in this scope.
// typedef void OldTypedef();
//              ^^^^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:19:14: Context: Previous declaration of 'OldTypedef'.
// typedef void OldTypedef();
//              ^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:21:16: Error: 'OldTypedef' is already declared in this scope.
// typedef Object OldTypedef();
//                ^^^^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:19:14: Context: Previous declaration of 'OldTypedef'.
// typedef void OldTypedef();
//              ^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:25:5: Error: 'field' is already declared in this scope.
// var field = "2nd";
//     ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:23:5: Context: Previous declaration of 'field'.
// var field = "1st";
//     ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:23:5: Error: 'field' is already declared in this scope.
// var field = "3rd";
//     ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:23:5: Context: Previous declaration of 'field'.
// var field = "1st";
//     ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:25:5: Error: 'field' is already declared in this scope.
// var field = 4;
//     ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:23:5: Context: Previous declaration of 'field'.
// var field = "1st";
//     ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:27:5: Error: 'field' is already declared in this scope.
// var field = 5.0;
//     ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:23:5: Context: Previous declaration of 'field'.
// var field = "1st";
//     ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:31:1: Error: 'main' is already declared in this scope.
// main() {
// ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:27:1: Context: Previous declaration of 'main'.
// main() {
// ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:29:1: Error: 'main' is already declared in this scope.
// main() {
// ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:27:1: Context: Previous declaration of 'main'.
// main() {
// ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:33:1: Error: 'main' is already declared in this scope.
// main() {
// ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:27:1: Context: Previous declaration of 'main'.
// main() {
// ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:37:1: Error: 'main' is already declared in this scope.
// main() {
// ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:27:1: Context: Previous declaration of 'main'.
// main() {
// ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:74:7: Error: 'C' is already declared in this scope.
// class C {
//       ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:43:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:41:7: Error: 'C' is already declared in this scope.
// class C {
//       ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:43:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:67:7: Error: 'C' is already declared in this scope.
// class C {
//       ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:43:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:71:7: Error: 'C' is already declared in this scope.
// class C {
//       ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:43:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:85:6: Error: 'Enum' is already declared in this scope.
// enum Enum {
//      ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:78:6: Context: Previous declaration of 'Enum'.
// enum Enum {
//      ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:75:6: Error: 'Enum' is already declared in this scope.
// enum Enum {
//      ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:78:6: Context: Previous declaration of 'Enum'.
// enum Enum {
//      ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:82:6: Error: 'Enum' is already declared in this scope.
// enum Enum {
//      ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:78:6: Context: Previous declaration of 'Enum'.
// enum Enum {
//      ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:88:6: Error: 'Enum' is already declared in this scope.
// enum Enum {
//      ^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:78:6: Context: Previous declaration of 'Enum'.
// enum Enum {
//      ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:43:3: Error: 'C' is already declared in this scope.
//   C(a, b);
//   ^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:42:3: Context: Previous declaration of 'C'.
//   C(a);
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:46:7: Error: 'field' is already declared in this scope.
//   var field = "2nd";
//       ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:44:7: Context: Previous declaration of 'field'.
//   var field = "1st";
//       ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:52:3: Error: 'm' is already declared in this scope.
//   m() {
//   ^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:48:3: Context: Previous declaration of 'm'.
//   m() {
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:60:10: Error: 's' is already declared in this scope.
//   static s() {
//          ^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:56:10: Context: Previous declaration of 's'.
//   static s() {
//          ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:45:3: Error: 'C' is already declared in this scope.
//   C(a, b);
//   ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:44:3: Context: Previous declaration of 'C'.
//   C(a);
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:48:7: Error: 'field' is already declared in this scope.
//   var field = "2nd";
//       ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:46:7: Context: Previous declaration of 'field'.
//   var field = "1st";
//       ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:54:3: Error: 'm' is already declared in this scope.
//   m() {
//   ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:50:3: Context: Previous declaration of 'm'.
//   m() {
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:62:10: Error: 's' is already declared in this scope.
//   static s() {
//          ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:58:10: Context: Previous declaration of 's'.
//   static s() {
//          ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:76:3: Error: A class member can't have the same name as the enclosing class.
// Try renaming the member.
//   Enum,
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:78:3: Error: 'a' is already declared in this scope.
//   a,
//   ^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:77:3: Context: Previous declaration of 'a'.
//   a,
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:79:3: Error: A class member can't have the same name as the enclosing class.
// Try renaming the member.
//   Enum,
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:81:3: Error: 'a' is already declared in this scope.
//   a,
//   ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:80:3: Context: Previous declaration of 'a'.
//   a,
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:98:3: Error: An enum can't declare a member named 'values'.
//   values,
//   ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:9:46: Error: 'Typedef' is already declared in this scope.
// import 'duplicated_declarations_lib.dart' as Typedef;
//                                              ^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:15:9: Context: Previous declaration of 'Typedef'.
// typedef Typedef = Object Function();
//         ^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:69:19: Error: 'C' isn't a type.
// class Sub extends C {
//                   ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:69:19: Context: This isn't a type.
// class Sub extends C {
//                   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:96:3: Error: Can't declare a member that conflicts with an inherited one.
//   index,
//   ^^^^^
// sdk/lib/core/enum.dart:*: Context: This is the inherited member.
//   final int index;
//             ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:97:3: Error: Can't declare a member that conflicts with an inherited one.
//   toString,
//   ^^^^^^^^
// sdk/lib/core/enum.dart:*: Context: This is the inherited member.
//   String toString() => _enumToString();
//          ^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:36:3: Error: Can't use 'main' because it is declared more than once.
//   main();
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:37:9: Error: Can't use 'field' because it is declared more than once.
//   print(field);
//         ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:38:3: Error: Can't use 'C' because it is declared more than once.
//   C.s();
//   ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:39:5: Error: Expected identifier, but got 'this'.
//   C.this();
//     ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:40:5: Error: The 'records' language feature is disabled for this library.
// Try removing the `@dart=` annotation or setting the language version to 3.0 or higher.
//   C.();
//     ^
// pkg/front_end/testcases/general/duplicated_declarations.dart:5:1: Context: This is the annotation that opts out this library from the 'records' language feature.
// // @dart=2.16
// ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:40:5: Error: Expected an identifier, but got '('.
// Try inserting an identifier before '('.
//   C.();
//     ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:66:17: Error: Can't use 's' because it is declared more than once.
//   static f() => s;
//                 ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:70:16: Error: Too many positional arguments: 0 allowed, but 1 found.
// Try removing the extra positional arguments.
//   Sub() : super(null);
//                ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:71:16: Error: Superclass has no method named 'm'.
//   m() => super.m();
//                ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:109:39: Error: Can't use 'values' because it is declared more than once.
//     "AnotherEnum.values": AnotherEnum.values,
//                                       ^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:64:17: Error: Can't use 's' because it is declared more than once.
//   static f() => s;
//                 ^
//
import self as self;
import "dart:core" as core;

import "org-dartlang-testcase:///duplicated_declarations_lib.dart" as Typedef;
import "org-dartlang-testcase:///duplicated_declarations_lib.dart" as Typedef;
import "org-dartlang-testcase:///duplicated_declarations_lib.dart" as Typedef;
import "org-dartlang-testcase:///duplicated_declarations_lib.dart" as Typedef;
import "org-dartlang-testcase:///duplicated_declarations_lib.dart" as Typedef;
import "org-dartlang-testcase:///duplicated_declarations_lib.dart" as Typedef;

part duplicated_declarations_part.dart;
typedef Typedef = () → void;
typedef OldTypedef = () → void;
class C#4#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  constructor _() → self::C#4#0
    : super core::Object::•()
    ;
}
class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  constructor _() → self::C#3#0
    : super core::Object::•()
    ;
}
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  field core::String field = "1st";
  constructor •(dynamic a) → self::C#2#0
    : super core::Object::•()
    ;
  method m() → dynamic {
    "1st";
  }
  static method s() → dynamic {
    "1st";
  }
  static method f() → dynamic
    return invalid-expression "pkg/front_end/testcases/general/duplicated_declarations_part.dart:64:17: Error: Can't use 's' because it is declared more than once.
  static f() => s;
                ^";
}
class C#1#0 extends core::Object {
  constructor _() → self::C#1#0
    : super core::Object::•()
    ;
}
class C extends core::Object {
  field core::String field = "1st";
  constructor •(dynamic a) → self::C
    : super core::Object::•()
    ;
  method m() → dynamic {
    "1st";
  }
  static method s() → dynamic {
    "1st";
  }
  static method f() → dynamic
    return invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:66:17: Error: Can't use 's' because it is declared more than once.
  static f() => s;
                ^";
}
class Sub extends core::Object {
  constructor •() → self::Sub
    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:70:16: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
  Sub() : super(null);
               ^"
    ;
  method m() → dynamic
    return invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:71:16: Error: Superclass has no method named 'm'.
  m() => super.m();
               ^";
}
class Enum#4#0 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  enum-element static const field self::Enum#4#0 a = #C3;
  static const field core::List<self::Enum#4#0> values = #C4;
  const synthetic constructor •(core::int #index, core::String #name) → self::Enum#4#0
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Enum#4#0.${this.{core::_Enum::_name}{core::String}}";
}
class Enum#3#0 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  enum-element static const field self::Enum#3#0 a = #C5;
  enum-element static const field self::Enum#3#0 b = #C8;
  enum-element static const field self::Enum#3#0 c = #C11;
  static const field core::List<self::Enum#3#0> values = #C12;
  const synthetic constructor •(core::int #index, core::String #name) → self::Enum#3#0
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Enum#3#0.${this.{core::_Enum::_name}{core::String}}";
}
class Enum#2#0 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  enum-element static const field self::Enum#2#0 Enum = #C14;
  enum-element static const field self::Enum#2#0 a = #C15;
  enum-element static const field self::Enum#2#0 b = #C16;
  static const field core::List<self::Enum#2#0> values = #C17;
  const synthetic constructor •(core::int #index, core::String #name) → self::Enum#2#0
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Enum#2#0.${this.{core::_Enum::_name}{core::String}}";
}
class Enum#1#0 extends core::_Enum /*isEnum*/  {
  enum-element static const field self::Enum#1#0 a = #C18;
  enum-element static const field self::Enum#1#0 b = #C19;
  enum-element static const field self::Enum#1#0 c = #C20;
  static const field core::List<self::Enum#1#0> values = #C21;
  const synthetic constructor •(core::int #index, core::String #name) → self::Enum#1#0
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Enum#1#0.${this.{core::_Enum::_name}{core::String}}";
}
class Enum extends core::_Enum /*isEnum*/  {
  enum-element static const field self::Enum Enum = #C22;
  enum-element static const field self::Enum a = #C23;
  enum-element static const field self::Enum b = #C24;
  static const field core::List<self::Enum> values = #C25;
  const synthetic constructor •(core::int #index, core::String #name) → self::Enum
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
class AnotherEnum extends core::_Enum /*isEnum*/  {
  enum-element static const field self::AnotherEnum a = #C26;
  enum-element static const field self::AnotherEnum b = #C27;
  enum-element static const field self::AnotherEnum c = #C28;
  enum-element static const field self::AnotherEnum _name = #C31;
  enum-element static const field self::AnotherEnum index = #C34;
  enum-element static const field self::AnotherEnum toString = #C37;
  static const field core::List<self::AnotherEnum> values = #C38;
  const synthetic constructor •(core::int #index, core::String #name) → self::AnotherEnum
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
}
static field core::String field = "1st";
static method main() → dynamic {
  "1st";
}
static method foo() → dynamic {
  invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:36:3: Error: Can't use 'main' because it is declared more than once.
  main();
  ^"{dynamic}();
  core::print(invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:37:9: Error: Can't use 'field' because it is declared more than once.
  print(field);
        ^");
  invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:38:3: Error: Can't use 'C' because it is declared more than once.
  C.s();
  ^"{dynamic}.s();
  invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:39:5: Error: Expected identifier, but got 'this'.
  C.this();
    ^^^^";
  invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:40:5: Error: Expected an identifier, but got '('.
Try inserting an identifier before '('.
  C.();
    ^";
}
static method useAnotherEnum() → dynamic {
  <core::String, core::Object>{"AnotherEnum.a": #C26, "AnotherEnum.b": #C27, "AnotherEnum.c": #C28, "AnotherEnum._name": #C31, "AnotherEnum.index": #C34, "AnotherEnum.toString": #C37, "AnotherEnum.values": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:109:39: Error: Can't use 'values' because it is declared more than once.
    \"AnotherEnum.values\": AnotherEnum.values,
                                      ^^^^^^"};
}

library;
import self as self2;


constants  {
  #C1 = 0
  #C2 = "a"
  #C3 = self::Enum#4#0 {index:#C1, _name:#C2}
  #C4 = <self::Enum#4#0>[#C3]
  #C5 = self::Enum#3#0 {index:#C1, _name:#C2}
  #C6 = 1
  #C7 = "b"
  #C8 = self::Enum#3#0 {index:#C6, _name:#C7}
  #C9 = 2
  #C10 = "c"
  #C11 = self::Enum#3#0 {index:#C9, _name:#C10}
  #C12 = <self::Enum#3#0>[#C5, #C8, #C11]
  #C13 = "Enum"
  #C14 = self::Enum#2#0 {index:#C1, _name:#C13}
  #C15 = self::Enum#2#0 {index:#C6, _name:#C2}
  #C16 = self::Enum#2#0 {index:#C9, _name:#C7}
  #C17 = <self::Enum#2#0>[#C14, #C15, #C16]
  #C18 = self::Enum#1#0 {index:#C1, _name:#C2}
  #C19 = self::Enum#1#0 {index:#C6, _name:#C7}
  #C20 = self::Enum#1#0 {index:#C9, _name:#C10}
  #C21 = <self::Enum#1#0>[#C18, #C19, #C20]
  #C22 = self::Enum {index:#C1, _name:#C13}
  #C23 = self::Enum {index:#C6, _name:#C2}
  #C24 = self::Enum {index:#C9, _name:#C7}
  #C25 = <self::Enum>[#C22, #C23, #C24]
  #C26 = self::AnotherEnum {index:#C1, _name:#C2}
  #C27 = self::AnotherEnum {index:#C6, _name:#C7}
  #C28 = self::AnotherEnum {index:#C9, _name:#C10}
  #C29 = 3
  #C30 = "_name"
  #C31 = self::AnotherEnum {index:#C29, _name:#C30}
  #C32 = 4
  #C33 = "index"
  #C34 = self::AnotherEnum {index:#C32, _name:#C33}
  #C35 = 5
  #C36 = "toString"
  #C37 = self::AnotherEnum {index:#C35, _name:#C36}
  #C38 = <self::AnotherEnum>[#C26, #C27, #C28, #C31, #C34, #C37]
}


Constructor coverage from constants:
org-dartlang-testcase:///duplicated_declarations.dart:
- Enum#1#0. (from org-dartlang-testcase:///duplicated_declarations.dart:85:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
- Enum. (from org-dartlang-testcase:///duplicated_declarations.dart:78:6)
- AnotherEnum. (from org-dartlang-testcase:///duplicated_declarations.dart:91:6)
