public override bool Equals(object obj) { var em = obj as IEmotion; if (em == null) return false; if (CauseId != em.CauseId) return false; return new HashSet<string>(AppraisalVariables).SetEquals(em.AppraisalVariables); }