/**
  * Undo replacement done in processPlaceholder(). This method
  * is called in postproc() so the parsed syntax tree can be 
  * reused next time for the same query with different args.
  * @return boolean
  * @throws epExceptionQueryBuilder
  */
 protected function undoPlaceholder(epQueryNode &$node)
 {
     // any child? done if not
     if (!($children = $node->getChildren())) {
         return true;
     }
     // check if any child is a replacement
     $status = true;
     foreach ($children as $key => $child) {
         // check if this node has been processed
         if (!($replaced = $child->getParam('replaced'))) {
             continue;
         }
         // undo replacement
         $status &= $node->replaceChild($key, $replaced);
     }
     return $status;
 }