anchor.diff:  %% ====================================================================
   init([]) ->
     ets:new(?CALLBACKS_TABLE, [named_table, set]),
  +  ets:new(?MODULE_LIFECYCLE_LISTENERS_ETS, [named_table, set]),
  +
     process_flag(trap_exit, true),
     {ok, Interval} = application:get_env(?APP_Name, initialization_time),
     Pid = self(),
  
positive.code:       State
    end.
  
  %% init_cluster_nodes_dominance/6
  %% ====================================================================
  %% @doc Chooses node for workers when there are more nodes than workers.
  
negative.code:   NewState :: term().
  %% ====================================================================
  init_cluster(State) ->
    ?info("Checking if initialization is needed ~p", [State]),
    ?info("Nodes ~p, ~n Workers ~p", [State#cm_state.nodes, State#cm_state.workers]),
    Nodes = State#cm_state.nodes,
    case length(Nodes) > 0 of
      true ->
        JobsAndArgs = ?Modules_With_Args,
  
        %% Every node is supposed to have a complete set of permament workes.
        CreatePermamentWorkersList = fun({Worker, Module, _Child}, Workers) ->
          case lists:member(Module, ?PERMAMENT_MODULES) of
            true -> [{Worker, Module}, Workers];
            _ -> Workers
          end
        end,
        PermamentWorkers = lists:foldl(CreatePermamentWorkersList, [], State#cm_state.workers),
        RequiredPermamentWorkers = [{Node, Module, Args} || Node <- Nodes, Module <- ?PERMAMENT_MODULES,
                                   {Module2, Args} <- ?Modules_With_Args,
                                   not lists:member({Node, Module}, PermamentWorkers),
                                   Module =:= Module2],
  
        ?info("Permament nodes to create ~p", [RequiredPermamentWorkers]),
        NewStatePermament = init_permament_nodes(RequiredPermamentWorkers, State),
  
        NewStatePermament2 = update_dispatchers_and_dns(NewStatePermament, true, true),
        ?info("New state ~p", [NewStatePermament2]),
  
        CreateRunningWorkersList = fun({_N, M, _Child}, Workers) ->
          [M | Workers]
        end,
        Workers = NewStatePermament2 #cm_state.workers,
        RunningWorkers = lists:foldl(CreateRunningWorkersList, [], Workers),
  
        CreateJobsList = fun({Job, A}, {TmpJobs, TmpArgs}) ->
  