public uint this[string key] { get { int num = base.BinarySearch(0, base.Count, null, new StringHandleComparer(key)); if (num < 0) { throw new KeyNotFoundException(); } return(base[num].Index); } set { int num = base.BinarySearch(0, base.Count, null, new StringHandleComparer(key)); if (num >= 0) { base[num].Index = value; } else { MemoryStream s = new MemoryStream(); BinaryStreamWrapper wrapper = new BinaryStreamWrapper(s, ByteOrder.BigEndian); wrapper.WriteString(key, StringType.ZeroDelimited); s.Position = 0L; base.Insert(~num, new VisualEffectName(0, base.handler, s, value)); } } }