I think we should return the BytesRef array we get from reading from byte array, and `arrayOffset` will use the same logic, and return the offset form the BytesRef