// Path: src/main/java/com/googlecode/javaewah/CloneableIterator.java
// public interface CloneableIterator<E> extends Cloneable {
// 
//     /**
//      * @return whether there is more
//      */
//     boolean hasNext();
// 
//     /**
//      * @return the next element
//      */
//     E next();
// 
//     /**
//      * @return a copy
//      * @throws CloneNotSupportedException this should never happen in practice
//      */
//     CloneableIterator<E> clone() throws CloneNotSupportedException;
// 
// }


import com.googlecode.javaewah.CloneableIterator;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
                int l = i.getRunningLength();
                if (pos + l > bitmap.length) {
                    if (!i.getRunningBit()) {
                        for (int k = pos; k < bitmap.length; ++k)
                            bitmap[k] = 0;
                    }
                    i.discardFirstWords(howMany);
                    return bitmap.length;
                }
                if (!i.getRunningBit())
                    for (int k = pos; k < pos + l; ++k)
                        bitmap[k] = 0;
                pos += l;
                for (int k = 0; pos < bitmap.length; ++k)
                    bitmap[pos++] &= i.getLiteralWordAt(k);
                i.discardFirstWords(howMany);
                return pos;
            }
        }
        return pos;
    }

    /**
     * An optimization option. Larger values may improve speed, but at the
     * expense of memory.
     */
    public static final int DEFAULT_MAX_BUF_SIZE = 65536;

}

// Path: src/main/java/com/googlecode/javaewah/CloneableIterator.java
// public interface CloneableIterator<E> extends Cloneable {
// 
//     /**
//      * @return whether there is more
//      */
//     boolean hasNext();
// 
//     /**
//      * @return the next element
//      */
//     E next();
// 
//     /**
//      * @return a copy
//      * @throws CloneNotSupportedException this should never happen in practice
//      */
//     CloneableIterator<E> clone() throws CloneNotSupportedException;
// 
// }


// Path: src/main/java/com/googlecode/javaewah32/IteratorAggregation32.java
import com.googlecode.javaewah.CloneableIterator;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;

                int l = i.getRunningLength();
                if (pos + l > bitmap.length) {
                    if (!i.getRunningBit()) {
                        for (int k = pos; k < bitmap.length; ++k)
                            bitmap[k] = 0;
                    }
                    i.discardFirstWords(howMany);
                    return bitmap.length;
                }
                if (!i.getRunningBit())
                    for (int k = pos; k < pos + l; ++k)
                        bitmap[k] = 0;
                pos += l;
                for (int k = 0; pos < bitmap.length; ++k)
                    bitmap[pos++] &= i.getLiteralWordAt(k);
                i.discardFirstWords(howMany);
                return pos;
            }
        }
        return pos;
    }

    /**
     * An optimization option. Larger values may improve speed, but at the
     * expense of memory.
     */
    public static final int DEFAULT_MAX_BUF_SIZE = 65536;

}

class ORIt implements CloneableIterator<EWAHIterator32> {