docs: static void makeTypeInfoBits(ErrorCorrectionLevel ecLevel, int maskPattern, BitArray bits)
        throws WriterException {
      if (!QRCode.isValidMaskPattern(maskPattern)) {
        throw new WriterException("Invalid mask pattern");
      }
      int typeInfo = (ecLevel.getBits() << 3) | maskPattern;
      bits.appendBits(typeInfo, 5);
  
      int bchCode = calculateBCHCode(typeInfo, TYPE_INFO_POLY);
      bits.appendBits(bchCode, 10);
  
      BitArray maskBits = new BitArray();
      maskBits.appendBits(TYPE_INFO_MASK_PATTERN, 15);
      bits.xor(maskBits);
  
      if (bits.getSize() != 15) {  // Just in case.
        throw new WriterException("should not happen but we got: " + bits.getSize());
      }
    }