anchor.diff:                 rets_client:put(localhost,tibbe)),
     ?assertEqual({200,"true"},
                  rets_client:post(localhost,tibbe,
  -                                [{aaa,"AAA"},{bbb,bBbB},{ccc,123.1},
  +                                [{'aaa/1/x',"AAA"},
  +                                 {bbb,bBbB},
  +                                 {ccc,123.1},
                                    {ddd,[{a,"A"},{b,b},{c,123.3}]}])),
     ?assertEqual({200,"AAA"},
  -               rets_client:get(localhost,tibbe,aaa)),
  +               rets_client:get(localhost,tibbe,'aaa/_/x')),
  +  ?assertEqual({200,"AAA"},
  +               rets_client:get(localhost,tibbe,'_/1/_')),
     ?assertEqual({200,bBbB},
                  rets_client:get(localhost,tibbe,bbb)),
     ?assertEqual({200,123.1},
  
positive.code:   catch _:_ -> ets:insert(Tab,{Key,1}),"1"
    end.
  
  unpack(KVs) ->
    {PL} = jd(KVs),
    [{K,je(V)} || {K,V} <- PL].
  
  jd(Term) ->
    jiffy:decode(Term).
  
  
negative.code: 
  reply(Req) ->
    case {method(Req),uri(Req),true_headers(Req)} of
      {"PUT",   [Tab]     ,[]}          -> je(gcall({create,Tab}));
      {"PUT",   [Tab|KeyL],[]}          -> je(ets({insert,Tab,KeyL,body(Req)}));
      {"PUT",   [Tab|KeyL],["counter"]} -> ets({counter,Tab,KeyL});
      {"PUT",   [Tab|KeyL],["reset"]}   -> ets({reset,Tab,KeyL});
      {"GET",   [[]]      ,[]}          -> je([l2b(T)||T<-gcall({all,[]})]);
      {"GET",   [Tab]     ,[]}          -> je(ets({keys,Tab}));
      {"GET",   [Tab|KeyL],[]}          -> ets({get,Tab,KeyL});
      {"POST",  [Tab]     ,[]}          -> je(ets({insert,Tab,body(Req)}));
      {"DELETE",[Tab]     ,[]}          -> je(gcall({delete,Tab}));
      {"DELETE",[Tab|KeyL],[]}          -> je(ets({delete,Tab,KeyL}));
      X                                 -> throw({404,X})
    end.
  