anchor.diff:  
   -compile(export_all).
   
  --record(state, {map_id}).
  +-record(state, {url, props}).
   
   property_test_() -> {timeout, 60000, {setup, fun() ->
   			application:start(cowboy),
  
positive.code: 	true;
  
  postcondition(State, Call, Res) ->
  	%?debugFmt("State:  ~p\nCall:  ~p\nRes:  ~p", [State, Call, Res]),
  	false.
  
  assert_body(Json, Body) ->
  
negative.code: %% preconditions
  %% =======================================================
  
  precondition(#state{url = undefined}, {call, _, create_map, _}) ->
  	true;
  precondition(_S, {call, _, create_map, _}) ->
  	false;
  precondition(#state{url = undefined}, Blorp) ->
  	false.
  
  %% =======================================================
  %% next_state
  %% =======================================================
  
  next_state(State, Result, {call, _, create_map, _}) ->
  	State#state{
  		url = {call, ?MODULE, extract_location_header, [Result]},
  		props = {call, ?MODULE, decode_json_body, [Result]}
  	};
  
  next_state(State, _Result, {call, _, destroy_map, _}) ->
  	State#state{url = undefined};
  
  next_state(State, _Res, _Call) ->
  	State.
  
  extract_location_header({ok, _State, Headers, _Body}) ->
  	proplists:get_value("Location", Headers);
  
  extract_location_header(Res) ->
  	{call, proplists, get_value, ["Location",
  		{call, erlang, element, [3, Res]}
  	]}.
  
  decode_json_body({ok, _State, _Headers, Body}) ->
  	jsx:to_term(list_to_binary(Body)).
  
  %% =======================================================
  %% tests proper
  %% =======================================================
  
  create_map(Json, #state{url = undefined}) ->
  	Url = "http://localhost:9093/map",
  	Binary = jsx:to_json(Json),
  	ibrowse:send_req(Url, [?cookie, ?accepts, ?contenttype], put, Binary).
  
  destroy_map(#state{url = Url}) ->
  	ibrowse:send_req(Url, [?cookie, ?accepts], delete).
  
  update_map(Json, #state{url = Url}) ->
  	ibrowse:send_req(Url, [?cookie, ?accepts, ?contenttype], put, jsx:to_json(Json)).
  
  %% =======================================================
  %% postcondition
  %% =======================================================
  
  postcondition(State, {call, _, create_map, [Json, InState]}, {ok, "201", Heads, Body}) ->
  	?assertNotEqual(undefined, proplists:get_value("Location", Heads)),
  	?assert(assert_body(Json, Body)),
  	true;
  
  postcondition(State, {call, _, update_map, [Json, InState]}, {ok, "200", Heads, Body}) ->
  	assert_body(Json, Body);
  