public final Result decode(BinaryBitmap binarybitmap, Map map)
     throws NotFoundException, ChecksumException, FormatException {
   java.util.List list;
   if (map != null && map.containsKey(DecodeHintType.PURE_BARCODE)) {
     binarybitmap = extractPureBits(binarybitmap.getBlackMatrix());
     binarybitmap = decoder.decode(binarybitmap);
     map = NO_POINTS;
   } else {
     map = (new Detector(binarybitmap.getBlackMatrix())).detect();
     binarybitmap = decoder.decode(map.getBits());
     map = map.getPoints();
   }
   map =
       new Result(
           binarybitmap.getText(), binarybitmap.getRawBytes(), map, BarcodeFormat.DATA_MATRIX);
   list = binarybitmap.getByteSegments();
   if (list != null) {
     map.putMetadata(ResultMetadataType.BYTE_SEGMENTS, list);
   }
   binarybitmap = binarybitmap.getECLevel();
   if (binarybitmap != null) {
     map.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, binarybitmap);
   }
   return map;
 }