   init callback to return the proper supervision flags.
   """
   @callback init(init_arg :: term) ::
-              {:ok, {:supervisor.sup_flags(), [:supervisor.child_spec()]}}
+              {:ok,
+               {sup_flags(), [child_spec() | (old_erlang_child_spec :: :supervisor.child_spec())]}}
               | :ignore
 
   @typedoc "Return values of `start_link` functions"


  @typedoc "Option values used by the `start*` functions"
  @type option :: {:name, name}

  @typedoc "The supervisor reference"
  @type supervisor :: pid | name | {atom, node}

  process and exits not only on crashes but also if the parent process exits
  with `:normal` reason.
  """
  @spec start_link(
          [
            child_spec()
            | {module, term}
            | module
            | (old_erlang_child_spec :: :supervisor.child_spec())
          ],
          [option | init_option]
        ) :: {:ok, pid} | {:error, {:already_started, pid} | {:shutdown, term} | term}
  def start_link(children, options) when is_list(children) do
    {sup_opts, start_opts} = Keyword.split(options, [:strategy, :max_seconds, :max_restarts])
    start_link(Supervisor.Default, init(children, sup_opts), start_opts)
