public void AddRange(CodeTypeParameterCollection value)
		{
			if (value == null)
			{
				throw new ArgumentNullException("value");
			}

			int count = value.Count;
			for (int i = 0; i < count; i++)
			{
				Add(value[i]);
			}
		}
		private void GenerateGenericsParameters(CodeTypeParameterCollection parameters)
		{
			int count = parameters.Count;
			if (count == 0)
			{
				return;
			}
			base.Output.Write('<');
			for (int i = 0; i < count - 1; i++)
			{
				base.Output.Write(parameters[i].Name);
				base.Output.Write(", ");
			}
			base.Output.Write(parameters[count - 1].Name);
			base.Output.Write('>');
		}
		private void GenerateGenericsConstraints(CodeTypeParameterCollection parameters)
		{
			int count = parameters.Count;
			if (count == 0)
			{
				return;
			}
			bool flag = false;
			for (int i = 0; i < count; i++)
			{
				CodeTypeParameter codeTypeParameter = parameters[i];
				bool flag2 = codeTypeParameter.Constraints.Count != 0;
				base.Output.WriteLine();
				if (flag2 || codeTypeParameter.HasConstructorConstraint)
				{
					if (!flag)
					{
						base.Indent++;
						flag = true;
					}
					base.Output.Write("where ");
					base.Output.Write(codeTypeParameter.Name);
					base.Output.Write(" : ");
					for (int j = 0; j < codeTypeParameter.Constraints.Count; j++)
					{
						if (j > 0)
						{
							base.Output.Write(", ");
						}
						this.OutputType(codeTypeParameter.Constraints[j]);
					}
					if (codeTypeParameter.HasConstructorConstraint)
					{
						if (flag2)
						{
							base.Output.Write(", ");
						}
						base.Output.Write("new");
						if (flag2)
						{
							base.Output.Write(" ");
						}
						base.Output.Write("()");
					}
				}
			}
			if (flag)
			{
				base.Indent--;
			}
		}
		public CodeTypeParameterCollection(CodeTypeParameterCollection value)
		{
			AddRange(value);
		}