private TwigQuery rewriteRoot(TwigQuery clone, final IndexReader reader) throws IOException { final NodeQuery query = (NodeQuery) root.rewrite(reader); if (query != root) { if (clone == null) { clone = (TwigQuery) this.clone(); } // copy ancestor query.setAncestorPointer(ancestor); clone.root = query; } return clone; }
private TwigQuery rewriteClauses(TwigQuery clone, final IndexReader reader) throws IOException { for (int i = 0 ; i < clauses.size(); i++) { final NodeBooleanClause c = clauses.get(i); final NodeQuery query = (NodeQuery) c.getQuery().rewrite(reader); if (query != c.getQuery()) { // clause rewrote: must clone if (clone == null) { clone = (TwigQuery) this.clone(); // clone and set root since clone is null, i.e., root has not been rewritten clone.root = (NodeQuery) this.root.clone(); // copy ancestor clone.root.setAncestorPointer(ancestor); } // set root as ancestor query.setAncestorPointer(clone.root); clone.clauses.set(i, new NodeBooleanClause(query, c.getOccur())); } } return clone; }
final TwigQuery clone = (TwigQuery) this.clone();