anchor.diff:      end.
   
   %% @doc Remove from OpsDict all operations that have committed before Threshold.
  --spec prune_ops(orddict:orddict(), commit_time())-> orddict:orddict().
  -prune_ops(OpsDict, Threshold)->
  +-spec prune_ops(orddict:orddict(), commit_time()) -> orddict:orddict().
  +prune_ops(OpsDict, Threshold) ->
       orddict:filter(fun(_Key, Value) ->
                              (belongs_to_snapshot(Threshold,(lists:last(Value))#clocksi_payload.snapshot_time)) end, OpsDict).
   
  
positive.code: 
  %% @doc This function takes care of reading. It is implemented here for not blocking the
  %% vnode when the write function calls it. That is done for garbage collection.
  -spec internal_read(pid() | ignore, key(), type(), snapshot_time(), txid() | ignore, ets:tid(), ets:tid()) -> {ok, snapshot()} | {error, no_snapshot}.
  internal_read(Sender, Key, Type, SnapshotTime, TxId, OpsCache, SnapshotCache) ->
      {SnapDict, LatestSnapshot, SnapshotCommitTime} = case ets:lookup(SnapshotCache, Key) of
          [] ->
  
negative.code: 
  %% @doc Operation to insert a snapshot in the cache and start
  %%      garbage collection triggered by reads.
  -spec snapshot_insert_gc(key(), orddict:orddict(), orddict:orddict(), cache_id(), cache_id()) -> true.
  snapshot_insert_gc(Key, SnapshotDict, OpsDict, SnapshotCache, OpsCache)->
      case (orddict:size(SnapshotDict))==?SNAPSHOT_THRESHOLD of
          true ->
  