   It should clean up the files the plugin created. The return value of this
   callback is ignored.
   """
-  @callback after_cleanup([String.t], Keyword.t)  :: any
+  @callback after_cleanup(Release.t, [String.t])  :: any
 
   @doc false
   defmacro __using__(_opts) do


  Should return a modified `%Release{}` or `nil`.
  """
  @callback before_assembly(Release.t, Keyword.t) :: Release.t | nil

  @doc """
  Called after assembling the release.

  Should return a modified `%Release{}` or `nil`.
  """
  @callback after_assembly(Release.t, Keyword.t)  :: Release.t | nil

  @doc """
  Called before packaging the release.

      defmodule MyApp.PluginDemo do
        use Mix.Releases.Plugin

        def before_assembly(%Release{} = release) do
          info "This is executed just prior to assembling the release"
          release # or nil
        end

        def after_assembly(%Release{} = release) do
          info "This is executed just after assembling, and just prior to packaging the release"
          release # or nil
        end

        def before_package(%Release{} = release) do
          info "This is executed just before packaging the release"
          release # or nil
        end

        def after_package(%Release{} = release) do
          info "This is executed just after packaging the release"
          release # or nil
        end

        def after_cleanup(%Release{} = release, _args) do
          info "This is executed just after running cleanup"
          :ok # It doesn't matter what we return here
        end
