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

class Class<T extends core::Object? = dynamic> extends core::Object {
  static factory •<T extends core::Object? = dynamic>((self::Class::•::T%) → void f) → self::Class<self::Class::•::T%> /* redirection-target: self::ClassImpl::•<self::Class::•::T%>*/
    return new self::ClassImpl::•<self::Class::•::T%>(f);
}
class ClassImpl<T extends core::Object? = dynamic> extends core::Object implements self::Class<self::ClassImpl::T%> {
  constructor •((self::ClassImpl::T%) → void f) → self::ClassImpl<self::ClassImpl::T%>
    : super core::Object::•()
    ;
}
