private void InternalRemoveMatchingAdornments(SnapshotSpan?visualSpan, Predicate <IAdornmentLayerElement> match) { List <AdornmentAndData> newVisuals = new List <AdornmentAndData>(_elements.Count); for (int i = 0; (i < _elements.Count); ++i) { AdornmentAndData data = _elements[i]; if ((!visualSpan.HasValue || data.OverlapsWith(visualSpan.Value)) && match(data)) { this.RemoveTranslatableVisual(data); } else { newVisuals.Add(data); } } _elements = newVisuals; }