anchor.diff:  		fun if_match_exists/2, fun if_match_must_not_exist/2).
   
   if_match_exists(Req, State) ->
  +	State2 = State#state{exists=true},
   	case cowboy_req:parse_header(<<"if-match">>, Req) of
   		{ok, undefined, Req2} ->
  -			if_unmodified_since_exists(Req2, State);
  +			if_unmodified_since_exists(Req2, State2);
   		{ok, '*', Req2} ->
  -			if_unmodified_since_exists(Req2, State);
  +			if_unmodified_since_exists(Req2, State2);
   		{ok, ETagsList, Req2} ->
  -			if_match(Req2, State, ETagsList)
  +			if_match(Req2, State2, ETagsList)
   	end.
   
   if_match(Req, State, EtagsList) ->
  
positive.code: 			State2 = State#state{handler_state=HandlerState2},
  			Req3 = cowboy_req:set_resp_header(
  				<<"location">>, ResURL, Req2),
  			respond(Req3, State2, 303)
  	end.
  
  %% Whether we created a new resource, either through PUT or POST.
  %% This is easily testable because we would have set the Location
  %% header by this point if we did so.
  is_new_resource(Req, State) ->
  	case cowboy_req:has_resp_header(<<"location">>, Req) of
  		true -> respond(Req, State, 201);
  		false -> has_resp_body(Req, State)
  
negative.code: 	expect(Req, State, delete_completed, true, fun has_resp_body/2, 202).
  
  is_conflict(Req, State) ->
  	expect(Req, State, is_conflict, false, fun accept_resource/2, 409).
  
  %% content_types_accepted should return a list of media types and their
  %% associated callback functions in the same format as content_types_provided.
  