static byte[] adaptArray(byte[] ftdiData)
    {
        int length = ftdiData.length;
        if(length > 64)
        {
            int n = 1;
            int p = 64;
            // Precalculate length without FTDI headers
            while(p < length)
            {
                n++;
                p = n*64;
            }
            int realLength = length - n*2;
            byte[] data = new byte[realLength];
            copyData(ftdiData, data);
            return data;
        }
        else if (length == 2) // special case optimization that returns the same instance.
        {
            return EMPTY_BYTE_ARRAY;
        }
        else
        {
            return Arrays.copyOfRange(ftdiData, 2, length);
        }
    }
@Test
    public void testMultipleFull() {
        byte[] withHeaders = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64};
        byte[] wanted = {3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64};
        Assert.assertArrayEquals(wanted, FTDISerialDevice.adaptArray(withHeaders));
    }