private int size = 0;
public Iterator<T> iterator() { i=0; return this; }
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; }
private int size = 0;
public Iterator<T> iterator() { i=0; return this; }
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; }