import java.nio.ByteBuffer;
import java.nio.LongBuffer;
import java.util.BitSet;

public class Main {
    public static void main(String[] args) {
        int MAX_WIU = Integer.MAX_VALUE/64 + 1;

// Expected
        long[] okArr = new long[MAX_WIU];
        okArr[ okArr.length-1 ] = 1;
        BitSet okBS = BitSet.valueOf(okArr);
        System.out.println(okBS.length()); // 2147483585
        System.out.println(okBS.get( okBS.length()-1 )); // TRUE

// Actual
        long[] arr = new long[2*MAX_WIU+1];
        arr[ arr.length-1 ] = 1;
        BitSet bitSet = BitSet.valueOf(arr);
        System.out.println(bitSet.length()); // 1
        System.out.println(bitSet.get( bitSet.length()-1 )); // FALSE

        LongBuffer lb = LongBuffer.wrap(arr);
        BitSet bitSet2 = BitSet.valueOf(lb);
        System.out.println(bitSet2.length()); // 1
        System.out.println(bitSet2.get( bitSet2.length()-1 )); // FALSE

        ByteBuffer bb = ByteBuffer.allocate(arr.length * Long.BYTES);
        bb.asLongBuffer().put(arr);
        BitSet bitSet3 = BitSet.valueOf(bb);
        System.out.println(bitSet3.length()); // 57
        System.out.println(bitSet3.get( bitSet3.length()-1 )); // FALSE

        byte[] barr = new byte[bb.remaining()];
        bb.get(barr);
        BitSet bitSet4 = BitSet.valueOf(barr);
        System.out.println(bitSet4.length()); // 57
        System.out.println(bitSet4.get( bitSet4.length()-1 )); // FALSE
    }
}