anchor.diff:              case (is_op_in_snapshot(OpCommitTime, SnapshotTime, SnapshotCommitTime)
                     or (TxId == Op#clocksi_payload.txid)) of
                   true ->
  -                
  -                
  -                		case is_op_in_snapshot(OpCommitTime, SnapshotTime, SnapshotCommitTime) of
  -                		true -> lager:info("op is in snapshot");
  -                		false -> lager:info("op is NOT in snapshot")
  -                		end,
  -                		
  -                		case (TxId == Op#clocksi_payload.txid) of
  -                		true -> lager:info("tx id is the same");
  -                		false -> lager:info("tx id is NOT the same")
  -                		end,
  -                
  -                
                   	    case Op#clocksi_payload.op_param of
                           {merge, State} ->
                               NewSnapshot = Type:merge(Snapshot, State),
  
positive.code: is_op_in_snapshot(OperationCommitTime, SnapshotTime, SnapshotCommitTime) ->
  	{OpDc, OpCommitTime}= OperationCommitTime,
      {ok, Ts} = vectorclock:get_clock_of_dc(OpDc, SnapshotTime),
      
      lager:info("operation commit time = ~p", [OpCommitTime]),
      lager:info("snapshot commit time = ~p", [SnapshotCommitTime]),
      lager:info("snapshot time in the dc= ~p", [Ts]),
      
      case SnapshotCommitTime of
      ignore -> 
      	OpCommitTime =< Ts;
      {SnapshotDc, SnapshotCT} ->
      	case (SnapshotDc == OpDc) of
      	true ->
      	lager:info("same DC"),
  			(OpCommitTime =< Ts) and (SnapshotCT < OpCommitTime);
  		false ->
  		lager:info("diff DC"),
  			OpCommitTime =< Ts
  		end
  	end.
  
negative.code: %materialize(_Type, Snapshot, _SnapshotTime, []) ->
  %    {ok, Snapshot};
  materialize(Type, Snapshot, SnapshotCommitTime, SnapshotTime, Ops, TxId) ->
      case materialize(Type, Snapshot, SnapshotCommitTime, SnapshotTime, Ops, TxId, SnapshotCommitTime) of
      {ok, Val, CommitTime} ->
      	{ok, Val, CommitTime};
      {error, Reason} ->
  