private void processCompositeFieldString(BaseTransformerElement element, Field fld) throws ConstraintException {
        CompositeFieldString cfs = fld.getAnnotation(CompositeFieldString.class);
        StringBuilder sb = new StringBuilder();
        for(MarcSubfield sub : tag.getSubfields(cfs.subfields())) {
            String fieldData = sub.getData();
            if(MarcWorxStringHelper.isNotEmpty(fieldData) && cfs.stripPunctuation()) {
                if(MarcWorxStringHelper.isNotEmpty(cfs.leadingPunctuation())) {
                    fieldData = MarcWorxStringHelper.stripLeadingData(fieldData, cfs.leadingPunctuation());
                }
                if(MarcWorxStringHelper.isNotEmpty(cfs.trailingPunctuation())) {
                    fieldData = MarcWorxStringHelper.stripTrailingData(fieldData, cfs.trailingPunctuation());
                }
            }
            if(sb.length() > 0 && fieldData.length() > 0) {
                sb.append(cfs.divider());
            }
            sb.append(fieldData);
            
        }
        String dataToAdd = sb.length() > 0 ? sb.toString() : null;
        TransformerGeneralHelper.invokeStringSetterOnField(fld, element, dataToAdd);
    }