anchor.diff:          fun(CallbackAcc) ->
               {Callback, UserAcc} = get_callback_acc(CallbackAcc),
               UserAcc2 = start_sending_changes(Callback, UserAcc, Feed),
  -            {ok, {_, LastSeq, _Prepend, _, _, UserAcc3, _, _, _, _}} =
  +            {ok, #changes_acc{seq = LastSeq, user_acc = UserAcc3}} =
                   send_changes(
                       Args#changes_args{feed="normal"},
                       Callback,
  
positive.code: end_sending_changes(Callback, UserAcc, EndSeq, ResponseType) ->
      Callback({stop, EndSeq}, ResponseType, UserAcc).
  
  changes_enumerator(DocInfo, {Db, _, _, FilterFun, Callback, UserAcc,
      "continuous", Limit, IncludeDocs, Conflicts}) ->
  
      #doc_info{high_seq = Seq} = DocInfo,
      Results0 = FilterFun(DocInfo),
      Results = [Result || Result <- Results0, Result /= null],
      Go = if Limit =< 1 -> stop; true -> ok end,
      case Results of
      [] ->
          {Go, {Db, Seq, nil, FilterFun, Callback, UserAcc, "continuous", Limit,
                  IncludeDocs, Conflicts}
          };
      _ ->
          ChangesRow = changes_row(Db, Results, DocInfo, IncludeDocs, Conflicts),
          UserAcc2 = Callback({change, ChangesRow, <<>>}, "continuous", UserAcc),
          {Go, {Db, Seq, nil, FilterFun, Callback, UserAcc2, "continuous",
                  Limit - 1, IncludeDocs, Conflicts}
          }
      end;
  changes_enumerator(DocInfo, {Db, _, Prepend, FilterFun, Callback, UserAcc,
      ResponseType, Limit, IncludeDocs, Conflicts}) ->
  
      #doc_info{high_seq = Seq} = DocInfo,
      Results0 = FilterFun(DocInfo),
      Results = [Result || Result <- Results0, Result /= null],
      Go = if (Limit =< 1) andalso Results =/= [] -> stop; true -> ok end,
      case Results of
      [] ->
          {Go, {Db, Seq, Prepend, FilterFun, Callback, UserAcc, ResponseType,
                  Limit, IncludeDocs, Conflicts}
          };
      _ ->
          ChangesRow = changes_row(Db, Results, DocInfo, IncludeDocs, Conflicts),
          UserAcc2 = Callback({change, ChangesRow, Prepend}, ResponseType, UserAcc),
          {Go, {Db, Seq, <<",\n">>, FilterFun, Callback, UserAcc2, ResponseType,
                  Limit - 1, IncludeDocs, Conflicts}
          }
      end.
  
  
  changes_row(Db, Results, DocInfo, IncludeDoc, Conflicts) ->
      #doc_info{
          id = Id, high_seq = Seq, revs = [#rev_info{deleted = Del} | _]
      } = DocInfo,
      {[{<<"seq">>, Seq}, {<<"id">>, Id}, {<<"changes">>, Results}] ++
          deleted_item(Del) ++ case IncludeDoc of
              true ->
                  Options = if Conflicts -> [conflicts]; true -> [] end,
                  couch_httpd_view:doc_member(Db, DocInfo, Options);
  
negative.code: -include("couch_db.hrl").
  
  -export([handle_changes/3]).
  
  -record(changes_acc, {
      db,
      seq,
      prepend,
      filter,
      callback,
      user_acc,
      resp_type,
      limit,
      include_docs,
      conflicts
  }).
  
  %% @type Req -> #httpd{} | {json_req, JsonObj()}
  handle_changes(#changes_args{style=Style}=Args1, Req, Db) ->
  