public byte[] serialize() { if (stringWrapperList.size() != 0) { int counter = 0; int dataLength = 0; // calculate serializedStringWrapperListLength for (StringWrapper stringWrapper : stringWrapperList) { byte[] serializedStringWrapper = stringWrapper.serialize(); byte[] stringWrapperLengthByteArray = DataLengthByteArrayMaker.getByteArray(serializedStringWrapper.length); dataLength += stringWrapperLengthByteArray.length + serializedStringWrapper.length; } byte[] serializedStringWrapperList = new byte[dataLength]; for (StringWrapper stringWrapper : stringWrapperList) { byte[] serializedStringWrapper = stringWrapper.serialize(); int serializedStringWrapperLength = serializedStringWrapper.length; byte[] stringWrapperLengthByteArray = DataLengthByteArrayMaker.getByteArray(serializedStringWrapperLength); System.arraycopy( stringWrapperLengthByteArray, 0, serializedStringWrapperList, counter, stringWrapperLengthByteArray.length); counter += stringWrapperLengthByteArray.length; System.arraycopy( serializedStringWrapper, 0, serializedStringWrapperList, counter, serializedStringWrapper.length); counter += serializedStringWrapper.length; } return serializedStringWrapperList; } return new byte[0]; }