protected virtual bool AnyFieldMatch(FieldDictionary sourceFields, FieldDictionary targetFields, ISourceItem existingItem, ISerializedItem serializedItem, DeferredLogWriter <ISerializedAsMasterEvaluatorLogger> deferredUpdateLog, ItemVersion version = null) { if (sourceFields == null) { return(false); } return(sourceFields.Any(x => { if (!_fieldPredicate.Includes(x.Key).IsIncluded) { return false; } if (!existingItem.IsFieldComparable(x.Key)) { return false; } bool isMatch = IsFieldMatch(x.Value, targetFields, x.Key); if (isMatch) { deferredUpdateLog.AddEntry(logger => { string sourceFieldValue; targetFields.TryGetValue(x.Key, out sourceFieldValue); if (version == null) { logger.IsSharedFieldMatch(serializedItem, x.Key, x.Value, sourceFieldValue); } else { logger.IsVersionedFieldMatch(serializedItem, version, x.Key, x.Value, sourceFieldValue); } }); } return isMatch; })); }