code: func (g *Graph) Clone() *Graph {
  	if g == nil {
  		return nil
  	}
  
  	c := New(nil)
  	c.This = g.This
  
  	for _, n := range g.Out {
  		c.Out = append(c.Out, n.Clone())
  	}
  	return c
  }
docs: // Clone returns a copy of the current graph.
  //
  // Warning (from the Go faq): Copying an interface value makes a copy of the
  // thing stored in the interface value. If the interface value holds a struct,
  // copying the interface value makes a copy of the struct. If the interface
  // value holds a pointer, copying the interface value makes a copy of the
  // pointer, but not the data it points to.