anchor.diff:      Destruct = fun (Q) ->
                          case Q of
                              #not_q{sub_q = S} ->
  -                               {S#term_q.keyword,S#term_q.zone_ids};
  +                               {S#term_q.keyword, S#term_q.zone_ids};
                              #term_q{keyword = Keyword, zone_ids = ZoneIds} ->
                                  {Keyword, ZoneIds}
                          end
  
positive.code:                  zone_ids :: list(doko_doc:zone_id())}).
  
  %% Type definitions
  -type q() :: {and_q,  q(), q()} |
               {or_q,   q(), q()} |
               {not_q,  q()     } |
               {term_q, string(), list(string())}.
  
  %%----------------------------------------------------------------------------
  
negative.code:                         dict:fetch(any, Dict);
                      _ ->
                          gb_sets:union(
                            [element(2, X)
                             || X <- [dict:find(Y, Dict) || Y <- ZoneIds],
                                X /= error])
                  end
          end,
      DocIds =
  