anchor.diff:      {ok, Rest, [{?MATCH_ALL, Match}|Bindings]};
   bind_path(_, [], _) ->
       fail;
  -bind_path([{bind, {Token, MatchRe}}|RestToken],
  -        [Match|RestMatch],Bindings) ->
  -    case re:run(Match, MatchRe, [{capture, all, binary}]) of
  -        {match, [_, Match1]} ->
  -            bind_path(RestToken, RestMatch, [{{bind, Token}, Match1}|Bindings]);
  -        _ ->
  -            fail 
  -    end;
   bind_path([{bind, Token}|RestToken],[Match|RestMatch],Bindings) ->
       bind_path(RestToken, RestMatch, [{{bind, Token}, Match}|Bindings]);
   bind_path([Token|RestToken], [Token|RestMatch], Bindings) ->
  
positive.code: %% {"from": "/a",           /a?foo=b        /some/b             foo =:= b
  %% "to": "/some/:foo",
  %%  }}
  %% 
  %% {"from": "/a/<foo>"      /a/b            /some/b             foo =:= b
  %% "to": "/a/b",
  %% }}
  %%
  %% {"from": "/a/<foo>.blah"      /a/b            /some/b        foo =:= b
  %% "to": "/a/b",
  %% }}
  
  
  
  
  
negative.code:     path_to_list(R, [<<"..">>|Acc], DotDotCount+1);
  path_to_list([P|R], Acc, DotDotCount) ->
      P1 = case P of
          <<":", Var/binary>> ->
              to_binding(Var);
          _ -> P
      end,
      path_to_list(R, [P1|Acc], DotDotCount).
  