library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/  {
  static const field core::List<self::E<dynamic>> values = const <self::E<dynamic>>[self::E::one, self::E::two];
  static const field self::E<core::int> one = const self::E::•<core::int>(0, "one", 1);
  static const field self::E<core::String> two = const self::E::•<core::String>(1, "two", "2");
  final field self::E::X% field;
  const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
    : self::E::field = field, super core::_Enum::•(index, name)
    ;
  method toString() → core::String
    return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method test() → dynamic
  ;
static method foo(self::E<core::int> ei, self::E<core::String> es) → dynamic
  ;
static method bar(self::E<core::int> ei, self::E<core::String> es) → dynamic
  ;
static method baz(self::E<core::Object> ei, self::E<core::Object> es) → dynamic
  ;
static method boz(self::E<Never> ei, self::E<Never> es) → dynamic
  ;
static method checkIsType<T extends core::Object? = dynamic>(dynamic x) → dynamic
  ;
static method checkIsNotType<T extends core::Object? = dynamic>(dynamic x) → dynamic
  ;
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///instantiated_generic_enum_types.dart:5:6 -> ListConstant(const <E<dynamic>*>[const E<int*>{E.field: 1, _Enum.index: 0, _Enum._name: "one"}, const E<String*>{E.field: "2", _Enum.index: 1, _Enum._name: "two"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///instantiated_generic_enum_types.dart:6:3 -> InstanceConstant(const E<int*>{E.field: 1, _Enum.index: 0, _Enum._name: "one"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///instantiated_generic_enum_types.dart:7:3 -> InstanceConstant(const E<String*>{E.field: "2", _Enum.index: 1, _Enum._name: "two"})
Extra constant evaluation: evaluated: 9, effectively constant: 3
