docs: @SuppressWarnings("deprecation")
      protected CmsExtractionResult extractText(InputStream in, Parser parser) throws Exception {
  
          LinkedHashMap<String, String> contentItems = new LinkedHashMap<String, String>();
  
          StringWriter writer = new StringWriter();
          BodyContentHandler handler = new BodyContentHandler(writer);
          Metadata meta = new Metadata();
          ParseContext context = new ParseContext();
  
          parser.parse(in, handler, meta, context);
          in.close();
  
          String result = writer.toString();
  
          // add the main document text
          StringBuffer content = new StringBuffer(result);
          if (CmsStringUtil.isNotEmpty(result)) {
              contentItems.put(I_CmsExtractionResult.ITEM_RAW, result);
          }
  
          // appends all known document meta data as content items
          combineContentItem(meta.get(DublinCore.TITLE), I_CmsExtractionResult.ITEM_TITLE, content, contentItems);
          combineContentItem(meta.get(MSOffice.KEYWORDS), I_CmsExtractionResult.ITEM_KEYWORDS, content, contentItems);
          String subject = meta.get(I_CmsExtractionResult.ITEM_SUBJECT);
          if (StringUtils.isBlank(subject)) {
              subject = meta.get(DublinCore.SUBJECT);
          }
          combineContentItem(subject, I_CmsExtractionResult.ITEM_SUBJECT, content, contentItems);
          combineContentItem(meta.get(MSOffice.AUTHOR), I_CmsExtractionResult.ITEM_AUTHOR, content, contentItems);
          String creator = meta.get("xmp:CreatorTool");
          if (StringUtils.isBlank(creator)) {
              creator = meta.get(DublinCore.CREATOR);
          }
          if (StringUtils.isBlank(creator)) {
              creator = meta.get(I_CmsExtractionResult.ITEM_CREATOR);
          }
          combineContentItem(creator, I_CmsExtractionResult.ITEM_CREATOR, content, contentItems);
          //
          combineContentItem(meta.get(MSOffice.CATEGORY), I_CmsExtractionResult.ITEM_CATEGORY, content, contentItems);
          //
          combineContentItem(meta.get(MSOffice.COMMENTS), I_CmsExtractionResult.ITEM_COMMENTS, content, contentItems);
          String company = meta.get(OfficeOpenXMLExtended.COMPANY);
          if (StringUtils.isBlank(company)) {
              company = meta.get(MSOffice.COMPANY);
          }
          combineContentItem(company, I_CmsExtractionResult.ITEM_COMPANY, content, contentItems);
          //
          combineContentItem(meta.get(MSOffice.MANAGER), I_CmsExtractionResult.ITEM_MANAGER, content, contentItems);
          // this constant seems to be missing from TIKA
          combineContentItem(
              meta.get(I_CmsExtractionResult.ITEM_PRODUCER),
              I_CmsExtractionResult.ITEM_PRODUCER,
              content,
              contentItems);
  
          // return the final result
          return new CmsExtractionResult(content.toString(), contentItems);
      }