@Override public boolean isEquivalentTo(IQTree tree) { if (!getRootNode().isEquivalentTo(tree.getRootNode())) return false; ImmutableList<IQTree> otherChildren = tree.getChildren(); return (children.size() == otherChildren.size()) && IntStream.range(0, children.size()) .allMatch(i -> children.get(i).isEquivalentTo(otherChildren.get(i))); }