code: public static MultiMessage decode(String encodedMessages, TempFileContext tempFileContext) throws IOException {
  		if(encodedMessages.isEmpty()) return EMPTY_MULTI_MESSAGE;
  
  		int pos = encodedMessages.indexOf(DELIMITER);
  		if(pos == -1) throw new IllegalArgumentException("Delimiter not found");
  		final int size = Integer.parseInt(encodedMessages.substring(0, pos++));
  		List<Message> decodedMessages = new ArrayList<>(size);
  		for(int i=0; i<size; i++) {
  			MessageType type = MessageType.getFromTypeChar(encodedMessages.charAt(pos++));
  			int nextPos = encodedMessages.indexOf(DELIMITER, pos);
  			if(nextPos == -1) throw new IllegalArgumentException("Delimiter not found");
  			final int capacity = Integer.parseInt(encodedMessages.substring(pos, nextPos++));
  			pos = nextPos + capacity;
  			decodedMessages.add(type.decode(encodedMessages.substring(nextPos, pos), tempFileContext));
  		}
  		if(pos != encodedMessages.length()) throw new IllegalArgumentException("pos != encodedMessages.length()");
  		return new MultiMessage(Collections.unmodifiableList(decodedMessages));
  	}
docs: Decodes the messages using the provided {@link TempFileContext temporary file context}.