opendap/src/main/java/opendap/dap/DAPNode.java
public DAPNode cloneDAG(CloneMap map)
        throws CloneNotSupportedException
    {
        DAPNode node = (DAPNode)super.clone(); // Object.clone
	map.nodes.put(this,node);

        DAPNode tmp = map.nodes.get(_myParent);
        if(tmp != node)
            _myParent = tmp;
        return node;
    }
public DAPNode cloneDAG(CloneMap map)
        throws CloneNotSupportedException
    {
        DAPNode node = (DAPNode)super.clone(); // Object.clone
	map.nodes.put(this,node);

        DAPNode tmp = map.nodes.get(_myParent);
        if(tmp != node)
            _myParent = tmp;
        return node;
    }
public DAPNode cloneDAG ( CloneMap map ) throws CloneNotSupportedException { DAPNode node = ( DAPNode ) super . clone ( ) ; // Object.clone
 map . nodes . put ( this , node ) ; DAPNode tmp = map . nodes . get ( _myParent ) ; if ( tmp != node ) _myParent = tmp ; return node ; }
This procedure does the actual recursive clone.
@param map  list of previously cloned nodes
@return  clone of this node
@throws CloneNotSupportedException
This procedure does the actual recursive clone .