code: protected long getUpperBound(TrieNode currentParent, AtomicLong currentChildren, TrieNode godchildNode, int godchildAdjustment) {
      return Math.min(
        currentParent.getCursorCount() - currentChildren.get(),
        godchildNode.getCursorCount() - godchildAdjustment);
    }
docs: Gets upper bound.
  
  @param currentParent      the current parent
  @param currentChildren    the current children
  @param godchildNode       the godchild node
  @param godchildAdjustment the godchild adjustment
  @return the upper bound