anchor.diff:                  current_buffer_size :: non_neg_integer(),
                   buffer_queue=queue:new(),
                   remainder_data :: binary(),
  +                free_writers :: ordsets:new(),
                   unacked_writes=ordsets:new()}).
   
   %%%===================================================================
  
positive.code: 
  %% when this new data
  %% is the last chunk
  not_full({augment_data, NewData}, _From, State=#state{content_length=CLength,
                                                        num_bytes_received=NumBytesReceived,
                                                        current_buffer_size=CurrentBufferSize,
                                                        max_buffer_size=MaxBufferSize}) ->
      case handle_chunk(CLength, NumBytesReceived, size(NewData), CurrentBufferSize, MaxBufferSize) of
          last_chunk ->
              %% handle_receiving_last_chunk(),
              Reply = ok,
  
negative.code: %% and we were already not full,
  %% we're still not full
  not_full({block_written, _BlockID, _WriterPid}, State) ->
      %% 1. Remove this block from the
      %%    unacked_writes set
      %% 2. Add this writer back to the
      %%    free_writers set
      %% 3. Maybe write another block
      {next_state, not_full, State}.
  
  full({block_written, _BlockID, _WriterPid}, State) ->
      %% 1. Remove this block from the
      %%    unacked_writes set
      %% 2. Add this writer back to the
      %%    free_writers set
      %% 3. Maybe write another block
      {next_state, not_full, State}.
  
  all_received({block_written, BlockID, _WriterPid},
                      State=#state{unacked_writes=UnackedWrites}) ->
      %% 1. Remove this block from the
      %%    unacked_writes set
      %% 2. Add this writer back to the
      %%    free_writers set
      %% 3. Maybe write another block
      NewUnackedSet = ordsets:del_element(BlockID, UnackedWrites),
      case ordsets:size(NewUnackedSet) of
          0 ->
  