docs: public void setHints(Map<DecodeHintType,?> hints) {
      this.hints = hints;
  
      boolean tryHarder = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER);
      @SuppressWarnings("unchecked")
      Collection<BarcodeFormat> formats =
          hints == null ? null : (Collection<BarcodeFormat>) hints.get(DecodeHintType.POSSIBLE_FORMATS);
      Collection<Reader> readers = new ArrayList<>();
      if (formats != null) {
        boolean addOneDReader =
            formats.contains(BarcodeFormat.UPC_A) ||
            formats.contains(BarcodeFormat.UPC_E) ||
            formats.contains(BarcodeFormat.EAN_13) ||
            formats.contains(BarcodeFormat.EAN_8) ||
            formats.contains(BarcodeFormat.CODABAR) ||
            formats.contains(BarcodeFormat.CODE_39) ||
            formats.contains(BarcodeFormat.CODE_93) ||
            formats.contains(BarcodeFormat.CODE_128) ||
            formats.contains(BarcodeFormat.ITF) ||
            formats.contains(BarcodeFormat.RSS_14) ||
            formats.contains(BarcodeFormat.RSS_EXPANDED);
        // Put 1D readers upfront in "normal" mode
        if (addOneDReader && !tryHarder) {
          readers.add(new MultiFormatOneDReader(hints));
        }
        if (formats.contains(BarcodeFormat.QR_CODE)) {
          readers.add(new QRCodeReader());
        }
        if (formats.contains(BarcodeFormat.DATA_MATRIX)) {
          readers.add(new DataMatrixReader());
        }
        if (formats.contains(BarcodeFormat.AZTEC)) {
          readers.add(new AztecReader());
        }
        if (formats.contains(BarcodeFormat.PDF_417)) {
           readers.add(new PDF417Reader());
        }
        if (formats.contains(BarcodeFormat.MAXICODE)) {
           readers.add(new MaxiCodeReader());
        }
        // At end in "try harder" mode
        if (addOneDReader && tryHarder) {
          readers.add(new MultiFormatOneDReader(hints));
        }
      }
      if (readers.isEmpty()) {
        if (!tryHarder) {
          readers.add(new MultiFormatOneDReader(hints));
        }
  
        readers.add(new QRCodeReader());
        readers.add(new DataMatrixReader());
        readers.add(new AztecReader());
        readers.add(new PDF417Reader());
        readers.add(new MaxiCodeReader());
  
        if (tryHarder) {
          readers.add(new MultiFormatOneDReader(hints));
        }
      }
      this.readers = readers.toArray(EMPTY_READER_ARRAY);
    }