class LongBitMask extends SingleLongBitMask implements BitMask {

    @Override
    public BitMask resetAll(BitMask mask) {
        if (mask instanceof LongBitMask) {
            this.mask &= (-1L - ((LongBitMask) mask).asLong());
            return this;
        } else if (mask instanceof AllSetBitMask) {
            return EmptyBitMask.get();
        } else if (mask instanceof AllSetButLastBitMask) {
            this.mask &= Long.MIN_VALUE;
            return this;
        } else if (mask instanceof EmptyButLastBitMask) {
            return reset(0);
        } else if (mask instanceof EmptyBitMask) {
            return this;
        }
        throw new RuntimeException("Cannot resetAll a LongBitMask with a " + mask.getClass().getSimpleName());
    }

    public  LongBitMask();
    public  LongBitMask(long mask);

}