internal static int GetNameValueLength(string input, int startIndex, Func<NameValueHeaderValue> nameValueCreator, out NameValueHeaderValue parsedValue)
 {
     parsedValue = null;
     if (string.IsNullOrEmpty(input) || (startIndex >= input.Length))
     {
         return 0;
     }
     int tokenLength = HttpRuleParser.GetTokenLength(input, startIndex);
     if (tokenLength == 0)
     {
         return 0;
     }
     string str = input.Substring(startIndex, tokenLength);
     int num2 = startIndex + tokenLength;
     num2 += HttpRuleParser.GetWhitespaceLength(input, num2);
     if ((num2 == input.Length) || (input[num2] != '='))
     {
         parsedValue = nameValueCreator.Invoke();
         parsedValue.name = str;
         num2 += HttpRuleParser.GetWhitespaceLength(input, num2);
         return (num2 - startIndex);
     }
     num2++;
     num2 += HttpRuleParser.GetWhitespaceLength(input, num2);
     int valueLength = GetValueLength(input, num2);
     if (valueLength == 0)
     {
         return 0;
     }
     parsedValue = nameValueCreator.Invoke();
     parsedValue.name = str;
     parsedValue.value = input.Substring(num2, valueLength);
     num2 += valueLength;
     num2 += HttpRuleParser.GetWhitespaceLength(input, num2);
     return (num2 - startIndex);
 }
 /// <summary>Initializes a new instance of the <see cref="T:NMasters.Silverlight.Net.Http.Headers.NameValueHeaderValue" /> class.</summary>
 protected NameValueHeaderValue(NameValueHeaderValue source)
 {
     this.name = source.name;
     this.value = source.value;
 }
 internal static int GetNameValueLength(string input, int startIndex, out NameValueHeaderValue parsedValue)
 {
     return GetNameValueLength(input, startIndex, defaultNameValueCreator, out parsedValue);
 }
 /// <summary>Determines whether a string is valid <see cref="T:NMasters.Silverlight.Net.Http.Headers.NameValueHeaderValue" /> information.</summary>
 /// <returns>Returns <see cref="T:System.Boolean" />.true if <paramref name="input" /> is valid <see cref="T:NMasters.Silverlight.Net.Http.Headers.NameValueHeaderValue" /> information; otherwise, false.</returns>
 /// <param name="input">The string to validate.</param>
 /// <param name="parsedValue">The <see cref="T:NMasters.Silverlight.Net.Http.Headers.NameValueHeaderValue" /> version of the string.</param>
 public static bool TryParse(string input, out NameValueHeaderValue parsedValue)
 {
     object obj2;
     int index = 0;
     parsedValue = null;
     if (GenericHeaderParser.SingleValueNameValueParser.TryParseValue(input, null, ref index, out obj2))
     {
         parsedValue = (NameValueHeaderValue) obj2;
         return true;
     }
     return false;
 }
 private static bool TrySetTokenOnlyValue(NameValueHeaderValue nameValue, ref bool boolField)
 {
     if (nameValue.Value != null)
     {
         return false;
     }
     boolField = true;
     return true;
 }
 private static bool TrySetTimeSpan(NameValueHeaderValue nameValue, ref TimeSpan? timeSpan)
 {
     int num;
     if (nameValue.Value == null)
     {
         return false;
     }
     if (!HeaderUtilities.TryParseInt32(nameValue.Value, out num))
     {
         return false;
     }
     timeSpan = new TimeSpan(0, 0, num);
     return true;
 }
 private static bool TrySetOptionalTokenList(NameValueHeaderValue nameValue, ref bool boolField, ref ICollection<string> destination)
 {
     if (nameValue.Value == null)
     {
         boolField = true;
         return true;
     }
     string input = nameValue.Value;
     if (((input.Length >= 3) && (input[0] == '"')) && (input[input.Length - 1] == '"'))
     {
         int startIndex = 1;
         int num2 = input.Length - 1;
         bool separatorFound = false;
         int num3 = (destination == null) ? 0 : destination.Count;
         while (startIndex < num2)
         {
             startIndex = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(input, startIndex, true, out separatorFound);
             if (startIndex == num2)
             {
                 break;
             }
             int tokenLength = HttpRuleParser.GetTokenLength(input, startIndex);
             if (tokenLength == 0)
             {
                 return false;
             }
             if (destination == null)
             {
                 destination = new ObjectCollection<string>(checkIsValidToken);
             }
             destination.Add(input.Substring(startIndex, tokenLength));
             startIndex += tokenLength;
         }
         if ((destination != null) && (destination.Count > num3))
         {
             boolField = true;
             return true;
         }
     }
     return false;
 }