anchor.diff:  -define(SNAPSHOT_THRESHOLD, 10).
   -define(SNAPSHOT_MIN, 3).
   -define(OPS_THRESHOLD, 50).
  +-define(FIRST_OP, 4).
   
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
  
positive.code: 					[] ->
  					    {0, 0, []};
  					[Tuple] ->
  					    [Key,Length1,OpId1|Ops] = tuple_to_list(Tuple),
  					    {Length1, OpId1, sub_reverse(Ops,Length1,[])}
  				    end,
              {NewLength,PrunedOps}=prune_ops({Length,OpsDict}, CommitTime),
              ets:insert(SnapshotCache, {Key, PrunedSnapshots}),
              true = ets:insert(OpsCache, list_to_tuple([Key,NewLength,OpId|lists:reverse(PrunedOps) ++ lists:seq(NewLength+1,?OPS_THRESHOLD)]));
          false ->
              true = ets:insert(SnapshotCache, {Key, SnapshotDict})
      end.
  
negative.code: 		    [] ->
  			{0, [], LatestSnapshot1,SnapshotCommitTime1,IsFirst1};
  		    [Tuple] ->
  			{Key,Length1,_OpId,AllOps} = tuple_to_key(Tuple),
  			{Length1, AllOps, LatestSnapshot1, SnapshotCommitTime1, IsFirst1}
  		end
  	end,
      case Length of
  