private static List<NameValue> DecodeQuery(Uri url)
{
var urlQuery = url.Query;
var query = urlQuery.StartsWith("?") || urlQuery.StartsWith("#") ? urlQuery.Substring(1) : urlQuery;
return query.Split(new[] { '&' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Split('='))
.Select(s => new NameValue(s[0], s[1]))
.ToList();
}