anchor.diff:              ulist(T, [H | Acc])
       end.
   
  -plugin_modules(_Config, []) ->
  +plugin_modules(_Config, _SubdirAssoc, []) ->
       {ok, []};
  -plugin_modules(Config, Modules) ->
  +plugin_modules(Config, SubdirAssoc, Modules) ->
       FoundModules = [M || M <- Modules, code:which(M) =/= non_existing],
  -    plugin_modules(Config, FoundModules, Modules -- FoundModules).
  -
  -plugin_modules(_Config, FoundModules, []) ->
  +    plugin_modules(Config, SubdirAssoc, FoundModules, Modules -- FoundModules).
  +
  +plugin_modules(_Config, _SubdirAssoc, FoundModules, []) ->
       {ok, FoundModules};
  -plugin_modules(Config, FoundModules, MissingModules) ->
  -    {Loaded, NotLoaded} = load_plugin_modules(Config, MissingModules),
  +plugin_modules(Config, SubdirAssoc, FoundModules, MissingModules) ->
  +    {Loaded, NotLoaded} = load_plugin_modules(Config, SubdirAssoc, MissingModules),
       AllViablePlugins = FoundModules ++ Loaded,
       case NotLoaded =/= [] of
           true ->
  
positive.code:     FilterMissing = is_missing_plugin(Loaded),
      NotLoaded = [V || V <- Modules, FilterMissing(V)],
      {Loaded, NotLoaded}.
  
  is_missing_plugin(Loaded) ->
      fun(Mod) -> not lists:member(Mod, Loaded) end.
  
negative.code:     end,
      {ok, AllViablePlugins}.
  
  load_plugin_modules(Config, SubdirAssoc, Modules) ->
      Cwd = rebar_utils:get_cwd(),
      PluginDir = case rebar_config:get_local(Config, plugin_dir, undefined) of
                      undefined ->
                          filename:join(Cwd, "plugins");
                      Dir ->
                          Dir
                  end,
  