 
   Can return values to be merged into the context, to set up the state for
   tests. For more details, see the "Context" section shown above.
+
+  `setup/1` callbacks are executed in the same process as the test process.
 
   ## Examples
 

        # Same as above, but receives the context as argument
        setup context do
          IO.puts("Setting up: #{context.test}")
          
          # We can simply return :ok when we don't want add any extra metadata
          :ok
        end

  However, `on_exit/2` may also be called dynamically, where a
  reference can be used to guarantee the callback will be invoked
  only once.

  `on_exit/2` gets executed in a blocking fashion after a test
  exits and **before** running the next test. This means that no
  other test from the same test case will be running while the
  `on_exit/2` callback for a previous test is running.

  `on_exit/2` is executed in a different process than the test
  process.

  ## Examples

      setup do
        File.write!("fixture.json", "{}")
        on_exit(fn -> File.rm!("fixture.json") end)
      end

  """
  @spec on_exit(term, (() -> term)) :: :ok
  def on_exit(name_or_ref \\ make_ref(), callback) when is_function(callback, 0) do
