public override bool Equals(object obj)
        {
            var e = obj as Essence;

            if (e != null)
            {
                if (EssenceItems.Count != e.EssenceItems.Count)
                {
                    return(false);
                }

                return(EssenceItems.SequenceEqual(e.EssenceItems));
            }
            return(base.Equals(obj));
        }
 public override int GetHashCode()
 {
     return(EssenceItems.Aggregate(0, (h, ei) => h ^ ei.GetHashCode()));
 }
 public override string ToString()
 {
     return(EssenceItems.Select(ei => ei.ToString()).JoinBy("; "));
 }