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

class Fisk<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  final field self::Fisk::T% x;
  const constructor fisk(self::Fisk::T% x) → self::Fisk<self::Fisk::T%>
    : self::Fisk::x = x, super core::Object::•()
    ;
}
class Foo extends core::_Enum /*isEnum*/  {
  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::bar, self::Foo::baz, self::Foo::cafebabe];
  @self::hest
  static const field self::Foo bar = const self::Foo::•(0, "bar");
  @self::Fisk::fisk<core::int>(self::hest)
  static const field self::Foo baz = const self::Foo::•(1, "baz");
  static const field self::Foo cafebabe = const self::Foo::•(2, "cafebabe");
  const constructor •(core::int #index, core::String #name) → self::Foo
    : super core::_Enum::•(#index, #name)
    ;
  method toString() → core::String
    return "Foo.${this.{core::_Enum::_name}{core::String}}";
}
static const field core::int hest = 42;
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///annotation_on_enum_values.dart:15:6 -> ListConstant(const <Foo*>[const Foo{_Enum.index: 0, _Enum._name: "bar"}, const Foo{_Enum.index: 1, _Enum._name: "baz"}, const Foo{_Enum.index: 2, _Enum._name: "cafebabe"}])
Evaluated: StaticGet @ org-dartlang-testcase:///annotation_on_enum_values.dart:16:4 -> IntConstant(42)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:17:3 -> InstanceConstant(const Foo{_Enum.index: 0, _Enum._name: "bar"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:18:4 -> InstanceConstant(const Fisk<int*>{Fisk.x: 42})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:19:3 -> InstanceConstant(const Foo{_Enum.index: 1, _Enum._name: "baz"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:20:3 -> InstanceConstant(const Foo{_Enum.index: 2, _Enum._name: "cafebabe"})
Extra constant evaluation: evaluated: 12, effectively constant: 6
