class SmallNumberedMapIterator<C> implements Iterator<C> {
    private final C[] data;
    private int cur;

    SmallNumberedMapIterator(C[] data) {
      this.data = data;
      this.cur = 0;
      seekNext();
    }

    protected final void seekNext() {
      V[] temp = SmallNumberedMap.this.values;
      try {
        while (temp[cur] == null) {
          cur++;
        }
      } catch (ArrayIndexOutOfBoundsException e) {
        cur = -1;
      }
    }

    @Override
    public final void remove() {
      SmallNumberedMap.this.array[cur - 1] = null;
      SmallNumberedMap.this.values[cur - 1] = null;
    }

    @Override
    public final boolean hasNext() {
      return cur != -1;
    }

    @Override
    public final C next() {
      C ret = data[cur];
      cur++;
      seekNext();
      return ret;
    }
  }

  private int findPosition(K o) {<FILL_FUNCTION_BODY>

    int number = o.getNumber();
    if (number == 0) {
      throw new RuntimeException("unnumbered");
    }
    number = number & (array.length - 1);
    while (true) {
      K key = array[number];
      if (key == o || key == null) {
        return number;
      }
      number = (number + 1) & (array.length - 1);
    }
  
<no_super_class>