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; }