anchor.diff:    logList(Stat,Index+1,T,Dict).
   
   -spec logLocal(dict(),term(),atom(),term()) -> ok.
  -%% @doc Funkcja dokonuje buforowanego zapisu do pliku lokalnej statystyki. W argumencie podany glowny slownik, klucz, nazwa statystyki i wartosc do wpisania.
  +%% @doc Dokonuje buforowanego zapisu do pliku lokalnej statystyki. W argumencie podany glowny slownik, klucz, nazwa statystyki i wartosc do wpisania.
   logLocal(Dictionary,Key,Statistic,Value) ->
     FDs = dict:fetch(Key,Dictionary),
     FD = dict:fetch(Statistic,FDs),
     file:write(FD,io_lib:fwrite("~p\n",[Value])).
   
   -spec logGlobal(dict(),atom(),term()) -> ok.
  -%% @doc Funkcja dokonuje buforowanego zapisu do pliku globalnej statystyki. W argumencie podany glowny slownik, nazwa statystyki i wartosc do wpisania.
  +%% @doc Dokonuje buforowanego zapisu do pliku globalnej statystyki. W argumencie podany glowny slownik, nazwa statystyki i wartosc do wpisania.
   logGlobal(Dictionary,Stat,Value) ->
     FD = dict:fetch(Stat,Dictionary),
     file:write(FD,io_lib:fwrite("~p\n",[Value])).
   
   -spec closeFiles(dict()) -> any().
  -%% @doc Funkcja zamykająca pliki podane w argumencie
  +%% @doc Zamyka pliki podane w argumencie
   closeFiles(Dict) ->
     [case X of
        {Id,FD} when is_atom(Id) -> file:close(FD);
        {_Id,D} -> [file:close(FD) || {_Stat,FD} <- dict:to_list(D)]
      end || X <- dict:to_list(Dict)].
  +
  +-spec addCounters(tuple(),tuple()) -> tuple().
  +addCounters({D1,F1,R1,M1},{D2,F2,R2,M2}) ->
  +  {D1+D2,F1+F2,R1+R2,M1+M2}.
   
   
   
  
positive.code:     {parallel,Pids} when is_list(Pids)->
        prepareParDictionary(Pids,dict:new(),Path)
    end,
    {ok, Dict}.
  
  handle_call(_Request, _From, State) ->
    {reply, ok, State}.
  
  handle_cast({parallel,Stat,Pid,Value}, Dict) ->
    logLocal(Dict,Pid,Stat,Value),
    {noreply, Dict};
  handle_cast({sequential,Stat,_Pid,Values}, Dict) ->
    logList(Stat,1,Values,Dict),
    {noreply, Dict};
  handle_cast({counter,{Deaths,Fights,Reproductions,Migrations}}, Dict) ->
    logGlobal(Dict,death,Deaths),
    logGlobal(Dict,fight,Fights),
    logGlobal(Dict,reproduction,Reproductions),
    logGlobal(Dict,migration,Migrations),
    {noreply, Dict};
  handle_cast(close, State) ->
    {stop, normal, State}.
  
  handle_info(_Info, State) ->
    {noreply, State}.
  
  terminate(_Reason, Dict) ->
    closeFiles(Dict).
  
  code_change(_OldVsn, State, _Extra) ->
    {ok, State}.
  
negative.code:   gen_server:start_link({local, ?MODULE}, ?MODULE, [Model,Path], []).
  
  -spec logLocalStats(sequential | parallel,atom(),term()) -> ok.
  %% @doc Loguje statystyki specyficzne dla danej wyspy (np. fitness, population).
  %% Pierwsza zmienna informuje o trybie zapisu: parallel dla modelu concurrent i hybrid, a sequential dla sekwencyjnych.
  logLocalStats(Mode,Stat,Value) ->
    gen_server:cast(whereis(?MODULE),{Mode,Stat,self(),Value}).
  
  -spec logGlobalStats(tuple()) -> ok.
  %% @doc Zapisuje globalne statystyki (deaths,fights etc.) do plikow.
  logGlobalStats(Counter) ->
    gen_server:cast(whereis(?MODULE),{counter,Counter}).
  
  