void output(int code, OutputStream outs) throws IOException {
            cur_accum &= masks[cur_bits];

            if (cur_bits > 0)
                    cur_accum |= (code << cur_bits);
            else
                    cur_accum = code;

            cur_bits += n_bits;

            while (cur_bits >= 8) {
                    char_out((byte) (cur_accum & 0xff), outs);
                    cur_accum >>= 8;
                    cur_bits -= 8;
            }

            // If the next entry is going to be too big for the code size,
            // then increase it, if possible.
            if (free_ent > maxcode || clear_flg) {
                    if (clear_flg) {
                            maxcode = MAXCODE(n_bits = g_init_bits);
                            clear_flg = false;
                    } else {
                            ++n_bits;
                            if (n_bits == maxbits)
                                    maxcode = maxmaxcode;
                            else
                                    maxcode = MAXCODE(n_bits);
                    }
            }

            if (code == EOFCode) {
                    // At EOF, write the rest of the buffer.
                    while (cur_bits > 0) {
                            char_out((byte) (cur_accum & 0xff), outs);
                            cur_accum >>= 8;
                            cur_bits -= 8;
                    }

                    flush_char(outs);
            }
    }