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

typedef F<T extends core::Object* = dynamic> = () →* T*;
class A extends core::Object {
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
}
class C<T extends self::A* = dynamic> extends core::Object {
  constructor •(() →* self::C::T* f) → self::C<self::C::T*>*
    : super core::Object::•()
    ;
}
class NotA extends core::Object {
  synthetic constructor •() → self::NotA*
    : super core::Object::•()
    ;
}
static method myF() → self::NotA*
  return null;
static method main() → dynamic {
  dynamic x = new self::C::•<dynamic>(#C1);
}

constants  {
  #C1 = tearoff self::myF
}
