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

typedef A<T extends core::Object? = dynamic> = self::C<T%, core::int>;
class B<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object {
  covariant-by-class field self::B::X% x;
  constructor •(self::B::X% x) → self::B<self::B::X%, self::B::Y%>
    : self::B::x = x, super core::Object::•()
    ;
}
abstract class Mixin extends core::Object /*isMixinDeclaration*/  {
}
class C<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends self::B<self::C::X%, self::C::Y%> implements self::Mixin /*isEliminatedMixin*/  {
  synthetic constructor •(self::C::X% x) → self::C<self::C::X%, self::C::Y%>
    : super self::B::•(x)
    ;
}
static field self::C<(dynamic, dynamic) → core::int, core::int> field = new self::C::•<(dynamic, dynamic) → core::int, core::int>((dynamic a, dynamic b) → core::int => 42);
static method _#A#new#tearOff<T extends core::Object? = dynamic>(self::_#A#new#tearOff::T% x) → self::C<self::_#A#new#tearOff::T%, core::int>
  return new self::C::•<self::_#A#new#tearOff::T%, core::int>(x);
