anchor.diff:  -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,
  +    Result = value(Input, Index),
       release_memo(),
       Result.
   
  
positive.code:               {char, hd(binary_to_list(Char)), Idx}
        end).
  
  -spec int_part(binary(), index()) -> intermediate_ast().
  int_part(Input, Index) ->
      p(Input, Index, int_part,
  
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,
  