docs: public synchronized int putMEMEMessageWithoutEncode(AbstractMessage memeMessage,
                                                          List<DataSlice> messageParts) {
          if (tc.isEntryEnabled())
              SibTr.entry(this, tc, "putMEMEMessageWithoutEncode",
                                             new Object[] { memeMessage, messageParts });
  
          int messageLength = 0;
          // Now we have a list of MessagePart objects. First work out the overall length.
          for (int x = 0; x < messageParts.size(); x++) {
              messageLength += messageParts.get(x).getLength();
          }
  
          if (tc.isDebugEnabled())
              SibTr.debug(this, tc, "Message is " + messageLength + "byte(s) in length");
  
          // Write the length
          // GRRRRRRRRRRRRRRRR Read the FAP Clifford
          putInt(messageLength);
          // Write the control flag
          if (memeMessage.isControlMessage())
              put(CommsConstants.MEME_CONTROLMESSAGE); // Control message flag
          else
              put(CommsConstants.MEME_JSMESSAGE); // Message data flag
  
          // Now take the message parts and wrap them into byte buffers using the offset's supplied
          for (int x = 0; x < messageParts.size(); x++) {
              DataSlice messPart = messageParts.get(x);
              if (tc.isDebugEnabled())
                  SibTr.debug(tc, "DataSlice[" + x + "]: " +
                                                    "Array: " + messPart.getBytes() + ", " +
                                                    "Offset: " + messPart.getOffset() + ", " +
                                                    "Length: " + messPart.getLength());
  
              wrap(messPart.getBytes(), messPart.getOffset(), messPart.getLength());
          }
  
          if (tc.isEntryEnabled())
              SibTr.exit(this, tc, "putMEMEMessageWithoutEncode", messageLength);
          return messageLength;
      }