private static bool AreEqual(Selector knownSingle, Selector other)
{
var multiOther = other as MultiSelector;
if (multiOther != null)
{
return multiOther.Selectors.Any(a => AreEqual(knownSingle, a));
}
if (knownSingle.GetType() != other.GetType()) return false;
string knownStr, otherStr;
using (var str = new StringWriter())
{
knownSingle.Write(str);
knownStr = str.ToString();
}
using (var str = new StringWriter())
{
other.Write(str);
otherStr = str.ToString();
}
return knownStr.Equals(otherStr, StringComparison.InvariantCultureIgnoreCase);
}