@Override
    public byte[] encode(M message) throws EncodingException {
        byte[] in = this.delegate.encode(message);
        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
        try (GZIPOutputStream gzipOut = new GZIPOutputStream(byteOut)) {
            gzipOut.write(in);
        } catch (IOException e) {
            throw new EncodingException(e);
        }
        return byteOut.toByteArray();
    }
A {@link Codec} wrapper using GZip.

@param <M> the message type
helper/src/main/java/me/lucko/helper/messaging/codec/GZipCodec.java