code: private OutlookFieldInformation analyzeDocumentEntry(final DocumentEntry de) {
  		final String name = de.getName();
  		// we are only interested in document entries
  		// with names starting with __substg1.
  		LOGGER.trace("Document entry: {}", name);
  		if (name.startsWith(PROPERTY_STREAM_PREFIX)) {
  			final String clazz;
  			final String type;
  			final int mapiType;
  			try {
  				final String val = name.substring(PROPERTY_STREAM_PREFIX.length()).toLowerCase();
  				// the first 4 digits of the remainder
  				// defines the field class (or field name)
  				// and the last 4 digits indicate the
  				// data type.
  				clazz = val.substring(0, 4);
  				type = val.substring(4);
  				LOGGER.trace("  Found document entry: class={}, type={}", clazz, type);
  				mapiType = Integer.parseInt(type, 16);
  			} catch (final RuntimeException re) {
  				LOGGER.error("Could not parse directory entry {}", name, re);
  				return new OutlookFieldInformation();
  			}
  			return new OutlookFieldInformation(clazz, mapiType);
  		} else {
  			LOGGER.trace("Ignoring entry with name {}", name);
  		}
  		// we are not interested in the field
  		// and return an empty OutlookFieldInformation object
  		return new OutlookFieldInformation();
  	}
docs: Analyzes the {@link DocumentEntry} and returns
  a {@link OutlookFieldInformation} object containing the
  class (the field name, so to say) and type of
  the entry.
  
  @param de The {@link DocumentEntry} that should be examined.
  @return A {@link OutlookFieldInformation} object containing class and type of the document entry or, if the entry is not an interesting field, an empty
  {@link OutlookFieldInformation} object containing {@link OutlookFieldInformation#UNKNOWN} class and type.