First, do you know about the CommandHandler.copiesTree property? Setting this to true may be sufficient for your purposes.
$(go.Diagram, ...,
{ ...,
"commandHandler.copiesTree": true
})
The CommandHandler.copiesParentKey might also be useful if you are working with a TreeModel and want the copied subtree to be added to the current parent.
Second, if you want to copy nodes and links programmatically, you can call Node.findTreeParts and Diagram.copyParts.
Third, there’s no point in posting in StackOverflow, this forum, and sending us email all at once.