class Hamster::Trie

def find_and_delete(key)

If empty, returns nil.
If not found, returns self.
Returns a replacement instance after removing the specified key.
def find_and_delete(key)
  index = index_for(key)
  entry = @entries[index]
  if entry && entry.key.eql?(key)
    return delete_at(index)
  else
    child = @children[index]
    if child
      copy = child.find_and_delete(key)
      unless copy.equal?(child)
        children = @children.dup
        children[index] = copy
        new_size = @size - (child.size - copy_size(copy))
        return self.class.new(@significant_bits, new_size, @entries, children)
      end
    end
  end
  self
end