public override bool Equals()

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);
            }
         }
      }