anchor.diff:  compile(who, {user, Username}) ->
       {user, bin(Username)};
   
  +compile(topic, {eq, Topic}) ->
  +    {eq, emqtt_topic:words(bin(Topic))};
   compile(topic, Topic) ->
  -    Words = emqtt_topic:words(Topic),
  +    Words = emqtt_topic:words(bin(Topic)),
       case 'pattern?'(Words) of
           true -> {pattern, Words};
           false -> Words
  
positive.code:     {A, all};
  
  compile({A, Who, Access, TopicFilters}) when (A =:= allow) orelse (A =:= deny) ->
      {A, compile(who, Who), Access, [compile(topic, bin(Topic)) || Topic <- TopicFilters]}.
  
  compile(who, all) -> 
      all;
  
negative.code:     false -> match_topics(Client, Topic, Filters)
      end.
  
  match_topic(Topic, {eq, TopicFilter}) ->
      Topic =:= TopicFilter;
  match_topic(Topic, TopicFilter) ->
      emqtt_topic:match(Topic, TopicFilter).
  
  