code: public void mergeSortFromTo(int from, int to) {
  	if (size==0) return;
  	checkRangeFromTo(from, to, size);
  	java.util.Arrays.sort(elements, from, to+1);
  }
docs: Sorts the specified range of the receiver into
  ascending order, according to the <i>natural ordering</i> of its
  elements.  All elements in this range must implement the
  <tt>Comparable</tt> interface.  Furthermore, all elements in this range
  must be <i>mutually comparable</i> (that is, <tt>e1.compareTo(e2)</tt>
  must not throw a <tt>ClassCastException</tt> for any elements
  <tt>e1</tt> and <tt>e2</tt> in the array).<p>
  
  This sort is guaranteed to be <i>stable</i>:  equal elements will
  not be reordered as a result of the sort.<p>
  
  The sorting algorithm is a modified mergesort (in which the merge is
  omitted if the highest element in the low sublist is less than the
  lowest element in the high sublist).  This algorithm offers guaranteed
  n*log(n) performance, and can approach linear performance on nearly
  sorted lists.
  
  <p><b>You should never call this method unless you are sure that this particular sorting algorithm is the right one for your data set.</b>
  It is generally better to call <tt>sort()</tt> or <tt>sortFromTo(...)</tt> instead, because those methods automatically choose the best sorting algorithm.
  
  @param from the index of the first element (inclusive) to be sorted.
  @param to the index of the last element (inclusive) to be sorted.
  @exception IndexOutOfBoundsException index is out of range (<tt>size()&gt;0 && (from&lt;0 || from&gt;to || to&gt;=size())</tt>).