private Map<String, Object> copyHeader(AMQP.BasicProperties properties) {
        final Map<String, Object> headers = properties.getHeaders();
        if (MapUtils.isEmpty(headers)) {
            return new HashMap<String, Object>();
        }
        // headers wrapped as unmodifiable map
        return new HashMap<String, Object>(headers);
    }
<p>{@code AMQContentHeader} received as an argument to the constructor is sharable and can be reused, such as
{@code MessageProperties.MINIMAL_BASIC}. Any changes made to it (ie injecting pinpoint headers) may have undesirable
consequences.

<p>Hence, we make a copy via {@code ChannelAspect} and add pinpoint headers to it when propagating trace, and have
{@code AMQCommand} use this.

@author HyunGil Jeong

@see com.navercorp.pinpoint.plugin.rabbitmq.client.aspect.ChannelAspect
agent-module/plugins/rabbitmq/src/main/java/com/navercorp/pinpoint/plugin/rabbitmq/client/interceptor/AMQCommandConstructInterceptor.java