anchor.diff:  %%------------------------------------------------------------------------------
   -spec publish(From :: mqtt_clientid() | atom(), Msg :: mqtt_message()) -> ok.
   publish(From, #mqtt_message{topic=Topic} = Msg) ->
  -    lager:info([{client, From}, {topic, Topic}], "~s PUBLISH to ~s", [From, Topic]),
  +    trace(publish, From, Msg),
       %% Retain message first. Don't create retained topic.
       case emqttd_msg_store:retain(Msg) of
           ok ->
  
positive.code: setstats(dropped, true) ->
      emqttd_metrics:inc('messages/dropped').
  
  
negative.code:             publish(From, Topic, Msg)
       end.
  
  publish(From, <<"$Q/", _/binary>> = Queue, #mqtt_message{qos = Qos} = Msg) ->
      lists:foreach(
          fun(#mqtt_queue{subpid = SubPid, qos = SubQos}) -> 
              Msg1 = if
  