/// <summary> /// Remove the instruments. /// </summary> /// <param name="securities">The instruments.</param> public void RemoveRange(IEnumerable <Security> securities) { if (securities == null) { throw new ArgumentNullException(nameof(securities)); } securities = securities.ToArray(); lock (_sync) { if (securities.Count() > 1000 || (_allSecurities.Count > 1000 && securities.Count() > _allSecurities.Count * 0.1)) { _allSecurities.RemoveRange(securities); securities = _allSecurities.ToArray(); _allSecurities.Clear(); _trie.Clear(); securities.ForEach(Add); } else { _trie.RemoveRange(securities); _allSecurities.RemoveRange(securities); } } }