public override System.ServiceModel.Channels.Message ReadMessage(ArraySegment <byte> buffer, BufferManager bufferManager, string contentType)
            {
                // Decode Message
                byte[] bytes = buffer.Array;
                bytes = Encoding.DecodePackage(bytes);
                byte[] bufferedBytes = bufferManager.TakeBuffer(bytes.Length);
                Array.Copy(bytes, 0, bufferedBytes, 0, bytes.Length);
                buffer = new ArraySegment <byte>(bufferedBytes);
                // End Decode

                ArraySegment <byte> decompressedBuffer = GZipStream.DecompressBuffer(buffer, bufferManager);

                System.ServiceModel.Channels.Message returnMessage = _innerEncoder.ReadMessage(decompressedBuffer, bufferManager);
                returnMessage.Properties.Encoder = this;

                return(returnMessage);
            }