anchor.diff:  parse(State, Bin) ->
       case parse1(State, Bin, []) of
           {partial, _} -> error(?PARSE_ERROR);
  -        Tags         -> lists:reverse(Tags)
  +        {_, Tags}    -> lists:reverse(Tags)
       end.
   
   %% @doc Part of the `parse/1'
   %%
   %% ATTENTION: The result is a list that is inverted.
  --spec parse1(state(), Input :: binary(), Result :: [tag()]) -> [tag()] | partial().
  +-spec parse1(state(), Input :: binary(), Result :: [tag()]) -> {state(), [tag()]} | partial().
   parse1(#state{start = Start, stop = Stop} = State, Bin, Result) ->
       case binary:split(Bin, Start) of
  -        []                       -> Result;
  -        [B1]                     -> [B1 | Result];
  +        []                       -> {State, Result};
  +        [B1]                     -> {State, [B1 | Result]};
           [B1, <<"{", B2/binary>>] -> parse2(State, binary:split(B2, <<"}", Stop/binary>>), [B1 | Result]);
           [B1, B2]                 -> parse3(State, binary:split(B2, Stop),                 [B1 | Result])
       end.
  
positive.code: parse_file(Filename) ->
      case file:read_file(Filename) of
          {ok, Bin} -> new_impl(#state{dirname = filename:dirname(Filename)}, Bin);
          _         -> error(file_not_found, [Filename])
      end.
  
  %% @doc
  
negative.code: %%----------------------------------------------------------------------------------------------------------------------
  
  -define(PARSE_ERROR, incorrect_format).
  -define(FILE_ERROR, file_not_found).
  -define(COND(Cond, TValue, FValue),
          case Cond of true -> TValue; false -> FValue end).
  
  