anchor.diff:  
   %% @doc Runs a query against the lucene server
   -spec match(string(), pos_integer(), infinity | pos_integer()) -> {[doc()], metadata()} | '$end_of_table'.
  -match(Query, PageSize, Timeout) -> make_call({match, Query, PageSize}, Timeout).
  +match(Query, PageSize, Timeout) -> make_call({match, normalize_unicode(Query), PageSize}, Timeout).
   
   %% @equiv continue(PageToken, PageSize, infinity)
   -spec continue(page_token(), pos_integer()) -> {[string()], metadata()} | '$end_of_table'.
  
positive.code: 
  %% @doc Removes docs matching a certain query
  -spec del(string()) -> ok.
  del(Query) -> gen_server:cast(?LUCENE_SERVER, {del, Query}).
  
  %%-------------------------------------------------------------------
  %% GEN_SERVER API
  
negative.code:     {error, Error} -> throw(Error)
    end.
  
  normalize_unicode(String) ->
    case lists:dropwhile(fun(Char) -> Char =< 255 end, String) of
      [] -> String;
      _ -> binary_to_list(unicode:characters_to_binary(String))
    end.
  
  normalize(Doc) ->
    [{case Key of
        Key when is_atom(Key) -> Key;
        Key when is_list(Key) -> list_to_atom(normalize_unicode(Key));
        Key when is_binary(Key) -> binary_to_atom(Key, utf8)
      end, validate(Value)} || {Key, Value} <- Doc].
  
  