anchor.diff:               {next_state, ?ST_SUSPENDING, State}
                    when EventInfo::#event_info{},
                         State::#state{}).
  -suspending(#event_info{event = ?EVENT_RUN}, State) ->
  -    {next_state, ?ST_SUSPENDING, State#state{status = ?ST_SUSPENDING}};
  -
  -suspending(#event_info{event = ?EVENT_STATE}, State) ->
  -    {next_state, ?ST_SUSPENDING, State#state{status = ?ST_SUSPENDING}};
  -
   suspending(#event_info{event = ?EVENT_INCR},
              #state{id = Id,
                     publisher_id = PublisherId,
  
positive.code:     ok = leo_mq_api:update_consumer_stats(
             PublisherId, NextStatus, BatchOfMsgs, Interval),
      {next_state, NextStatus, State#state{status = ?ST_IDLING}};
  
  idling(#event_info{event = ?EVENT_INCR},
         #state{mq_properties = #mq_properties{regular_batch_of_msgs = BatchOfMsgs,
                                               regular_interval = Interval}} = State) ->
      NextStatus = ?ST_IDLING,
      {next_state, NextStatus, State#state{status = NextStatus,
                                           batch_of_msgs = BatchOfMsgs,
                                           interval = Interval}};
  
  idling(#event_info{event = ?EVENT_DECR},
         #state{mq_properties = MQProps,
                batch_of_msgs = BatchOfMsgs,
  
negative.code:                  when EventInfo::#event_info{},
                        From::{pid(), atom()},
                        State::#state{}).
  idling(#event_info{event = ?EVENT_STATE}, From, #state{status = Status} = State) ->
      gen_fsm:reply(From, {ok, Status}),
      {next_state, ?ST_IDLING, State#state{status = Status}};
  