@Override public boolean equals(Object o) { if (!(o instanceof Node)) { return false; } if (o == this) { return true; } Node other = (Node) o; if ((operator == null) != (other.getOperator() == null)) { return false; } if (operator != null && !other.getOperator().equals(operator)) { return false; } if (internalNodes.size() != other.getInternalNodes().size()) { return false; } for (int i = 0; i < internalNodes.size(); i++) { if (!internalNodes.get(i).equals(other.getInternalNodes().get(i))) { return false; } } return true; }
public StructuredIterator createIterator(Node node) throws Exception { ArrayList<StructuredIterator> internalIterators = new ArrayList<StructuredIterator>(); for (Node internalNode : node.getInternalNodes()) { StructuredIterator internalIterator = createIterator(internalNode); internalIterators.add(internalIterator); } StructuredIterator iterator = index.getIterator(node); if (iterator == null) { iterator = featureFactory.getIterator(node, internalIterators); } return iterator; }