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

typedef Callback<T extends core::Object = dynamic> = (T) → void;
class Foo<T extends core::Object = dynamic> extends core::Object {
  final field self::Foo::T finalField;
  final field (self::Foo::T) → void callbackField;
  field self::Foo::T mutableField;
  field (self::Foo::T) → void mutableCallbackField;
  constructor •(self::Foo::T finalField, (self::Foo::T) → void callbackField) → void
    ;
  method method(self::Foo::T x) → void
    ;
  set setter(self::Foo::T x) → dynamic
    ;
  method withCallback((self::Foo::T) → void callback) → void
    ;
}
static method main() → dynamic
  ;
