anchor.diff:                  _ -> false
               end
           end, Nodes)
  -    end, Apps),
  -    stop_applications(Config, Apps),
  -
  -    NodesWithCover /= [] andalso ct:pal("Gathering cover from nodes: ~s", [?FORMAT_ATOM_LIST(NodesWithCover)]),
  +    end, Apps).
  +
  +
  +-spec gather_cover([node()]) -> ok.
  +gather_cover([]) ->
  +    ok;
  +gather_cover(NodesWithCover) ->
  +    erlang:register(?CLEANING_PROC_NAME, self()),
  +
  +    ct:pal("Gathering cover from nodes: ~s", [?FORMAT_ATOM_LIST(NodesWithCover)]),
       lists:foreach(fun(Node) ->
           receive
               {app_ended, CoverNode, FileData} ->
  
positive.code:     Apps :: [{AppName :: atom(), ConfigName :: atom()}]) -> ok.
  clean_environment(Config, Apps) ->
      StopStatus = try
          maybe_gather_cover(Config, Apps)
      catch
          E1:E2:Stacktrace ->
              ct:pal("Environment cleanup failed - ~p:~p~n" ++
  
negative.code:     end.
  
  
  -spec finalize(Config :: list() | test_config:config()) -> ok.
  finalize(Config) ->
      finalize(Config, ?ALL_POSSIBLE_APPS).
  
  
  -spec finalize(Config :: list() | test_config:config(), 
      Apps :: [{AppName :: atom(), ConfigName :: atom()}]) -> ok.
  finalize(Config, Apps) ->
      NodesWithCover = get_nodes_with_cover(Config, Apps),
      stop_applications(Config, Apps),
      gather_cover(NodesWithCover).
  
  
  -spec get_nodes_with_cover(Config :: list() | test_config:config(), 
      Apps :: [{AppName :: atom(), ConfigName :: atom()}]) -> [node()].
  get_nodes_with_cover(Config, Apps) ->
      lists:flatmap(fun({AppName, ConfigName}) ->
          Nodes = test_config:get_custom(Config, ConfigName, []),
          lists:filter(fun(Node) ->
              case rpc:call(Node, application, get_env, [AppName, covered_dirs]) of
  