private static bool AreEqual(ContentItem item1, ContentItem item2, XElement item1Export, XElement item2Export) { //todo: this is a little too generous if (!item1.SharesIdentifierWith(item2)) return false; if (item1.Has<TitlePart>() && item2.Has<TitlePart>()) { if (!item1.As<TitlePart>().Title.Equals(item2.As<TitlePart>().Title, StringComparison.CurrentCulture)) { return false; } } if (item1.Has<BodyPart>() && item2.Has<BodyPart>()) { var text1 = item1.As<BodyPart>().Text; var text2 = item2.As<BodyPart>().Text; if (text1 == null || text2 == null) return false; if (!item1.As<BodyPart>().Text.Equals(item2.As<BodyPart>().Text, StringComparison.CurrentCulture)) { return false; } } // compare xml elements return Differences(item1Export, item2Export) == 0; }