anchor.diff:  %%% @end
   %%%-------------------------------------------------------------------
   -module(ggt).
  --export([start/6, receive_loop/7]).
  +-export([start/6, start_ggt_process/1]).
   
   -spec log(map(), list()) -> atom().
   log(Config, Message) ->
  
positive.code: 
  %% Starts the ggT Process and registers at the coordinator, nameservice and locally at the node
  start(WorkingTime, TerminationTime, Quota, GgTName, Coordinator, NameService) ->
    Config = #{ggtname => GgTName},
    spawn(?MODULE, receive_loop, [WorkingTime, TerminationTime, Quota, GgTName, NameService, Coordinator, Config]).
  
negative.code:   werkzeug:logging(Logfile, lists:concat(FullMessage)),
    Logfile.
  
  start_ggt_process(Config) ->
    GgTName = maps:get(ggtname, Config),
    Coordinator = maps:get(coordinator, Config),
    WorkingTime = maps:get(workingtime, Config),
    TermTime = maps:get(termtime, Config),
    Quota = maps:get(quota, Config),
    log(Config, [atom_to_list(GgTName), " starttime: ", werkzeug:timeMilliSecond(), " with PID ", pid_to_list(self()), " on ", atom_to_list(node())]),
    register(GgTName, self()),
    log(Config, ["registered locally"]),
    maps:get(nameservice, Config) ! {self(), {rebind, GgTName, node()}},
    receive
      ok -> log(Config, ["registered at nameservice"])
    end,
    Coordinator ! {hello, GgTName},
    log(Config, ["registered at coordinator"]),
    receive_loop(WorkingTime, TermTime, Quota, GgTName, Coordinator, 0, undefined, undefined, -1).
  
  receive_loop(WorkingTime, TerminationTime, Quota, GGTName, Koordinator, V, L, R, Mi) ->
    receive
  