public void RestoreHeapDown(short[] tree, int k) { int n = this.heap[k]; for (int index = k << 1; index <= this.heapLen; index <<= 1) { if (index < this.heapLen && Deflater.IsSmaller(tree, this.heap[index + 1], this.heap[index], this.depth)) { ++index; } if (!Deflater.IsSmaller(tree, n, this.heap[index], this.depth)) { this.heap[k] = this.heap[index]; k = index; } else { break; } } this.heap[k] = n; }