public Map<String, Object> getMessageMap() {
    if (!isDelete) {
      Map<String, Object> immutableMap = new HashMap<String, Object>(messageMap);
      // To make sure the values is immutable, we overwrite it with an immutable version of the the values map.
      immutableMap.put("values", Collections.unmodifiableMap(getMessageValues()));
      return Collections.unmodifiableMap(immutableMap);
    } else {
      return null;
    }
  }
@return The whole message map including header information.
samza-core/src/main/java/org/apache/samza/coordinator/stream/messages/CoordinatorStreamMessage.java