anchor.diff:  
   -spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
   init(State) ->
  -    State1 = rebar_state:add_provider(State, providers:create([{name, ?PROVIDER},
  -                                                               {module, ?MODULE},
  -                                                               {bare, false},
  -                                                               {deps, ?DEPS},
  -                                                               {example, "rebar3 shell"},
  -                                                               {short_desc, "Run shell with project apps and deps in path."},
  -                                                               {desc, info()},
  -                                                               {opts, [{config, undefined, "config", string, "Path to the config file to use. Defaults to the sys_config defined for relx, if present."}]}])),
  +    State1 = rebar_state:add_provider(
  +            State,
  +            providers:create([
  +                {name, ?PROVIDER},
  +                {module, ?MODULE},
  +                {bare, false},
  +                {deps, ?DEPS},
  +                {example, "rebar3 shell"},
  +                {short_desc, "Run shell with project apps and deps in path."},
  +                {desc, info()},
  +                {opts, [{config, undefined, "config", string,
  +                         "Path to the config file to use. Defaults to the "
  +                         "sys_config defined for relx, if present."}]}
  +            ])
  +    ),
       {ok, State1}.
   
   -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
  
positive.code: %% immediately kill the script. ctrl-g, however, works fine
  
  shell(State) ->
      %% scan all processes for any with references to the old user and save them to
      %% update later
      NeedsUpdate = [Pid || Pid <- erlang:processes(),
  
negative.code:     %% disable the simple error_logger (which may have been added multiple
      %% times). removes at most the error_logger added by init and the
      %% error_logger added by the tty handler
      ok = remove_error_handler(3).
  
  setup_paths(State) ->
      %% Add deps to path
      code:add_pathsa(rebar_state:code_paths(State, all_deps)),
      %% add project app test paths
      ok = add_test_paths(State).
  
  reread_config(State) ->
      case find_config(State) of
          no_config ->
              ok;
          ConfigList ->
              _ = [application:set_env(Application, Key, Val)
                    || {Application, Items} <- ConfigList,
                       {Key, Val} <- Items],
              ok
      end.
  
  maybe_boot_apps(State) ->
      case rebar_state:get(State, shell_apps, undefined) of
          undefined ->
              ok;
          Apps ->
              ?WARN("The rebar3 shell is a development tool; to deploy "
                    "applications in production, consider using releases "
                    "(http://www.rebar3.org/v3.0/docs/releases)", []),
              Res = [application:ensure_all_started(App) || App <- Apps],
              _ = [?INFO("Booted ~p", [App])
                   || {ok, Booted} <- Res,
                      App <- Booted],
              _ = [?ERROR("Failed to boot ~p for reason ~p", [App, Reason])
                   || {error, {App, Reason}} <- Res],
              ok
      end.
  
  remove_error_handler(0) ->
      ?WARN("Unable to remove simple error_logger handler", []);
  