docs: final void percolateDownMinHeap(final int index) {
          final int element = elements[index];
          final float key = keys[index];
          int hole = index;
  
          while (hole * 2 <= size) {
              int child = hole * 2;
  
              // if we have a right child and that child can not be percolated
              // up then move onto other child
              if (child != size && keys[child + 1] < keys[child]) {
                  child++;
              }
  
              // if we found resting place of bubble then terminate search
              if (keys[child] >= key) {
                  break;
              }
  
              elements[hole] = elements[child];
              keys[hole] = keys[child];
              hole = child;
          }
  
          elements[hole] = element;
          keys[hole] = key;
      }