code: int nextChild(byte[] name) {
      if (name.length == 0) { // empty name
        return 0;
      }
      int nextPos = Collections.binarySearch(children, name) + 1;
      if (nextPos >= 0) {  // the name is in the list of children
        return nextPos;
      }
      return -nextPos; // insert point
    }
docs: Search all children for the first child whose name is greater than
  the given name.
  
  If the given name is one of children's name, the next child's index
  is returned; Otherwise, return the insertion point: the index of the
  first child whose name's greater than the given name.
  
  @param name a name
  @return the index of the next child