protected function setPathInternal(string $destinationPath, bool $recursiveCall): array
    {
        if ($this->getNodeType()->isAggregate()) {
            return $this->setPathInternalForAggregate($destinationPath, $recursiveCall);
        }

        $originalPath = $this->nodeData->getPath();

        /** @var Node $childNode */
        foreach ($this->getChildNodes() as $childNode) {
            $childNode->setPath(NodePaths::addNodePathSegment($destinationPath, $childNode->getName()), false);
        }

        $this->moveNodeToDestinationPath($this, $destinationPath);

        return [
            [$this, $originalPath, $this->getNodeData()->getPath(), $recursiveCall]
        ];
    }