private void trickleDown(int index) {
		int largerChild;
		BTPosition<T> top = heap.get(index);
		while (index < size / 2) {

			int leftChild = 2 * index + 1;
			int rightChild = leftChild + 1;

			if (rightChild < size
					&& comp.compare(heap.get(leftChild).element(),
							heap.get(rightChild).element()) < 0)
				largerChild = rightChild;
			else
				largerChild = leftChild;

			// if top >= largerChild, no more tickle, break
			if (comp.compare(top.element(), heap.get(largerChild).element()) >= 0)
				break;

			heap.set(index, heap.get(largerChild));
			index = largerChild;

		}
		heap.set(index, top); // put old root to index
	}