library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Pair<T extends core::Object? = dynamic, U extends core::Object? = dynamic> extends core::Object {
  covariant-by-class field self::Pair::T% t;
  covariant-by-class 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::•()
    ;
  get reversed() → self::Pair<self::Pair::U%, self::Pair::T%>
    return new self::Pair::•<self::Pair::U%, self::Pair::T%>(this.{self::Pair::u}{self::Pair::U%}, this.{self::Pair::t}{self::Pair::T%});
}
static method main() → dynamic {}
