library /*isNonNullableByDefault*/;
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;
  static const field self::E E1 = #C4;
  static const field self::E E2 = #C7;
  static const field self::E E3 = #C10;
  const constructor •(core::int index, core::String name) → self::E
    : super core::_Enum::•(index, name)
    ;
  method toString() → 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:103:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
