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];
  }