private void setAlwaysInclude(String field, String value, Map<String, String[]> data) {
        if (TIKA_CONTENT_KEY.equals(field)) {
            data.put(field, new String[]{ value });
            return;
        }
        int sizeToAdd = estimateSize(value);
        //if the maxFieldSize is < minimumMaxFieldSizeInAlwaysFields, use the minmax
        //we do not want to truncate a mime!
        int alwaysMaxFieldLength = Math.max(minimumMaxFieldSizeInAlwaysFields, maxFieldSize);
        String toSet = value;
        if (sizeToAdd > alwaysMaxFieldLength) {
            toSet = truncate(value, alwaysMaxFieldLength, data);
            sizeToAdd = estimateSize(toSet);
        }
        int totalAdded = data.containsKey(field) ? 0 : estimateSize(field);
        totalAdded += sizeToAdd;
        if (data.containsKey(field)) {
            String[] vals = data.get(field);
            //this should only ever be single valued!!!
            if (vals.length > 0) {
                totalAdded -= estimateSize(vals[0]);
            }
        }
        estimatedSize += totalAdded;
        data.put(field, new String[]{toSet});
    }
@param maxKeySize maximum key size in UTF-16 bytes-- keys will be truncated to this
                  length; if less than 0, keys will not be truncated
@param maxEstimatedSize
@param includeFields if null or empty, all fields are included; otherwise, which fields
                     to add to the metadata object.
@param excludeFields these fields will not be included (unless they're in {@link StandardWriteFilter#ALWAYS_SET_FIELDS})
@param includeEmpty if <code>true</code>, this will set or add an empty value to the
                    metadata object.
tika-core/src/main/java/org/apache/tika/metadata/writefilter/StandardWriteFilter.java