public static ObjectKey ReplaceKeyReference(ObjectKey key, ObjectKey replaceFrom, ObjectKey replaceTo, out bool changed) { if (key.IsLocal) { ObjectKey result = ObjectKey.NewKey(key.LocalPart); result.Parent = ReplaceKeyReference(key.Parent, replaceFrom, replaceTo, out changed); return(result); } else if (key == replaceFrom) { changed = true; return(replaceTo); } else { changed = false; return(key); } }