 
   toString: -> "CollisionNode(#{@bucket.join(", ")})"
 
-  #TODO -- implement getEntry()
-
-#TODO -- continue from here...
+  getEntry: (key) -> _.detect @bucket, (pair) -> equal(pair[0], key))
+
 
 # A sparse interior node using a bitmap to indicate which of the
 # indices 0..31 are in use.

    i = util.mask(hash, shift)
    @table[i]? && @table[i].get(shift + 5, hash, key)

  with: (shift, hash, key) ->
    i = util.mask(hash, shift)

    if @table[i]?
      node = @table[i].with(shift + 5, hash, key)
      newSize = @size + node.size - @table[i].size
      new ArrayNode(@table, i, node, newSize)
    else
      new ArrayNode(@table, i, new LeafNode(hash, key), @size + 1)

  without: (shift, hash, key) ->
    i = util.mask(hash, shift)

        new ArrayNode(table, util.mask(hash, shift), newNode, @size + 1)
    else
      v = @array[i]
      node = v.with(shift + 5, hash, key, value)
      newSize = @size + node.size - v.size
      new BitmapIndexedNode(@bitmap, util.arrayWith(@array, i, node), newSize)

  without: (shift, hash, key) ->
    [bit, i] = util.bitPosAndIndex(@bitmap, hash, shift)
