     @walk_ @root_, toCodePoints(key), (node) ->
       prefix += fromCodePoint node.c
       callback prefix, node.v if node.v?
-    return @
+    return this
 
   keysWithinHammingDistance: (query, distance) ->
     items = []

      return if Math.abs(a.length - b.length) > distance
      callback key, node.v if calcDamerauLevenshteinDistance(a, b) <= distance
      return
    return @

  traverse: (callback) -> @traverse_ @root_, callback

  traverse_: (root = @root_, callback) ->
    t = @traversal_ root
    callback r.value.key, r.value.value while !(r = t.next()).done
    return @

  traversal: -> @traversal_ @root_


      throw new Error('unknown errors')
    return

  size: -> @size_

  keys: ->
    items = []
    @traverse_ @root_, (key) -> items.push key
    return items
