public static bool MatchAspectToRefinement(IAspectsDictionary aspects, string refinement)
        {
            var parts = refinement.Split('~');

            if (parts.Length == 1)
            {
                return(aspects.ContainsKey(refinement));
            }
            return(aspects.ContainsKey(parts[0]) && aspects[parts[0]] >= int.Parse(parts[1]));
        }
        string AspectsToString(IAspectsDictionary aspects)
        {
            var builder = new StringBuilder();

            foreach (var aspect in aspects)
            {
                builder.AppendFormat("{0}({1}), ", aspect.Key, aspect.Value);
            }

            var str = builder.ToString();

            if (str.Length == 0)
            {
                return("");
            }
            return(str.Substring(0, str.Length - 2));
        }