library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/entries_with_type_arguments.dart:9:3: Error: Missing arguments in enum constructor invocation.
//   four<num, bool>; // Error.
//   ^
//
import self as self;
import "dart:core" as core;

class E<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E<dynamic, dynamic>> values = #C13;
  static const field self::E<core::int, core::String> one = #C3;
  static const field self::E<core::double, core::num> two = #C6;
  static const field self::E<core::int, core::int> three = #C9;
  static const field self::E<core::num, core::bool> four = #C12;
  const constructor •(core::int index, core::String name) → self::E<self::E::X%, self::E::Y%>
    : super core::_Enum::•(index, name)
    ;
  const constructor named(core::int index, core::String name, core::int value) → self::E<self::E::X%, self::E::Y%>
    : super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}

constants  {
  #C1 = 0
  #C2 = "one"
  #C3 = self::E<core::int*, core::String*> {index:#C1, _name:#C2}
  #C4 = 1
  #C5 = "two"
  #C6 = self::E<core::double*, core::num*> {index:#C4, _name:#C5}
  #C7 = 2
  #C8 = "three"
  #C9 = self::E<core::int*, core::int*> {index:#C7, _name:#C8}
  #C10 = 3
  #C11 = "four"
  #C12 = self::E<core::num*, core::bool*> {index:#C10, _name:#C11}
  #C13 = <self::E<dynamic, dynamic>*>[#C3, #C6, #C9, #C12]
}


Constructor coverage from constants:
org-dartlang-testcase:///entries_with_type_arguments.dart:
- E. (from org-dartlang-testcase:///entries_with_type_arguments.dart:11:9)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
- E.named (from org-dartlang-testcase:///entries_with_type_arguments.dart:12:9)
