code: protected void addChild(CHILD child) {
  
      Objects.requireNonNull(child, "child");
      if (child.getParent() != this) {
        throw new IllegalArgumentException(child.toString());
      }
      this.mutableChildList.add(child);
    }
docs: This method adds the given {@code child} to the {@link #getChildren() children} of this
  {@link GenericTreeNode}.
  
  @param child is the {@link #getChildren() child} to add. It's {@link #getParent() parent} has to be
  identical to this {@link GenericTreeNode}.