anchor.diff:      {A, all};
   
   compile({A, Who, Access, TopicFilters}) when (A =:= allow) orelse (A =:= deny) ->
  -    {A, compile(who, Who), Access, [compile(topic, bin(Topic)) || Topic <- TopicFilters]}.
  +    {A, compile(who, Who), Access, [compile(topic, Topic) || Topic <- TopicFilters]}.
   
   compile(who, all) -> 
       all;
  
positive.code: compile(who, {user, Username}) ->
      {user, bin(Username)};
  
  compile(topic, Topic) ->
      Words = emqtt_topic:words(Topic),
      case 'pattern?'(Words) of
          true -> {pattern, Words};
          false -> Words
  
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).
  
  