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

@self::a
class E extends core::Object /*isEnum*/  {
  final field core::int* index;
  final field core::String* _name;
  static const field core::List<self::E*>* values = const <self::E*>[self::E::E1, self::E::E2, self::E::E3];
  static const field self::E* E1 = const self::E::•(0, "E.E1");
  static const field self::E* E2 = const self::E::•(1, "E.E2");
  static const field self::E* E3 = const self::E::•(2, "E.E3");
  const constructor •(core::int* index, core::String* _name) → self::E*
    : self::E::index = index, self::E::_name = _name, super core::Object::•()
    ;
  method toString() → core::String*
    return this.{=self::E::_name};
}
static const field dynamic a = null;
static method main() → dynamic
  ;
