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: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: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.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.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.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.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.dart:79:3: Error: Name of enum constant 'Enum' can't be the same as the enum's own name.
//   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: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.dart:98:3: Error: 'values' is already declared in this scope.
//   values,
//   ^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:91:6: Context: Previous declaration of 'values' is implied by this definition.
// enum AnotherEnum {
//      ^^^^^^^^^^^
//
// 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:15:9: Context: Previous declaration of 'Typedef'.
// typedef Typedef = Object Function();
//         ^^^^^^^
//
// 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:21:16: Context: Previous declaration of 'OldTypedef'.
// typedef Object OldTypedef();
//                ^^^^^^^^^^
//
// 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:25:5: Context: Previous declaration of 'field'.
// var field = "2nd";
//     ^^^^^
//
// 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:31:1: Context: Previous declaration of 'main'.
// main() {
// ^^^^
//
// 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:74:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// 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:85:6: Context: Previous declaration of 'Enum'.
// enum Enum {
//      ^^^^
//
// 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:15:9: Error: 'Typedef' is already declared in this scope.
// typedef Typedef = Object Function();
//         ^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:13:9: Context: Previous declaration of 'Typedef'.
// typedef Typedef = void Function();
//         ^^^^^^^
//
// 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_part.dart:21:16: Error: 'OldTypedef' is already declared in this scope.
// typedef Object OldTypedef();
//                ^^^^^^^^^^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:19:14: Context: Previous declaration of 'OldTypedef'.
// typedef void OldTypedef();
//              ^^^^^^^^^^
//
// 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_part.dart:23:5: Context: Previous declaration of 'field'.
// var field = "3rd";
//     ^^^^^
//
// 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_part.dart:25:5: Context: Previous declaration of 'field'.
// var field = 4;
//     ^^^^^
//
// 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_part.dart:29: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_part.dart:33:1: Context: Previous declaration of 'main'.
// main() {
// ^^^^
//
// 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_part.dart:67:7: Error: 'C' is already declared in this scope.
// class C {
//       ^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:41: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_part.dart:67:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:76:3: Error: Name of enum constant 'Enum' can't be the same as the enum's own name.
//   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_part.dart:82:6: Error: 'Enum' is already declared in this scope.
// enum Enum {
//      ^^^^
// pkg/front_end/testcases/general/duplicated_declarations_part.dart:75: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_part.dart:82:6: Context: Previous declaration of 'Enum'.
// enum Enum {
//      ^^^^
//
// 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:101:13: 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:113:10: Context: This is the inherited member.
//   String toString() => _enumToString();
//          ^^^^^^^^
//
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
    ;
}
class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  constructor _() → self::C#3#0
    ;
}
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  field core::String field;
  constructor •(dynamic a) → self::C#2#0
    ;
  method m() → dynamic
    ;
  static method s() → dynamic
    ;
  static method f() → dynamic
    ;
}
class C#1#0 extends core::Object {
  constructor _() → self::C#1#0
    ;
}
class C extends core::Object {
  field core::String field;
  constructor •(dynamic a) → self::C
    ;
  method m() → dynamic
    ;
  static method s() → dynamic
    ;
  static method f() → dynamic
    ;
}
class Sub extends core::Object {
  constructor •() → self::Sub
    ;
  method m() → dynamic
    ;
}
class Enum#4#0 extends core::_Enum /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
  static const field core::List<self::Enum#4#0> values = const <self::Enum#4#0>[self::Enum#4#0::a];
  enum-element static const field self::Enum#4#0 a = const self::Enum#4#0::•(0, "a");
  const 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
  static const field core::List<self::Enum#3#0> values = const <self::Enum#3#0>[self::Enum#3#0::a, self::Enum#3#0::b, self::Enum#3#0::c];
  enum-element static const field self::Enum#3#0 a = const self::Enum#3#0::•(0, "a");
  enum-element static const field self::Enum#3#0 b = const self::Enum#3#0::•(1, "b");
  enum-element static const field self::Enum#3#0 c = const self::Enum#3#0::•(2, "c");
  const 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
  static const field core::List<self::Enum#2#0> values = const <self::Enum#2#0>[self::Enum#2#0::Enum, self::Enum#2#0::a, self::Enum#2#0::b];
  enum-element static const field self::Enum#2#0 Enum = const self::Enum#2#0::•(0, "Enum");
  enum-element static const field self::Enum#2#0 a = const self::Enum#2#0::•(1, "a");
  enum-element static const field self::Enum#2#0 b = const self::Enum#2#0::•(2, "b");
  const 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*/  {
  static const field core::List<self::Enum#1#0> values = const <self::Enum#1#0>[self::Enum#1#0::a, self::Enum#1#0::b, self::Enum#1#0::c];
  enum-element static const field self::Enum#1#0 a = const self::Enum#1#0::•(0, "a");
  enum-element static const field self::Enum#1#0 b = const self::Enum#1#0::•(1, "b");
  enum-element static const field self::Enum#1#0 c = const self::Enum#1#0::•(2, "c");
  const 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*/  {
  static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::Enum, self::Enum::a, self::Enum::b];
  enum-element static const field self::Enum Enum = const self::Enum::•(0, "Enum");
  enum-element static const field self::Enum a = const self::Enum::•(1, "a");
  enum-element static const field self::Enum b = const self::Enum::•(2, "b");
  const 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*/  {
  static const field core::List<self::AnotherEnum> values = const <self::AnotherEnum>[self::AnotherEnum::a, self::AnotherEnum::b, self::AnotherEnum::c, self::AnotherEnum::_name, self::AnotherEnum::index, self::AnotherEnum::toString];
  enum-element static const field self::AnotherEnum a = const self::AnotherEnum::•(0, "a");
  enum-element static const field self::AnotherEnum b = const self::AnotherEnum::•(1, "b");
  enum-element static const field self::AnotherEnum c = const self::AnotherEnum::•(2, "c");
  enum-element static const field self::AnotherEnum _name = const self::AnotherEnum::•(3, "_name");
  enum-element static const field self::AnotherEnum index = const self::AnotherEnum::•(4, "index");
  enum-element static const field self::AnotherEnum toString = const self::AnotherEnum::•(5, "toString");
  const 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;
static method main() → dynamic
  ;
static method foo() → dynamic
  ;
static method useAnotherEnum() → dynamic
  ;

library;
import self as self2;



Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:88:6 -> ListConstant(const <Enum#4#0*>[const Enum#4#0{_Enum.index: 0, _Enum._name: "a"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:89:3 -> InstanceConstant(const Enum#4#0{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:82:6 -> ListConstant(const <Enum#3#0*>[const Enum#3#0{_Enum.index: 0, _Enum._name: "a"}, const Enum#3#0{_Enum.index: 1, _Enum._name: "b"}, const Enum#3#0{_Enum.index: 2, _Enum._name: "c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:83:3 -> InstanceConstant(const Enum#3#0{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:84:3 -> InstanceConstant(const Enum#3#0{_Enum.index: 1, _Enum._name: "b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:85:3 -> InstanceConstant(const Enum#3#0{_Enum.index: 2, _Enum._name: "c"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:75:6 -> ListConstant(const <Enum#2#0*>[const Enum#2#0{_Enum.index: 0, _Enum._name: "Enum"}, const Enum#2#0{_Enum.index: 1, _Enum._name: "a"}, const Enum#2#0{_Enum.index: 2, _Enum._name: "b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:76:3 -> InstanceConstant(const Enum#2#0{_Enum.index: 0, _Enum._name: "Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:77:3 -> InstanceConstant(const Enum#2#0{_Enum.index: 1, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:79:3 -> InstanceConstant(const Enum#2#0{_Enum.index: 2, _Enum._name: "b"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:85:6 -> ListConstant(const <Enum#1#0*>[const Enum#1#0{_Enum.index: 0, _Enum._name: "a"}, const Enum#1#0{_Enum.index: 1, _Enum._name: "b"}, const Enum#1#0{_Enum.index: 2, _Enum._name: "c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:86:3 -> InstanceConstant(const Enum#1#0{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:87:3 -> InstanceConstant(const Enum#1#0{_Enum.index: 1, _Enum._name: "b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:88:3 -> InstanceConstant(const Enum#1#0{_Enum.index: 2, _Enum._name: "c"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:78:6 -> ListConstant(const <Enum*>[const Enum{_Enum.index: 0, _Enum._name: "Enum"}, const Enum{_Enum.index: 1, _Enum._name: "a"}, const Enum{_Enum.index: 2, _Enum._name: "b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:79:3 -> InstanceConstant(const Enum{_Enum.index: 0, _Enum._name: "Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:80:3 -> InstanceConstant(const Enum{_Enum.index: 1, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:82:3 -> InstanceConstant(const Enum{_Enum.index: 2, _Enum._name: "b"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:91:6 -> ListConstant(const <AnotherEnum*>[const AnotherEnum{_Enum.index: 0, _Enum._name: "a"}, const AnotherEnum{_Enum.index: 1, _Enum._name: "b"}, const AnotherEnum{_Enum.index: 2, _Enum._name: "c"}, const AnotherEnum{_Enum.index: 3, _Enum._name: "_name"}, const AnotherEnum{_Enum.index: 4, _Enum._name: "index"}, const AnotherEnum{_Enum.index: 5, _Enum._name: "toString"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:92:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:93:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 1, _Enum._name: "b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:94:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 2, _Enum._name: "c"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:95:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 3, _Enum._name: "_name"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:96:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 4, _Enum._name: "index"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:97:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 5, _Enum._name: "toString"})
Extra constant evaluation: evaluated: 55, effectively constant: 25
