anchor.diff:  
   -module(corfurl_client).
   
  --export([append_page/2]).
  -%% -export([append_page/2, read_page/2]).
  +-export([append_page/2, read_page/2, fill_page/2, trim_page/2]).
   -export([restart_sequencer/1]).
   
   -include("corfurl.hrl").
  
positive.code: %% -define(LONG_TIME, 30*1000).
  
  append_page(Proj, Page) ->
      append_page(Proj, Page, 50).
  
  append_page(Proj, _Page, 0) ->
      {error_failed, Proj};
  append_page(#proj{seq={Sequencer,_,_}} = Proj, Page, Retries) ->
      try
          case corfurl_sequencer:get(Sequencer, 1) of
  
negative.code:             %% Let it crash: error_unwritten
      end.
  
  read_page(Proj, LPN) ->
      retry_loop(Proj, fun(P) -> corfurl:read_page(P, LPN) end, 10).
  
  trim_page(Proj, LPN) ->
      retry_loop(Proj, fun(P) -> corfurl:trim_page(P, LPN) end, 10).
  
  fill_page(Proj, LPN) ->
      retry_loop(Proj, fun(P) -> corfurl:fill_page(P, LPN) end, 10).
  
  %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% 
  
  retry_loop(Proj, _Fun, 0) ->
      {{error_failed, ?MODULE, ?LINE}, Proj};
  retry_loop(Proj, Fun, Retries) ->
      case Fun(Proj) of
          error_badepoch ->
              case poll_for_new_epoch_projection(Proj) of
                  {ok, NewProj} ->
                      retry_loop(NewProj, Fun, Retries - 1);
                  _Else ->
                      {{error_failed, ?MODULE, ?LINE}, Proj}
              end;
          Else ->
              {Else, Proj}
      end.
  
  restart_sequencer(#proj{epoch=Epoch, dir=Dir} = P) ->
      case corfurl:latest_projection_epoch_number(Dir) of
  