using System; public interface ISequenced[T] { Equals (mutable that : ISequenced[T]) : bool; } public class SequencedHasher [S,W] where S : class, ISequenced[W] { public Equals (mutable i1 : S,mutable i2 : S) : bool { if ( i1 == null) i2 == null else i1.Equals (i2); } } public class Sequenced[T] : ISequenced[T] { public Equals (mutable _that : ISequenced[T]) : bool { false; } } class X { static Main () : void { mutable s = Sequenced (); mutable hasher = SequencedHasher (); assert (!hasher.Equals (s, s)); } } /* BEGIN-OUTPUT END-OUTPUT */