private Iterator mapIterator()

in model/src/main/java/jetbrains/jetpad/model/util/ListMap.java [165:197]


  private <T> Iterator<T> mapIterator(final IteratorSpec spec) {
    return new Iterator<T>() {
      private int index = 0;
      private boolean nextCalled = false;

      @Override
      public boolean hasNext() {
        return index < myData.length;
      }

      @Override
      public T next() {
        if (!hasNext()) {
          throw new NoSuchElementException();
        }
        nextCalled = true;
        @SuppressWarnings("unchecked")
        T value = (T) spec.get(index);
        index += 2;
        return value;
      }

      @Override
      public void remove() {
        if (!nextCalled) {
          throw new IllegalStateException();
        }
        index -= 2;
        removeAt(index);
        nextCalled = false;
      }
    };
  }