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 = #C10;
  @#C11
  static const field self::Foo bar = #C3;
  @#C12
  static const field self::Foo baz = #C6;
  static const field self::Foo cafebabe = #C9;
  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 = #C11;
static method main() → dynamic {}
