// check all the attributes
for ( String attributeDescription : attributeDescriptions )
{
// get attribute type schema information
Schema schema = oldEntry.getBrowserConnection().getSchema();
AttributeTypeDescription atd = schema.getAttributeTypeDescription( attributeDescription );
boolean hasEMR = SchemaUtils.getEqualityMatchingRuleNameOrNumericOidTransitive( atd, schema ) != null;
boolean isReplaceForced = ( hasEMR && modifyMode == ModifyMode.REPLACE )
|| ( !hasEMR && modifyModeNoEMR == ModifyMode.REPLACE );
boolean isAddDelForced = ( hasEMR && modifyMode == ModifyMode.ADD_DELETE )
|| ( !hasEMR && modifyModeNoEMR == ModifyMode.ADD_DELETE );
boolean isOrderedValue = atd.getExtensions().containsKey( "X-ORDERED" )
&& atd.getExtensions().get( "X-ORDERED" ).contains( "VALUES" );
// get old an new values for comparison
IAttribute oldAttribute = oldEntry.getAttribute( attributeDescription );
Set<String> oldValues = new HashSet<String>();
Map<String, LdifAttrValLine> oldAttrValLines = new LinkedHashMap<String, LdifAttrValLine>();