   end
 
   defp do_split_with({ h, next } = extra, iterator, fun, acc, module) do
-    case fun.(h) do
-      x in [false, nil] ->
-        { List.reverse(acc), module.to_list(extra, iterator) }
-      _ ->
-        do_split_with(iterator.(next), iterator, fun, [h|acc], module)
+    if fun.(h) do
+      do_split_with(iterator.(next), iterator, fun, [h|acc], module)
+    else
+      { List.reverse(acc), module.to_list(extra, iterator) }
     end
   end
 

  ## all?

  defp do_all?([h|t], fun) do
    case fun.(h) do
      x in [false, nil] -> false
      _ -> do_all?(t, fun)
    end
  end


  ## find_value

  defp do_find_value([h|t], ifnone, fun) do
    fun.(h) || do_find_value(t, ifnone, fun)
  end

  defp do_find_value([], ifnone, _) do
