/**
  * Process a directive that should parces the next node as a "sub" document
  */
 public final function process(Parser $parser, $node, $variable, $data, array $options)
 {
     $subParser = $parser->getSubParser();
     if ($node instanceof CodeNode) {
         $document = $subParser->parse($node->getValue());
     } else {
         $document = $node;
     }
     $newNode = $this->processSub($parser, $document, $variable, $data, $options);
     if ($newNode) {
         if ($variable) {
             $parser->getEnvironment()->setVariable($variable, $newNode);
         } else {
             $parser->getDocument()->addNode($newNode);
         }
     }
 }