private static NameValuePair ParseInternal( IDictionary <string, string> parsetable, string connectionString, IList <string> validKeywords) { StringBuilder buffer = new StringBuilder(); NameValuePair nameValuePair1 = (NameValuePair)null; NameValuePair nameValuePair2 = (NameValuePair)null; int num = 0; int length = connectionString.Length; while (num < length) { int currentPosition = num; string keyname; string keyvalue; num = DbConnectionOptions.GetKeyValuePair(connectionString, currentPosition, buffer, out keyname, out keyvalue); if (!string.IsNullOrEmpty(keyname)) { if (!validKeywords.Contains(keyname)) { throw new ArgumentException(Strings.ADP_KeywordNotSupported((object)keyname)); } parsetable[keyname] = keyvalue; if (nameValuePair1 != null) { nameValuePair1 = nameValuePair1.Next = new NameValuePair(); } else { nameValuePair2 = nameValuePair1 = new NameValuePair(); } } else { break; } } return(nameValuePair2); }