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 {}

constants  {
  #C1 = 0
  #C2 = "Foo.bar"
  #C3 = self::Foo {index:#C1, _name:#C2}
  #C4 = 1
  #C5 = "Foo.baz"
  #C6 = self::Foo {index:#C4, _name:#C5}
  #C7 = 2
  #C8 = "Foo.cafebabe"
  #C9 = self::Foo {index:#C7, _name:#C8}
  #C10 = <self::Foo*>[#C3, #C6, #C9]
  #C11 = 42
  #C12 = self::Fisk<core::int*> {x:#C11}
}
