public override bool Equals(object obj) { var t = obj as TaggedType; return (t != null) && (Type == t.Type && TagValue == t.TagValue); }