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

class Fisk<T extends core::Object = dynamic> extends core::Object {
  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::Object {
  final field core::int index;
  final field core::String _name;
  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, "Foo.bar");
  @self::Fisk::fisk<dynamic>(self::hest)
  static const field self::Foo baz = const self::Foo::•(1, "Foo.baz");
  static const field self::Foo cafebabe = const self::Foo::•(2, "Foo.cafebabe");
  const constructor •(core::int index, core::String _name) → self::Foo
    : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
    ;
  method toString() → core::String
    return this.{=self::Foo::_name};
}
static const field core::int hest = 42;
static method main() → dynamic {}
