public ByteBuf decode(ByteBuf src) {
        final ByteBuf dest = allocator.buffer(decodedBufferSize(src.readableBytes()));
        this.dest = dest;
        boolean success = false;
        try {
            src.forEachByte(this);
            success = true;
            return dest;
        } finally {
            if (!success) {
                dest.release();
            }
            src.release();
        }
    }
A stateful Base64decoder. Unlike {@link io.netty.handler.codec.base64.Base64Decoder}, this decoder does
not end when it meets padding('='), but continues to decode until the end of the {@link ByteBuf} given by
{@link #decode(ByteBuf)}. If the {@link ByteBuf} does not have necessary 4 bytes to decode as 3 bytes,
it stores the remained bytes and prepend them to the next {@link #decode(ByteBuf)} and decode together.
grpc-protocol/src/main/java/com/linecorp/armeria/internal/common/grpc/protocol/Base64Decoder.java