public static void quickSortNativeVector(edu.isi.stella.Stella_Object[] vector, int start, int end, java.lang.reflect.Method predicate) {
    for (;;) {
      { int length = end - start;
        Stella_Object splitelement = null;
        Stella_Object element = null;
        int lowcursor = start;
        int highcursor = end;

        if (length <= 1) {
          return;
        }
        else if (length >= 10) {
          splitelement = Stella.quickSortPickSplitElement(vector, start, end, predicate);
        }
        else {
          splitelement = vector[start];
        }
        while (lowcursor < highcursor) {
          loop002 : while (lowcursor < highcursor) {
            highcursor = highcursor - 1;
            element = vector[highcursor];
            if (((Boolean)(edu.isi.stella.javalib.Native.funcall(predicate, null, new java.lang.Object [] {element, splitelement}))).booleanValue()) {
              vector[lowcursor] = element;
              break loop002;
            }
          }
          loop003 : while (lowcursor < highcursor) {
            lowcursor = lowcursor + 1;
            element = vector[lowcursor];
            if (((Boolean)(edu.isi.stella.javalib.Native.funcall(predicate, null, new java.lang.Object [] {splitelement, element}))).booleanValue()) {
              vector[highcursor] = element;
              break loop003;
            }
          }
        }
        vector[highcursor] = splitelement;
        if (((start + end) >> 1) < highcursor) {
          Stella.quickSortNativeVector(vector, highcursor + 1, end, predicate);
          end = highcursor;
        }
        else {
          Stella.quickSortNativeVector(vector, start, highcursor, predicate);
          start = highcursor + 1;
        }
      }
    }
  }