I have tried out this serialization format
The format of the byte buffer looks like this for variable length array elements
	 * <noofelements><Offset of the index array><elements><offset array>
	 * where <noOfelements> - vint
	 * <offset of the index array> - int
	 * <elements>  - these are the values
	 * <offset array> - offset of every element written as int
The reason for using int is that the offset could be value bigger than what an Byte could hold off so its better we go with int.
Also the offset array is now noOfElements * SIZE_OF_INT.
when we implement array offset seek, we could directly read this offset part in the byteValue and from the current offset and next offset we could get the length of the element too.
So from the byteValue byte[] we could point to the exact offset and read those many bytes to get the specific element.  This would be faster for seeks.