// Make bit vector of version information. On success, store the result in "bits" and return true.
        // See 8.10 of JISX0510:2004 (p.45) for details.
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        //ORIGINAL LINE: static void makeVersionInfoBits(com.google.zxing.qrcode.decoder.Version version, com.google.zxing.common.BitArray bits) throws com.google.zxing.WriterException
        internal static void makeVersionInfoBits(Version version, BitArray bits)
        {
            bits.appendBits(version.VersionNumber, 6);
            int bchCode = calculateBCHCode(version.VersionNumber, VERSION_INFO_POLY);
            bits.appendBits(bchCode, 12);

            if (bits.Size != 18) // Just in case.
            {
              throw new WriterException("should not happen but we got: " + bits.Size);
            }
        }
        // Make bit vector of type information. On success, store the result in "bits" and return true.
        // Encode error correction level and mask pattern. See 8.9 of
        // JISX0510:2004 (p.45) for details.
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        //ORIGINAL LINE: static void makeTypeInfoBits(com.google.zxing.qrcode.decoder.ErrorCorrectionLevel ecLevel, int maskPattern, com.google.zxing.common.BitArray bits) throws com.google.zxing.WriterException
        internal static void makeTypeInfoBits(ErrorCorrectionLevel ecLevel, int maskPattern, BitArray bits)
        {
            if (!QRCode.isValidMaskPattern(maskPattern))
            {
              throw new WriterException("Invalid mask pattern");
            }
            int typeInfo = (ecLevel.Bits << 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.Size != 15) // Just in case.
            {
              throw new WriterException("should not happen but we got: " + bits.Size);
            }
        }