     ordered(bucket: new, size: size - count)
   end
 
-  defp set_difference(trie(size: size1) = set1, set2) do
+  defp set_difference(trie() = set1, set2) do
     set_fold set2, set1, fn m, acc ->
       delete(acc, m)
     end

    bucket_get(bucket, candidate)
  end

  defp bucket_get(_, member) do
    nil
  end


    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
