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

abstract class C<E extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method sort([(self::C::E, self::C::E) → core::int compare = null]) → void {
    self::C::sort2<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = compare in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_compareAny : #t1);
  }
  static method _compareAny(dynamic a, dynamic b) → core::int {
    throw "unimplemented";
  }
  static method sort2<E extends core::Object = dynamic>(self::C<self::C::sort2::E> a, (self::C::sort2::E, self::C::sort2::E) → core::int compare) → void {
    throw "unimplemented";
  }
}
static method main() → dynamic {}
