anchor.diff:  %% no_deps means only project_apps's ebin path
   %% no_test means no test path
   %% OtherPath.
  -parse_refresh_paths(RefreshPaths0, RState) ->
  -    RefreshPaths1 =
  -    case lists:member(no_deps, RefreshPaths0) of
  -        true ->
  -            lists:usort([project_apps | lists:delete(all_deps, RefreshPaths0)]);
  -        false ->
  -            RefreshPaths0
  -    end,
  -    RefreshPaths =
  -    case lists:member(no_test, RefreshPaths1) of
  -        true ->
  -            lists:delete(test, RefreshPaths1);
  -        false ->
  -            RefreshPaths1
  -    end,
  -    parse_refresh_paths(RefreshPaths, RState, []).
   parse_refresh_paths([all_deps | RefreshPaths], RState, Acc) ->
       Paths = rebar_state:code_paths(RState, all_deps),
       parse_refresh_paths(RefreshPaths, RState, Paths ++ Acc);
  
positive.code: %% that makes sense.
  -spec refresh_paths(rebar_state:t()) -> ok.
  refresh_paths(RState) ->
      RefreshPaths = lists:usort(
          application:get_env(rebar, refresh_paths, [])
          ++ [all_deps, test]),
      ToRefresh = parse_refresh_paths(RefreshPaths, RState),
      %% Modules from apps we can't reload without breaking functionality
      Blacklist = lists:usort(
          application:get_env(rebar, refresh_paths_blacklist, [])
  
negative.code: %%      and does not match the on-disk beam file, returns false otherwise.
  is_changed(M) ->
      try
          module_vsn(M:module_info(attributes)) =/= module_vsn(code:get_object_code(M))
      catch _:_ ->
          false
      end.
  
  module_vsn({M, Beam, _Fn}) ->
      % Because the vsn can set by -vsn(X) in module.
      % So didn't use beam_lib:version/1 to get the vsn.
      % So if set -vsn(X) in module, it will always reload the module.
      {ok, {M, <<Vsn:128>>}} = beam_lib:md5(Beam),
      Vsn;
  module_vsn(Attrs) when is_list(Attrs) ->
      {_, Vsn} = lists:keyfind(vsn, 1, Attrs),
      Vsn.
  
  