/**
  * Change the property on the given node.
  *
  * @param NodeData $node
  * @return NodeData
  */
 public function execute(NodeData $node)
 {
     $node = $this->nodeFactory->createFromNodeData($node, $this->contextFactory->create(array('workspaceName' => $node->getWorkspace()->getName(), 'invisibleContentShown' => true, 'inaccessibleContentShown' => true)));
     if (!$node) {
         return;
     }
     $column0 = $node->getPrimaryChildNode();
     if (!$column0) {
         return;
     }
     foreach ($column0->getChildNodes() as $childNode) {
         $node = $childNode->copyAfter($node, NodePaths::generateRandomNodeName());
     }
     return $node;
 }
 /**
  * Get the name of this node template.
  *
  * If a name has been set using setName(), it is returned. If not, but the
  * template has a (non-empty) title property, this property is used to
  * generate a valid name. As a last resort a random name is returned (in
  * the form "name-XXXXX").
  *
  * @return string
  * @api
  */
 public function getName()
 {
     if ($this->name !== null) {
         return $this->name;
     }
     return NodePaths::generateRandomNodeName();
 }
 /**
  * Generate possible node name. When an idealNodeName is given then this is put into a valid format for a node name,
  * otherwise a random node name in the form "node-alphanumeric" is generated.
  *
  * @param string $idealNodeName
  * @return string
  */
 protected function generatePossibleNodeName($idealNodeName = null)
 {
     if ($idealNodeName !== null) {
         $possibleNodeName = \TYPO3\TYPO3CR\Utility::renderValidNodeName($idealNodeName);
     } else {
         $possibleNodeName = NodePaths::generateRandomNodeName();
     }
     return $possibleNodeName;
 }