public static Cookie ToCookie(string headerValue) { if (headerValue.IsEmpty()) { return(null); } var cookie = new Cookie(); var segments = headerValue.TrimEnd().TrimEnd(';').Split(';').Select(x => new Segment(x.Trim())); segments.Each(segment => { string canonicalKey = segment.Key.ToLowerInvariant(); if (_setters.Has(canonicalKey)) { _setters[canonicalKey](cookie, segment.Value); } else { var state = CookieState.For(segment); cookie.Add(state); } }); return(cookie); }