private int percolateDown(int index, E item){
		while(((4*index)+1) <= lastIndex){
			//Note this is brute force and needs to be optimized
			int mindex = 4*index+1;
			
			int track = (lastIndex - ((4*index)+4));
			if(track <0){
				//Know track is either -1 -2 -3
				track = track + 3;
			}else{
				track = 3;
			}		
			//Loop through finding the index of the smallest value
			for(int i =1; i<=track; i++){
				if(comparator.compare(heap[mindex],heap[index*4+1+i])>0){
					mindex = index*4+1+i;
					
				}
			}

			if(comparator.compare(heap[mindex], item)<0){
				heap[index] = heap[mindex];
				index = mindex;
				
			}else{
				break;
			}
		}
		return index;
	}