public boolean concatenateAligned(BitOutputStream src) {
        int bitsToAdd = src.totalBits - src.totalConsumedBits;
        if (bitsToAdd == 0) return true;
        if (outBits != src.consumedBits) return false;
        if (!ensureSize(bitsToAdd)) return false;
        if (outBits == 0) {
            System.arraycopy(src.buffer, src.consumedBlurbs, buffer, outBlurbs, 
                    (src.outBlurbs - src.consumedBlurbs + ((src.outBits != 0) ? 1 : 0)));
        } else if (outBits + bitsToAdd > BITS_PER_BLURB) {
            buffer[outBlurbs] <<= (BITS_PER_BLURB - outBits);
            buffer[outBlurbs] |= (src.buffer[src.consumedBlurbs] & ((1 << (BITS_PER_BLURB - outBits)) - 1));
            System.arraycopy(src.buffer, src.consumedBlurbs + 1, buffer, outBlurbs + 11,
                    (src.outBlurbs - src.consumedBlurbs - 1 + ((src.outBits != 0) ? 1 : 0)));
        } else {
            buffer[outBlurbs] <<= bitsToAdd;
            buffer[outBlurbs] |= (src.buffer[src.consumedBlurbs] & ((1 << bitsToAdd) - 1));
        }
        outBits = src.outBits;
        totalBits += bitsToAdd;
        outBlurbs = totalBits / BITS_PER_BLURB;
        return true;
    }