anchor.diff:  -spec parse(state(), binary()) -> [tag()].
   parse(State, Bin) ->
       case parse1(State, Bin, []) of
  -        {partial, _} -> error(?PARSE_ERROR);
  -        {_, Tags}    -> lists:reverse(Tags)
  +        {endtag, {_, OtherTag, _, _, _}} ->
  +            error({?PARSE_ERROR, {section_is_incorrect, <<"#", OtherTag/binary>>}});
  +        {_, 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()]) -> {state(), [tag()]} | partial().
  +-spec parse1(state(), Input :: binary(), Result :: [tag()]) -> {state(), [tag()]} | endtag().
   parse1(#state{start = Start, stop = Stop} = State, Bin, Result) ->
       case binary:split(Bin, Start) of
           []                       -> {State, Result};
  
positive.code: 
  %% @doc Part of the `parse/1'
  %%
  %% ATTENTION: The result is a list that is inverted.
  parse2(State, [B1, B2], Result) ->
      parse1(State, B2, [{'&', remove_space_from_edge(B1)} | Result]);
  parse2(_, _, _) ->
      error(?PARSE_ERROR).
  
  %% @doc Part of the `parse/1'
  %%
  %% ATTENTION: The result is a list that is inverted.
  parse3(State, [B1, B2], Result) ->
      case remove_space_from_head(B1) of
          <<"&", Tag/binary>> ->
  
negative.code: %% @see render/2
  %% @see compile/2
  
  -type endtag()    :: {endtag, {state(), EndTag :: binary(), LastTagSize :: non_neg_integer(), Rest :: binary(), Result :: [tag()]}}.
  
  %%----------------------------------------------------------------------------------------------------------------------
  %% Exported Functions
  