// Path: src/main/java/com/googlecode/javaewah/IntIterator.java
// public interface IntIterator {
// 
//     /**
//      * Is there more?
//      *
//      * @return true, if there is more, false otherwise
//      */
//     boolean hasNext();
// 
//     /**
//      * Return the next integer
//      *
//      * @return the integer
//      */
//     int next();
// }


import com.googlecode.javaewah.IntIterator;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Arrays;
import java.util.Iterator;
      	this.data[i] = ~this.data[i];
      this.data[endword] ^= ~0L >>> -end;
    }


    /**
     * Get the value of the bit.  This might throw an exception if size() is insufficient, consider calling resize().
     * @param i index
     * @return value of the bit
     */
    public boolean get(final int i) {
        return (this.data[i / 64] & (1l << (i % 64))) != 0;
    }

    @Override
    public int hashCode() {
    	int b = 31;
      long hash = 0;
      for(int k = 0; k < data.length; ++k) {
      	  long aData = this.getWord(k);
          hash = hash * b + aData;
      }
      return (int) hash;
    }

    /**
     * Iterate over the set bits
     *
     * @return an iterator
     */
// Path: src/main/java/com/googlecode/javaewah/IntIterator.java
// public interface IntIterator {
// 
//     /**
//      * Is there more?
//      *
//      * @return true, if there is more, false otherwise
//      */
//     boolean hasNext();
// 
//     /**
//      * Return the next integer
//      *
//      * @return the integer
//      */
//     int next();
// }


// Path: src/main/java/com/googlecode/javaewah/datastructure/BitSet.java
import com.googlecode.javaewah.IntIterator;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Arrays;
import java.util.Iterator;

      	this.data[i] = ~this.data[i];
      this.data[endword] ^= ~0L >>> -end;
    }


    /**
     * Get the value of the bit.  This might throw an exception if size() is insufficient, consider calling resize().
     * @param i index
     * @return value of the bit
     */
    public boolean get(final int i) {
        return (this.data[i / 64] & (1l << (i % 64))) != 0;
    }

    @Override
    public int hashCode() {
    	int b = 31;
      long hash = 0;
      for(int k = 0; k < data.length; ++k) {
      	  long aData = this.getWord(k);
          hash = hash * b + aData;
      }
      return (int) hash;
    }

    /**
     * Iterate over the set bits
     *
     * @return an iterator
     */
    public IntIterator intIterator() {