using System.Collections.Generic; namespace Jint.Runtime { internal sealed class OrderedSet { internal readonly List _list; private readonly HashSet _set; public OrderedSet() { _list = new List(); _set = new HashSet(); } public T this[int index] { get => _list[index]; set { if (_set.Add(value)) { _list[index] = value; } } } public void Add(T item) { if (_set.Add(item)) { _list.Add(item); } } public void Clear() { _list.Clear(); _set.Clear(); } public bool Contains(T item) => _set.Contains(item); public int Count => _list.Count; public bool Remove(T item) { _set.Remove(item); return _list.Remove(item); } } }