code: public IntIterator getIntIterator() {
  		return new IntIterator() {
  			int wordindex;
  			int i = 0;
  			IntArray buf;
  			int currentword;
  
  			public IntIterator init(IntArray b) {
  				this.buf = b;
  				this.wordindex = this.buf.get(this.i);
  				this.currentword = this.buf.get(this.i + 1);
  				return this;
  			}
  
  			@Override
  			public boolean hasNext() {
  				return this.currentword != 0;
  			}
  
  			@Override
  			public int next() {
  				final int offset = Integer
  						.numberOfTrailingZeros(this.currentword);
  				this.currentword ^= 1 << offset;
  				final int answer = this.wordindex * WORDSIZE + offset;
  				if (this.currentword == 0) {
  					this.i += 2;
  					if (this.i < this.buf.size()) {
  						this.currentword = this.buf.get(this.i + 1);
  						this.wordindex += this.buf.get(this.i) + 1;
  					}
  				}
  				return answer;
  			}
  
  		}.init(this.buffer);
  	}
docs: Build a fast iterator over the set bits.
  
  @return the iterator over the set bits