public void testLogicLargeArrayArraycopy()
    {
        boolean[] data = new boolean[1000000];
        for (int i = 0; i < data.length; i++) {
            data[i] = i % 5 == 0;
        }
        int startPos = 2;
        int length = data.length - 2;
        LargeArray.setMaxSizeOf32bitArray(1073741824);
        LogicLargeArray a = new LogicLargeArray(data);
        LogicLargeArray b = new LogicLargeArray(2 * data.length);
        Utilities.arraycopy(a, startPos, b, 0, length);
        for (int i = 0; i < length; i++) {
            assertEquals(data[startPos + i], b.getBoolean(i));
        }
        b = new LogicLargeArray(2 * data.length);
        Utilities.arraycopy(data, startPos, b, 0, length);
        for (int i = 0; i < length; i++) {
            assertEquals(data[startPos + i], b.getBoolean(i));
        }
        LargeArray.setMaxSizeOf32bitArray(data.length - 1);
        a = new LogicLargeArray(data);
        b = new LogicLargeArray(2 * data.length);
        Utilities.arraycopy(a, startPos, b, 0, length);
        for (int i = 0; i < length; i++) {
            assertEquals(data[startPos + i], b.getBoolean(i));
        }
        b = new LogicLargeArray(2 * data.length);
        Utilities.arraycopy(data, startPos, b, 0, length);
        for (int i = 0; i < length; i++) {
            assertEquals(data[startPos + i], b.getBoolean(i));
        }
    }