private void AddAction(S state, IAction <S, E, C> action, StateToActionsMap map)
        {
            var actions = (ActionCollection)null;

            if (!map.TryGetValue(state, out actions))
            {
                actions = new ActionCollection();
                map.Add(state, actions);
            }
            actions.Add(action);
        }