public void remove() { throw new Error(); }
public boolean hasNext() { return only==null ? i<size : i<1; }
public T next() { return only==null ? (T)array[i++] : (i++)==0 ? only : null; }
public void remove() { throw new Error(); }
public boolean hasNext() { return only==null ? i<size : i<1; }
public T next() { return only==null ? (T)array[i++] : (i++)==0 ? only : null; }