private SimpleMessageGroup normalizeSimpleMessageGroup(SimpleMessageGroup messageGroup) {
   SimpleMessageGroup normalizedGroup = new SimpleMessageGroup(messageGroup.getGroupId());
   for (Message<?> message : messageGroup.getMessages()) {
     Message<?> normailizedMessage = this.normalizeMessage(message);
     normalizedGroup.add(normailizedMessage);
   }
   return normalizedGroup;
 }
  /** Remove a Message from the group with the provided group ID. */
  public MessageGroup removeMessageFromGroup(Object groupId, Message<?> messageToRemove) {
    Assert.notNull(groupId, "'groupId' must not be null");
    Assert.notNull(messageToRemove, "'messageToRemove' must not be null");

    // build raw MG
    SimpleMessageGroup rawGroup = this.buildMessageGroup(groupId, true);

    // create a clean instance of
    SimpleMessageGroup messageGroup = this.normalizeSimpleMessageGroup(rawGroup);

    for (Message<?> message : rawGroup.getMessages()) {
      if (message.getHeaders().getId().equals(messageToRemove.getHeaders().getId())) {
        rawGroup.remove(message);
      }
    }
    this.removeMessage(messageToRemove.getHeaders().getId());

    this.doStore(MESSAGE_GROUP_KEY_PREFIX + groupId, new MessageGroupMetadata(rawGroup));
    messageGroup = this.getSimpleMessageGroup(this.getMessageGroup(groupId));

    return messageGroup;
  }