docs: static void terminateBits(int numDataBytes, BitArray bits) throws WriterException {
      int capacity = numDataBytes * 8;
      if (bits.getSize() > capacity) {
        throw new WriterException("data bits cannot fit in the QR Code" + bits.getSize() + " > " +
            capacity);
      }
      for (int i = 0; i < 4 && bits.getSize() < capacity; ++i) {
        bits.appendBit(false);
      }
      // Append termination bits. See 8.4.8 of JISX0510:2004 (p.24) for details.
      // If the last byte isn't 8-bit aligned, we'll add padding bits.
      int numBitsInLastByte = bits.getSize() & 0x07;    
      if (numBitsInLastByte > 0) {
        for (int i = numBitsInLastByte; i < 8; i++) {
          bits.appendBit(false);
        }
      }
      // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24).
      int numPaddingBytes = numDataBytes - bits.getSizeInBytes();
      for (int i = 0; i < numPaddingBytes; ++i) {
        bits.appendBits((i & 0x01) == 0 ? 0xEC : 0x11, 8);
      }
      if (bits.getSize() != capacity) {
        throw new WriterException("Bits size does not equal capacity");
      }
    }