       if descLength > longestDesc
         longestDesc = descLength
         longestDescIndex = index
-    li.remove() while li = @ol.childNodes[items.length]
     @updateDescription(items[longestDescIndex])
+    @returnItemsToPool(items.length)
+
+  returnItemsToPool: (pivotIndex) ->
+    while li = @ol.childNodes[pivotIndex]
+      li.remove()
+      @nodePool.push(li)
+    return
 
   descriptionLength: (item) ->
     count = 0

class SuggestionListElement extends HTMLElement
  maxItems: 200
  emptySnippetGroupRegex: /(\$\{\d+\:\})|(\$\{\d+\})|(\$\d+)/ig

  createdCallback: ->
    @subscriptions = new CompositeDisposable
    @classList.add('popover-list', 'select-list', 'autocomplete-suggestion-list')
    @registerMouseHandling()
    @snippetParser = new SnippetParser

  attachedCallback: ->
    # TODO: Fix overlay decorator to in atom to apply class attribute correctly, then move this to overlay creation point.

  renderItem: ({iconHTML, type, snippet, text, displayText, className, replacementPrefix, leftLabel, leftLabelHTML, rightLabel, rightLabelHTML}, index) ->
    li = @ol.childNodes[index]
    unless li
      if @nodePool.length > 0
        li = @nodePool.pop()
      else
        li = document.createElement('li')
        li.innerHTML = ItemTemplate
      li.dataset.index = index
      @ol.appendChild(li)

