code: @SuppressWarnings("unchecked")
      public void addChild(final AbstractEdge<?> edge, final AbstractNode child) {
          if (child == null || edge == null ||
                  edge.getIntervals() == null || edge.getIntervals().size() == 0) {
              throw new IllegalArgumentException("Cannot add null child or empty edge");
          }
  
          edge.setSubDiagram(child);
          edges.add((AbstractEdge<T>) edge);
      }
docs: Create an out-going edge to the given node. The edge and child node are mutable objects.
  If they are used in another tree, it'd better to clone before adding them.
  
  Note: Edge<?> and InternalNode<T> must use the same type
  
  @param edge
  @param child