private AMQMessageHeader convertHeader(final AMQMessage serverMessage,
final NamedAddressSpace addressSpace,
final Object convertedBodyObject, final String encoding)
{
final String convertedMimeType = getInternalConvertedMimeType(serverMessage, convertedBodyObject);
final AMQMessageHeader messageHeader = serverMessage.getMessageHeader();
Map<String, Object> headers = new HashMap<>();
messageHeader.getHeaderNames()
.forEach(headerName -> headers.put(headerName, messageHeader.getHeader(headerName)));
final InternalMessageHeader header = new InternalMessageHeader(headers,
messageHeader.getCorrelationId(),
messageHeader.getExpiration(),
messageHeader.getUserId(),
messageHeader.getAppId(),
messageHeader.getMessageId(),
convertedMimeType,
messageHeader.getEncoding(),
messageHeader.getPriority(),
messageHeader.getTimestamp(),
messageHeader.getNotValidBefore(),
messageHeader.getType(),
messageHeader.getReplyTo(),
serverMessage.getArrivalTime());
return new DelegatingMessageHeader(header, encoding);
}