anchor.diff:  		<<"ninenines.eu">>, <<"/path/ESSEN">>),
   	ok.
   
  +match_same_bindings_test() ->
  +	Dispatch = [{[same, same], [], [{'_', [], match, []}]}],
  +	{ok, _, [], [{same, <<"eu">>}], _, _} = match(Dispatch,
  +		<<"eu.eu">>, <<"/">>),
  +	{error, notfound, host} = match(Dispatch,
  +		<<"ninenines.eu">>, <<"/">>),
  +	Dispatch2 = [{[<<"eu">>, <<"ninenines">>, user], [],
  +		[{[<<"path">>, user], [], match, []}]}],
  +	{ok, _, [], [{user, <<"essen">>}], _, _} = match(Dispatch2,
  +		<<"essen.ninenines.eu">>, <<"/path/essen">>),
  +	{ok, _, [], [{user, <<"essen">>}], _, _} = match(Dispatch2,
  +		<<"essen.ninenines.eu">>, <<"/path/essen/">>),
  +	{error, notfound, path} = match(Dispatch2,
  +		<<"essen.ninenines.eu">>, <<"/path/notessen">>),
  +	Dispatch3 = [{'_', [], [{[same, same], [], match, []}]}],
  +	{ok, _, [], [{same, <<"path">>}], _, _} = match(Dispatch3,
  +		<<"ninenines.eu">>, <<"/path/path">>),
  +	{error, notfound, path} = match(Dispatch3,
  +		<<"ninenines.eu">>, <<"/path/to">>),
  +	ok.
  +
   -endif.
  
positive.code: 	{ok, Handler, Opts, Bindings, HostInfo, undefined};
  match_path([{PathMatch, Constraints, Handler, Opts}|Tail], HostInfo, Tokens,
  		Bindings) when is_list(Tokens) ->
  	case list_match(Tokens, PathMatch, []) of
  		false ->
  			match_path(Tail, HostInfo, Tokens, Bindings);
  		{true, PathBinds, PathInfo} ->
  			case check_constraints(Constraints, PathBinds) of
  				{ok, PathBinds2} ->
  					{ok, Handler, Opts, Bindings ++ PathBinds2,
  						HostInfo, PathInfo};
  				nomatch ->
  					match_path(Tail, HostInfo, Tokens, Bindings)
  			end
  
negative.code: %% Both values match, continue.
  list_match([E|Tail], [E|TailMatch], Binds) ->
  	list_match(Tail, TailMatch, Binds);
  %% Bind E to the variable name V and continue,
  %% unless V was already defined and E isn't identical to the previous value.
  list_match([E|Tail], [V|TailMatch], Binds) when is_atom(V) ->
  	case lists:keyfind(V, 1, Binds) of
  		{_, E} ->
  			list_match(Tail, TailMatch, Binds);
  		{_, _} ->
  			false;
  		false ->
  			list_match(Tail, TailMatch, [{V, E}|Binds])
  	end;
  %% Match complete.
  list_match([], [], Binds) ->
  	{true, Binds, undefined};
  