public static void heapSiftUp(edu.isi.stella.Stella_Object[] heap, int start, int end, Stella_Object value, java.lang.reflect.Method predicate) {
    { int parent = Stella.NULL_INTEGER;
      int child = end;

      heap[end] = value;
      loop000 : while (child > start) {
        if ((child & 1) == 0) {
          parent = ((child - 2) >> 1);
        }
        else {
          parent = ((child - 1) >> 1);
        }
        if (((Boolean)(edu.isi.stella.javalib.Native.funcall(predicate, null, new java.lang.Object [] {value, heap[parent]}))).booleanValue()) {
          heap[child] = (heap[parent]);
          heap[parent] = value;
          child = parent;
        }
        else {
          break loop000;
        }
      }
    }
  }