private void AddCommandInitStatements(IList statements, CodeExpression commandExpression, DbSourceCommand command, DbProviderFactory currentFactory, bool isFunctionsDataComponent)
        {
            if (((statements == null) || (commandExpression == null)) || (command == null))
            {
                throw new InternalException("Argument should not be null.");
            }
            Type           parameterType     = currentFactory.CreateParameter().GetType();
            Type           type              = currentFactory.CreateCommand().GetType();
            CodeExpression parameterVariable = null;

            statements.Add(CodeGenHelper.Assign(commandExpression, CodeGenHelper.New(CodeGenHelper.GlobalType(type), new CodeExpression[0])));
            if (isFunctionsDataComponent)
            {
                commandExpression = CodeGenHelper.Cast(CodeGenHelper.GlobalType(type), commandExpression);
            }
            if ((((DbSource)command.Parent).Connection == null) || ((this.designTable.Connection != null) && (this.designTable.Connection == ((DbSource)command.Parent).Connection)))
            {
                statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(commandExpression, "Connection"), CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.DefaultConnectionPropertyName)));
            }
            else
            {
                Type type3 = currentFactory.CreateConnection().GetType();
                IDesignConnection connection        = ((DbSource)command.Parent).Connection;
                CodeExpression    propertyReference = null;
                if (connection.PropertyReference == null)
                {
                    propertyReference = CodeGenHelper.Str(connection.ConnectionStringObject.ToFullString());
                }
                else
                {
                    propertyReference = connection.PropertyReference;
                }
                statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(commandExpression, "Connection"), CodeGenHelper.New(CodeGenHelper.GlobalType(type3), new CodeExpression[] { propertyReference })));
            }
            statements.Add(QueryGeneratorBase.SetCommandTextStatement(commandExpression, command.CommandText));
            statements.Add(QueryGeneratorBase.SetCommandTypeStatement(commandExpression, command.CommandType));
            if (command.Parameters != null)
            {
                foreach (DesignParameter parameter in command.Parameters)
                {
                    parameterVariable = QueryGeneratorBase.AddNewParameterStatements(parameter, parameterType, currentFactory, statements, parameterVariable);
                    statements.Add(CodeGenHelper.Stm(CodeGenHelper.MethodCall(CodeGenHelper.Property(commandExpression, "Parameters"), "Add", new CodeExpression[] { parameterVariable })));
                }
            }
        }