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); }