 defimpl Enumerable, for: HashSet do
   def reduce(set, acc, fun), do: HashSet.reduce(set, acc, fun)
   def member?(set, v),       do: HashSet.member?(set, v)
-  def member?(_set, _),      do: false
   def count(set),            do: HashSet.size(set)
 end
 

    case node_delete(root, depth, pos, member) do
      { _, value, 0 } ->
        { set, value, 0 }
      { root, value, -1 } ->
        { if depth > 0 and trie(set, :contract_on) == size do
          root = node_contract(root, depth)
          trie(set,

    set_intersect(set2, set1)
  end

  defp set_intersect(trie() = set1, set2) do
    set_fold set2, ordered(), fn m, acc ->
      if member?(set1, m) do
        put acc, m
