public function copy(NodeInterface $node, NodeInterface $targetNode, $position, $nodeName = null)
{
if (!in_array($position, array('before', 'into', 'after'), true)) {
throw new NodeException('The position should be one of the following: "before", "into", "after".', 1346832303);
}
$nodeName = $this->nodeService->generateUniqueNodeName($this->getDesignatedParentNode($targetNode, $position)->getPath(), !empty($nodeName) ? $nodeName : null);
switch ($position) {
case 'before':
$copiedNode = $node->copyBefore($targetNode, $nodeName);
break;
case 'after':
$copiedNode = $node->copyAfter($targetNode, $nodeName);
break;
case 'into':
default:
$copiedNode = $node->copyInto($targetNode, $nodeName);
}
return $copiedNode;
}