anchor.diff:      State2 = #state{i_state=I_State} = roll_log_forward(State),
       Reply = CallbackMod:do_pure_op(Op, I_State),
       {reply, Reply, State2};
  +handle_call({sync_checkpoint}, From,
  +            #state{proj=Proj0, cb_mod=CallbackMod, stream_num=StreamNum,
  +                   page_size=PageSize, i_state=I_State}=State)->
  +    CheckpointOps = CallbackMod:do_checkpoint(I_State),
  +    CheckpointBackPs = [],
  +    {_OpT, I_State2, Proj1, _LPN, NewBackPs} =
  +        CallbackMod:do_dirty_op(CheckpointOps, From, I_State, StreamNum,
  +                                Proj0, PageSize, CheckpointBackPs),
  +    %% TODO: Use this LPN so that we can tell the corfurl log GC
  +    %%       that we have created some dead bytes in the log.
  +    {reply, ok, State#state{i_state=I_State2,
  +                            proj=Proj1,
  +                            back_ps=NewBackPs}};
   handle_call({stop}, _From, State) ->
       {stop, normal, ok, State};
   handle_call(_Request, _From, State) ->
  
positive.code: stop(Pid) ->
      gen_server:call(Pid, {stop}, ?LONG_TIME).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  init([PageSize, SequencerPid, Proj, CallbackMod, StreamNum]) ->
  
negative.code: 
  handle_call({cb_dirty_op, Op}, From,
              #state{proj=Proj0, cb_mod=CallbackMod, stream_num=StreamNum,
                     page_size=PageSize, back_ps=BackPs, i_state=I_State}=State)->
      {AsyncType, I_State2, Proj1, LPN, NewBackPs} =
          CallbackMod:do_dirty_op(Op, From, I_State, StreamNum,
                                  Proj0, PageSize, BackPs),
  