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

static method _mergeSort<T extends core::Object? = dynamic>((self::_mergeSort::T%) → self::_mergeSort::T% list, (self::_mergeSort::T%, self::_mergeSort::T%) → core::int compare, (self::_mergeSort::T%) → self::_mergeSort::T% target) → void {
  self::_mergeSort<self::_mergeSort::T%>(list, compare, target);
  self::_mergeSort<self::_mergeSort::T%>(list, compare, list);
  self::_mergeSort<self::_mergeSort::T%>(target, compare, target);
  self::_mergeSort<self::_mergeSort::T%>(target, compare, list);
}
static method main() → dynamic {}
