in src/Proton.TestPeer/Codec/Transport/ErrorCondition.cs [93:157]
public override bool Equals(object obj)
{
if (obj == this)
{
return true;
}
if (obj is not IDescribedType)
{
return false;
}
IDescribedType d = (IDescribedType)obj;
if (!(DESCRIPTOR_CODE.Equals(d.Descriptor) || DESCRIPTOR_SYMBOL.Equals(d.Descriptor)))
{
return false;
}
if (d is ErrorCondition error)
{
bool equal = true;
if (!EqualityComparer<Symbol>.Default.Equals(Condition, error.Condition))
{
equal = false;
}
if (equal && Description != error.Description)
{
equal = false;
}
if (equal && Info != null && error.Info != null && Info.Count == error.Info.Count)
{
foreach (KeyValuePair<Symbol, object> pair in Info)
{
object value = error.Info[pair.Value];
if (!EqualityComparer<object>.Default.Equals(value, pair.Value))
{
equal = false;
break;
}
}
}
else
{
equal = equal && (Info == null && error.Info == null);
}
return equal;
}
else
{
object described = Described;
object described2 = d.Described;
if (described == null)
{
return described2 == null;
}
else
{
return described.Equals(described2);
}
}
}