anchor.diff:      p(Input, Index, comment,
         p_seq([p_string(";"),
                p_zero_or_more(p_charclass(<<"[^\n\r]">>)),
  -             fun eol/2])).
  +             p_choose([fun eol/2,
  +                       p_eof()])])).
   
   -spec ignorable(binary(), index()) -> intermediate_ast().
   ignorable(Input, Index) ->
  
positive.code: -spec intermediate_parse(string(), index()) -> intermediate_ast() | fail.
  intermediate_parse(Input, Index) when is_binary(Input) ->
      setup_memo(),
      Result = case value(Input, Index) of
                   {AST, [], _Index} -> AST;
                   Any -> Any
               end,
      release_memo(),
      Result.
  
  
negative.code:             end
      end.
  
  p_eof() ->
    fun(<<>>, Index) -> {eof, <<>>, Index};
       (_, Index) -> {fail, {expected, eof, Index}} end.
  
  p_advance_index(MatchedInput, Index)
    when is_list(MatchedInput) orelse is_binary(MatchedInput)->
      lists:foldl(fun p_advance_index/2,
  