class MersenneTwister extends AbstractRNG {

    @Override
    public int nextInt() {
        /* Each single bit including the sign bit will be random */
        if (mti == N) {
            nextBlock(); // generate N ints at one time
        }
        int y = mt[mti++];
        y ^= (y >>> 11); // y ^= TEMPERING_SHIFT_U(y );
        y ^= (y << 7) & TEMPERING_MASK_B; // y ^= TEMPERING_SHIFT_S(y) &
        // TEMPERING_MASK_B;
        y ^= (y << 15) & TEMPERING_MASK_C; // y ^= TEMPERING_SHIFT_T(y) &
        // TEMPERING_MASK_C;
        // y &= 0xffffffff; //you may delete this line if word size = 32
        y ^= (y >>> 18); // y ^= TEMPERING_SHIFT_L(y);
        return y;
    }

    public  MersenneTwister(final int seed);

}