anchor.diff:  -export([malformed_request/2]).
   -export([allowed_methods/2]).
   -export([forbidden/2]).
  +-export([options/2]).
   -export([resource_exists/2]).
   -export([generate_etag/2]).
   -export([content_types_provided/2]).
  
positive.code:     {false, Req0, State#state{path = Path, segments = Segments, mode = Mode}}.
  
  allowed_methods(Req, State) ->
      {[<<"GET">>, <<"PUT">>, <<"DELETE">>], Req, State}.
  
  forbidden(Req, #state{segments = Segments} = State) ->
      {Token, Req0} = cowboy_req:cookie(<<"token">>, Req),
  
negative.code:     end;
  resource_exists(Req, #state{segments = Segments, mode = expr} = State) ->
      Q = <<"select array_agg(hash),md5(array_to_string(array_agg(version::text), ' ')) from (select hash,version from objects where path @> hstore($1::text[]) order by path) o">>,
      {ok, _, [{Hashes0, ETag}]} = cloudstore_pg:equery(cloudstore_pool, Q, [segments_to_hprops(Segments)]),
      Hashes = case Hashes0 of
          null -> [];
          _ -> Hashes0
      end,
      {true, Req, State#state{hashes = Hashes, etag = ETag}}.
  
  generate_etag(Req, #state{etag = undefined} = State) ->
  