anchor.diff:              %% Only relink if necessary, given the SoName
               %% and list of new binaries
               lists:foreach(
  -              fun({SoName,Bins}) ->
  -                      AllBins = [sets:from_list(Bins), sets:from_list(NewBins)],
  -                      Intersection = sets:intersection(AllBins),
  -                      case needs_link(SoName, sets:to_list(Intersection)) of
  -                          true ->
  -                              rebar_utils:sh(
  -                                ?FMT("$CC ~s $LDFLAGS $DRV_LDFLAGS -o ~s",
  -                                     [string:join(Bins, " "), SoName]),
  -                                [{env, Env}]);
  -                          false ->
  -                              ?INFO("Skipping relink of ~s\n", [SoName]),
  -                              ok
  -                      end
  -              end, SoSpecs)
  +                    fun({SoName,Bins}) ->
  +                            AllBins = [sets:from_list(Bins),
  +                                       sets:from_list(NewBins)],
  +                            NewBins1 = sets:intersection(AllBins),
  +                            case needs_link(SoName, sets:to_list(NewBins1)) of
  +                                true ->
  +                                    Fmt = "$CC ~s $LDFLAGS $DRV_LDFLAGS -o ~s",
  +                                    Vars = [string:join(Bins, " "), SoName],
  +                                    rebar_utils:sh(?FMT(Fmt, Vars),
  +                                                   [{env, Env}]);
  +                                false ->
  +                                    ?INFO("Skipping relink of ~s\n", [SoName]),
  +                                    ok
  +                            end
  +                    end, SoSpecs)
       end.
   
   clean(Config, AppFile) ->
  
positive.code: %%
  apply_defaults(Vars, Defaults) ->
      dict:to_list(
          dict:merge(fun(Key, VarValue, DefaultValue) ->
                          case is_expandable(DefaultValue) of
                               true ->
                                   expand_env_variable(DefaultValue,
                                                       Key, VarValue);
                               false -> VarValue
                          end
                      end,
                      dict:from_list(Vars),
                      dict:from_list(Defaults))).
  %%
  %% Given a list of {Key, Value} environment variables, where Key may be defined
  %% multiple times, walk the list and expand each self-reference so that we
  
negative.code: %%
  expand_vars(Key, Value, Vars) ->
      lists:foldl(
              fun({AKey, AValue}, Acc) ->
                      NewValue = case AKey of
                                     Key ->
                                         AValue;
                                     _ ->
                                         expand_env_variable(AValue, Key, Value)
                                 end,
                      [{AKey, NewValue} | Acc]
              end,
              [], Vars).
  
  
  %%
  