private static MAPITagPair findMatch(MAPITag mapiTag, List<TikaMapiProperty> tikaMapiProperties, PropertyValue propertyValue) {
        if (mapiTag == null || tikaMapiProperties == null || propertyValue == null) {
            return null;
        }
        for (TikaMapiProperty tikaMapiProperty : tikaMapiProperties) {
            if (!mapiTag.classID.equals(tikaMapiProperty.classID)) {
                continue;
            }
            if (tikaMapiProperty.types == null || tikaMapiProperty.types.isEmpty()) {
                continue;
            }
            for (Types.MAPIType type : tikaMapiProperty.types) {
                if (propertyValue
                        .getActualType()
                        .equals(type)) {
                    return new MAPITagPair(mapiTag, tikaMapiProperty);
                }
            }
        }
        return null;
    }
This class extracts mapi properties as defined in the props_table.txt, which was generated from MS-OXPROPS.
For now, this ignores binary and unknown property types.
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/msg/ExtendedMetadataExtractor.java