in model/src/main/java/jetbrains/jetpad/model/composite/Composites.java [498:527]
private static <ValueT> Iterable<ValueT> iterateFrom(final ValueT initial, final Function<ValueT, ValueT> trans) {
return new Iterable<ValueT>() {
@Override
public Iterator<ValueT> iterator() {
return new Iterator<ValueT>() {
private ValueT myCurrent = initial;
@Override
public boolean hasNext() {
return myCurrent != null;
}
@Override
public ValueT next() {
if (myCurrent == null) {
throw new NoSuchElementException();
}
ValueT result = myCurrent;
myCurrent = trans.apply(myCurrent);
return result;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}