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

abstract class C<E extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::E*>*
    ;
  method sort([(self::C::E*, self::C::E*) →* core::int* compare]) → void
    ;
  static method _compareAny(dynamic a, dynamic b) → core::int*
    ;
  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
    ;
}
static method main() → dynamic
  ;
