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

typedef Foo<S extends core::Object* = dynamic> = <T extends core::Object* = dynamic>(T*) →* S*;
class A extends core::Object {
  field <T extends core::Object* = dynamic>(T*) →* core::int* f = null;
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
  method test() → void {
    this.{self::A::f}<core::String*>("hello");
  }
}
static method foo<T extends core::Object* = dynamic>(self::foo::T* x) → core::int*
  return 3;
static method bar() → <T extends core::Object* = dynamic>(T*) →* core::int*
  return #C1;
static method test1() → void {
  self::bar().call<core::String*>("hello");
}
static method main() → dynamic {}

constants  {
  #C1 = tearoff self::foo
}
