anchor.diff:              {Bin, <<>>}
       end.
   
  --spec accumulator() -> fun((callback_message(), [row()]) -> [row()]).
  +-spec accumulator() -> CallBack when
  +      CallBack :: fun((Input, RevRows) -> Rows),
  +      Input :: callback_message(),
  +      RevRows :: rows(),
  +      Rows :: rows().
   accumulator() -> fun acc/2.
   
  --spec write_lines([line()]) -> iolist().
  +-spec write_lines(Lines) -> Result when
  +      Lines :: [line()],
  +      Result :: iolist().
   write_lines(L) ->
       ecsv_nif:write_lines(L).
   
  --spec write(line()) -> iolist().
  +-spec write(Line) -> Result when
  +      Line :: line(),
  +      Result :: iolist().
   write(L) ->
       ecsv_nif:write(L).
   
  
positive.code:             end
      end.
  
  -spec block_chopper(BlockSize :: pos_integer()) -> reader_fun(binary()).
  block_chopper(BlockSize) when is_integer(BlockSize), BlockSize > 0 ->
      fun(<<>>) ->
              {eof, <<>>};
  
negative.code:                       true           -> State
                    end).
  
  -spec parse_raw(Input, State0, Acc) -> Result when
        Input :: input(),
        State0 :: state(),
        Acc :: rows(),
        Result :: {ok, RevRows, State},
        RevRows :: rows(),
        State :: state().
  parse_raw(eof, State, Acc) -> ecsv_nif:parse(eof, State, Acc);
  parse_raw(<<Bin:(?BLOCK_SIZE)/bytes, Rest/bytes>>, State, Acc) ->
      {ok, Acc2, S2} = ecsv_nif:parse(Bin, State, Acc),
  