@Override
  public @NotNull DescendantIterator iterator() {
    // Implement the Iterable stuff.
    return new DescendantIterator(parent);
  }
@Override
  public @NotNull DescendantIterator iterator()