anchor.diff:  	%% {Value, Result}
   	Tests = [
   		{<<"da, en-gb;q=0.8, en;q=0.7">>, [
  -			{{<<"da">>, []}, 1000},
  -			{{<<"en">>, [<<"gb">>]}, 800},
  -			{{<<"en">>, []}, 700}
  +			{<<"da">>, 1000},
  +			{<<"en-gb">>, 800},
  +			{<<"en">>, 700}
   		]},
   		{<<"en, en-US, en-cockney, i-cherokee, x-pig-latin">>, [
  -			{{<<"en">>, []}, 1000},
  -			{{<<"en">>, [<<"us">>]}, 1000},
  -			{{<<"en">>, [<<"cockney">>]}, 1000},
  -			{{<<"i">>, [<<"cherokee">>]}, 1000},
  -			{{<<"x">>, [<<"pig">>, <<"latin">>]}, 1000}
  +			{<<"en">>, 1000},
  +			{<<"en-us">>, 1000},
  +			{<<"en-cockney">>, 1000},
  +			{<<"i-cherokee">>, 1000},
  +			{<<"x-pig-latin">>, 1000}
   		]}
   	],
   	[{V, fun() -> R = nonempty_list(V, fun language_range/2) end}
  
positive.code: 			(<< $-, Rest/bits >>, SubTag) ->
  				language_subtag(Rest, Fun, Tag, [SubTag|Acc]);
  			(Rest, SubTag) ->
  				Fun(Rest, {Tag, lists:reverse([SubTag|Acc])})
  		end).
  
  -spec maybe_qparam(binary(), fun()) -> any().
  
negative.code: 			(<< $-, Rest/bits >>, Tag) ->
  				language_subtag(Rest, Fun, Tag, []);
  			(Rest, Tag) ->
  				Fun(Rest, Tag)
  		end).
  
  -spec language_subtag(binary(), fun(), binary(), [binary()]) -> any().
  