/**
  * index this node, and add it to the current bulk request.
  *
  * @param NodeInterface $node
  * @param string $targetWorkspaceName
  * @param boolean $indexVariants
  * @return void
  */
 public function indexNode(NodeInterface $node, $targetWorkspaceName = NULL, $indexVariants = TRUE)
 {
     if ($indexVariants === TRUE) {
         $this->indexAllNodeVariants($node);
         return;
     }
     $identifier = $this->generateUniqueNodeIdentifier($node);
     if ($node->isRemoved()) {
         $this->indexClient->removeData($identifier);
         return;
     }
     $fulltextData = array();
     if (isset($this->indexedNodeData[$identifier])) {
         $properties = $this->indexClient->findOneByIdentifier($identifier);
         $properties['__workspace'] = $properties['__workspace'] . ', #' . ($targetWorkspaceName !== NULL ? $targetWorkspaceName : $node->getContext()->getWorkspaceName()) . '#';
         $properties['__dimensionshash'] = $properties['__dimensionshash'] . ', #' . md5(json_encode($node->getContext()->getDimensions())) . '#';
         $this->indexClient->insertOrUpdatePropertiesToIndex($properties, $identifier);
     } else {
         $nodePropertiesToBeStoredInIndex = $this->extractPropertiesAndFulltext($node, $fulltextData);
         if (count($fulltextData) !== 0) {
             $this->addFulltextToRoot($node, $fulltextData);
         }
         $this->indexClient->indexData($identifier, $nodePropertiesToBeStoredInIndex, $fulltextData);
         $this->indexedNodeData[$identifier] = $identifier;
     }
 }