anchor.diff:  			ExpectedP = [case ?INLINE_LOWERCASE_BC(K) of
   				<<"charset">> -> {<<"charset">>, ?INLINE_LOWERCASE_BC(unquote(V))};
   				LowK -> {LowK, unquote(V)}
  -			end || {K, V} <- P],
  +			end || {K, V, _, _} <- P],
   			ResT =:= ?INLINE_LOWERCASE_BC(T)
   				andalso ResS =:= ?INLINE_LOWERCASE_BC(S)
   				andalso ResP =:= ExpectedP
  
positive.code: 
  media_range_type(<< $/, R/bits >>, Acc, T) -> media_range_subtype(R, Acc, T, <<>>);
  %% Special clause for badly behaving user agents that send * instead of */*.
  media_range_type(<< _, R/bits >>, Acc, <<"*">>) -> media_range_before_param(R, Acc, <<"*">>, <<"*">>, []);
  media_range_type(<< C, R/bits >>, Acc, T) when ?IS_TOKEN(C) ->
  	case C of
  		?INLINE_LOWERCASE(media_range_type, R, Acc, T)
  
negative.code: unquote([], Acc) -> Acc;
  unquote([[$\\, C]|Tail], Acc) -> unquote(Tail, << Acc/binary, C >>);
  unquote([C|Tail], Acc) -> unquote(Tail, << Acc/binary, C >>).
  
  parameter() ->
  	?SUCHTHAT({K, _, _, _},
  		{token(), oneof([token(), quoted_string()]), ows(), ows()},
  		K =/= <<"q">>).
  
  weight() ->
  	frequency([
  		{90, int(0, 1000)},
  		{10, undefined}
  	]).
  
  %% Helper function for weight's qvalue formatting.
  qvalue_to_iodata(0) -> <<"0">>;
  qvalue_to_iodata(Q) when Q < 10 -> [<<"0.00">>, integer_to_binary(Q)];
  qvalue_to_iodata(Q) when Q < 100 -> [<<"0.0">>, integer_to_binary(Q)];
  qvalue_to_iodata(Q) when Q < 1000 -> [<<"0.">>, integer_to_binary(Q)];
  qvalue_to_iodata(1000) -> <<"1">>.
  -endif.
  
  %% @doc Parse the Accept header.
  