public override bool Equals(object other) => Equality.Untyped <PartialEqF <T1, T2, U> >( this, other, x => x as PartialEqF <T1, T2, U>, x => x.hashCode, x => x.f, x => x.arg1);
public override bool Equals(object other) => Equality.Untyped <PureImmutableEnumeratorElement <U> >( this, other, x => x as PureImmutableEnumeratorElement <U>, x => x.hashCode, // Two immutable enumerators are equal if and only if // they have the same (immutable) state and use the same // generator lambda. x => x.element, x => x.rest);
public override bool Equals(object other) => Equality.Untyped <ImmutableEnumerator <U> >( this, other, x => x as ImmutableEnumerator <U>, x => x.hashCode, // Two immutable enumerators are equal if and only if // they are at the same position and use the same // underlying enumerable. In that case they are guaranteed // to behave identically to an outside observer (except for // side-effects caused by the iteration of the underlying // enumerator, which only occur on the first .MoveNext() // call, if it is called on several equal immutable // enumerators). This is also true for the // ImmutableEnumeratorElement subclass, because if two of // these have the same underlying generator, their current // field are necessarily one and the same. (x, y) => Object.ReferenceEquals(x.next, y.next));
public override bool Equals(object other) => Equality.Untyped <Unit>(this, other, x => x as Unit, x => x.hashCode);