library;
import self as self;
import "dart:core" as core;

@#C1
class E extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E> values = #C11;
  enum-element static const field self::E E1 = #C4;
  enum-element static const field self::E E2 = #C7;
  enum-element static const field self::E E3 = #C10;
  const constructor •(core::int #index, core::String #name) → self::E
    : super core::_Enum::•(#index, #name)
    ;
  method _enumToString() → core::String
    return "E.${this.{core::_Enum::_name}{core::String}}";
}
static const field dynamic a = #C1;
static method main() → dynamic {}

constants  {
  #C1 = null
  #C2 = 0
  #C3 = "E1"
  #C4 = self::E {index:#C2, _name:#C3}
  #C5 = 1
  #C6 = "E2"
  #C7 = self::E {index:#C5, _name:#C6}
  #C8 = 2
  #C9 = "E3"
  #C10 = self::E {index:#C8, _name:#C9}
  #C11 = <self::E*>[#C4, #C7, #C10]
}


Constructor coverage from constants:
org-dartlang-testcase:///metadata_enum.dart:
- E. (from org-dartlang-testcase:///metadata_enum.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
