docs: protected void percolateDownMaxHeap(final int index) {
          final Activation element = elements[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 && compare(elements[child + 1], elements[child]) > 0) {
                  child++;
              }
  
              // if we found resting place of bubble then terminate search
              if (compare(elements[child], element) <= 0) {
                  break;
              }
  
              setElement( hole, elements[child] );
              hole = child;
          }
  
          setElement( hole, element);
      }