public CodeTryCatchFinallyStatement(CodeStatement[] tryStatements,
						     CodeCatchClause[] catchClauses,
						     CodeStatement[] finallyStatements)
		{
			TryStatements.AddRange(tryStatements);
			CatchClauses.AddRange(catchClauses);
			FinallyStatements.AddRange(finallyStatements);
		}
		public CodeConditionStatement(CodeExpression condition,
					       CodeStatement[] trueStatements,
					       CodeStatement[] falseStatements)
		{
			this.condition = condition;
			this.TrueStatements.AddRange(trueStatements);
			this.FalseStatements.AddRange(falseStatements);
		}
		public CodeIterationStatement(CodeStatement initStatement, 
					       CodeExpression testExpression,
					       CodeStatement incrementStatement,
					       params CodeStatement[] statements)
		{
			this.initStatement = initStatement;
			this.testExpression = testExpression;
			this.incrementStatement = incrementStatement;
			this.Statements.AddRange(statements);
		}
		public void AddRange(CodeStatement[] value)
		{
			if (value == null)
			{
				throw new ArgumentNullException("value");
			}

			for (int i = 0; i < value.Length; i++)
			{
				Add(value[i]);
			}
		}
		public CodeLabeledStatement(string label, CodeStatement statement)
		{
			this.label = label;
			this.statement = statement;
		}
		//
		// Methods
		//
		public int Add(CodeStatement value)
		{
			return List.Add(value);
		}
		public CodeStatementCollection(CodeStatement[] value)
		{
			AddRange(value);
		}
		public void Remove(CodeStatement value)
		{
			List.Remove(value);
		}
		public void Insert(int index, CodeStatement value)
		{
			List.Insert(index, value);
		}
		public int IndexOf(CodeStatement value)
		{
			return List.IndexOf(value);
		}
		public void CopyTo(CodeStatement[] array, int index)
		{
			List.CopyTo(array, index);
		}
		public bool Contains(CodeStatement value)
		{
			return List.Contains(value);
		}