public override IMessage PreSend(IMessage message, IMessageChannel channel)
            {
                if (message.Payload is byte[] &&
                    !message.Headers.ContainsKey(BinderHeaders.NATIVE_HEADERS_PRESENT) &&
                    EmbeddedHeaderUtils.MayHaveEmbeddedHeaders((byte[])message.Payload))
                {
                    MessageValues messageValues;
                    try
                    {
                        messageValues = EmbeddedHeaderUtils.ExtractHeaders((IMessage <byte[]>)message, true);
                    }
                    catch (Exception)
                    {
                        /*
                         * debug() rather then error() since we don't know for sure that it
                         * really is a message with embedded headers, it just meets the
                         * criteria in EmbeddedHeaderUtils.mayHaveEmbeddedHeaders().
                         */

                        // this.logger?.LogDebug(EmbeddedHeaderUtils.DecodeExceptionMessage(message), e);
                        messageValues = new MessageValues(message);
                    }

                    return(messageValues.ToMessage());
                }

                return(message);
            }