When manipulating ASTs using nodes, sometimes you need to copy parts of the AST to a different place or part of the document.
The most naive approach I can think of is converting a document to a markdown string and parsing it again, but I'm sure there are subtle differences. It might be good for an initial implementation.
It might be nice to introduce a clone function which takes a node and returns a copy, including all children.