code: public DecoderResult decode(BitMatrix bits, Map<DecodeHintType,?> hints)
        throws FormatException, ChecksumException {
  
      // Construct a parser and read version, error-correction level
      BitMatrixParser parser = new BitMatrixParser(bits);
      FormatException fe = null;
      ChecksumException ce = null;
      try {
        return decode(parser, hints);
      } catch (FormatException e) {
        fe = e;
      } catch (ChecksumException e) {
        ce = e;
      }
  
      try {
  
        // Revert the bit matrix
        parser.remask();
  
        // Will be attempting a mirrored reading of the version and format info.
        parser.setMirror(true);
  
        // Preemptively read the version.
        parser.readVersion();
  
        // Preemptively read the format information.
        parser.readFormatInformation();
  
        /*
         * Since we're here, this means we have successfully detected some kind
         * of version and format information when mirrored. This is a good sign,
         * that the QR code may be mirrored, and we should try once more with a
         * mirrored content.
         */
        // Prepare for a mirrored reading.
        parser.mirror();
  
        DecoderResult result = decode(parser, hints);
  
        // Success! Notify the caller that the code was mirrored.
        result.setOther(new QRCodeDecoderMetaData(true));
  
        return result;
  
      } catch (FormatException | ChecksumException e) {
        // Throw the exception from the original reading
        if (fe != null) {
          throw fe;
        }
        throw ce; // If fe is null, this can't be
      }
    }
docs: <p>Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.</p>
  
  @param bits booleans representing white/black QR Code modules
  @param hints decoding hints that should be used to influence decoding
  @return text and bytes encoded within the QR Code
  @throws FormatException if the QR Code cannot be decoded
  @throws ChecksumException if error correction fails