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

class Clonable<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → self::Clonable<self::Clonable::T>
    : super core::Object::•()
    ;
}
class Pair<T extends self::Clonable<self::Pair::T> = dynamic, U extends self::Clonable<self::Pair::U> = dynamic> extends core::Object {
  generic-covariant-impl field self::Pair::T t;
  generic-covariant-impl field self::Pair::U u;
  constructor •(self::Pair::T t, self::Pair::U u) → self::Pair<self::Pair::T, self::Pair::U>
    : self::Pair::t = t, self::Pair::u = u, super core::Object::•()
    ;
  constructor _() → self::Pair<self::Pair::T, self::Pair::U>
    : self::Pair::u = null, self::Pair::t = null, super core::Object::•()
    ;
  get reversed() → self::Pair<self::Pair::U, self::Pair::T>
    return new self::Pair::•<dynamic, dynamic>(this.{self::Pair::u}, this.{self::Pair::t});
}
static method main() → dynamic {
  final dynamic x = new self::Pair::_<dynamic, dynamic>();
}
