public virtual bool Match (object obj) { // default action is the same as Equals. // Derived classes should override as appropriate return this.Equals (obj); }