/**
  * If the node is not found, we *first* want to figure out whether the node exists in other dimensions or is really non-existent
  *
  * @param $identifier
  * @param Context $context
  * @return void
  */
 protected function addExistingNodeVariantInformationToResponse($identifier, Context $context)
 {
     $nodeVariants = $context->getNodeVariantsByIdentifier($identifier);
     if (count($nodeVariants) > 0) {
         $this->response->setHeader('X-Neos-Node-Exists-In-Other-Dimensions', TRUE);
         // If the node exists in another dimension, we want to know how many nodes in the rootline are also missing for the target
         // dimension. This is needed in the UI to tell the user if nodes will be materialized recursively upwards in the rootline.
         // To find the node path for the given identifier, we just use the first result. This is a safe assumption at least for
         // "Document" nodes (aggregate=TRUE), because they are always moved in-sync.
         $node = reset($nodeVariants);
         if ($node->getNodeType()->isAggregate()) {
             $pathSegments = count(explode('/', $node->getPath()));
             $nodes = $context->getNodesOnPath('/', $node->getPath());
             // We subtract 3 because:
             // - /sites/ is never translated (first part of the rootline)
             // - the actual document is not translated either (last part of the rootline). Otherwise, we wouldn't be inside this IF-branch.
             // - we count the number of path segments, and the first path segment (before the / which indicates an absolute path) is always empty.
             $this->response->setHeader('X-Neos-Nodes-Missing-On-Rootline', $pathSegments - count($nodes) - 3);
         }
     }
 }