anchor.diff:      ok.
   
   tokenize_header_value_test() ->
  -    ?assertEqual(["a quote in a \\\"quote\\\"."],
  +    ?assertEqual(["a quote in a \"quote\"."],
                    tokenize_header_value("\"a quote in a \\\"quote\\\".\"")),
       ?assertEqual(["abc"], tokenize_header_value("abc")),
       ?assertEqual(["abc", "def"], tokenize_header_value("abc def")),
  
positive.code: 
  %% Internal API
  
  -define(QUOTED_STRING_RE, "^\"([^\"\\\\]*?(\\\\.[^\"\\\\]*)*)\"").
  -define(VALUE_RE, "^([^\s,\"]+)").
  
  tokenize_header_value(undefined, _) ->
      undefined;
  tokenize_header_value([], Tokens) ->
      Tokens;
  tokenize_header_value([H|Rest], Tokens) when H =:= $\s orelse H =:= $, ->
      tokenize_header_value(Rest, Tokens);
  tokenize_header_value(V, Tokens) ->
      QsMatches = re:run(V, ?QUOTED_STRING_RE),
      case QsMatches of
          {match, [{WholeStart, WholeLength}, {QSStart, QSLength} | _]} ->
              Rest = string:substr(V, WholeStart + WholeLength + 1),
              Token = string:substr(V, QSStart + 1, QSLength),
              tokenize_header_value(Rest, Tokens ++ [Token]);
          _NoMatchedQs ->
              ValueMatches = re:run(V, ?VALUE_RE),
              case ValueMatches of
                  {match, [{WholeStart, WholeLength}, {VStart, VLength}]} ->
                      Rest = string:substr(V, WholeStart + WholeLength + 1),
                      Token = string:substr(V, VStart + 1, VLength),
                      tokenize_header_value(Rest, Tokens ++ [Token]);
                  _ ->
                      undefined
              end
      end.
  
  tokenize_header_value(V) ->
      tokenize_header_value(V, []).
  
  expand({array, L}) ->
      mochiweb_util:join(lists:reverse(L), ", ");
  
negative.code: -export([default/3, enter_from_list/2, default_from_list/2]).
  -export([to_list/1, make/1]).
  -export([from_binary/1]).
  
  -compile(export_all).
  
  %% @type headers().
  %% @type key() = atom() | binary() | string().
  