public SValue Set(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                return(SValue.None);
            }
            int    hash = path.GetHashCode();
            int    index;
            SValue qualities = SValue.None;
            bool   exists    = indexOf.TryGetValue(hash, out index);

            if (exists)
            {
                qualities   = list[index];
                list[index] = SValue.None;
            }
            if (!qualities.IsHash)
            {
                qualities            = SValue.NewHash();
                qualities[HashField] = SValue.NewInt(hash);
            }
            indexOf[hash] = list.Count;
            list.Add(qualities);
            if (list.Count > maxCount + gap)
            {
                Normalize();
            }
            return(qualities);
        }