/// <summary>
        /// <para> AddJobFlowSteps adds new steps to a running job flow. A maximum of 256 steps are allowed in each job flow. </para> <para>If your job
        /// flow is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass
        /// the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the
        /// software running on the master node, such as Hive and Hadoop. For more information on how to do this, go to <a href="http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html">Add More than 256 Steps to a Job Flow</a>
        /// in the <i>Amazon Elastic MapReduce Developer's Guide</i> .</para> <para> A step specifies the location of a JAR file stored either on the
        /// master node of the job flow or in Amazon S3. Each step is performed by the main function of the main class of the JAR file. The main class
        /// can be specified either in the manifest of the JAR or by using the MainFunction parameter of the step. </para> <para> Elastic MapReduce
        /// executes each step in the order listed. For a step to be considered complete, the main function must exit with a zero exit code and all
        /// Hadoop jobs started while the step was running must have completed and run successfully. </para> <para> You can only add steps to a job flow
        /// that is in one of the following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING.</para>
        /// </summary>
        ///
        /// <param name="addJobFlowStepsRequest">Container for the necessary parameters to execute the AddJobFlowSteps service method on
        /// AmazonElasticMapReduce.</param>
        ///
        /// <returns>The response from the AddJobFlowSteps service method, as returned by AmazonElasticMapReduce.</returns>
        ///
        /// <exception cref="T:Amazon.ElasticMapReduce.Model.InternalServerErrorException" />
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        public Task <AddJobFlowStepsResponse> AddJobFlowStepsAsync(AddJobFlowStepsRequest addJobFlowStepsRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new AddJobFlowStepsRequestMarshaller();
            var unmarshaller = AddJobFlowStepsResponseUnmarshaller.GetInstance();

            return(Invoke <IRequest, AddJobFlowStepsRequest, AddJobFlowStepsResponse>(addJobFlowStepsRequest, marshaller, unmarshaller, signer, cancellationToken));
        }
        IAsyncResult invokeAddJobFlowSteps(AddJobFlowStepsRequest addJobFlowStepsRequest, AsyncCallback callback, object state, bool synchronized)
        {
            IRequest    irequest     = new AddJobFlowStepsRequestMarshaller().Marshall(addJobFlowStepsRequest);
            var         unmarshaller = AddJobFlowStepsResponseUnmarshaller.GetInstance();
            AsyncResult result       = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller);

            Invoke(result);
            return(result);
        }
        /// <summary>
        /// <para> AddJobFlowSteps adds new steps to a running job flow. A maximum
        /// of 256 steps are allowed in each job flow. </para> <para> A step
        /// specifies the location of a JAR file stored either on the master node
        /// of the job flow or in Amazon S3. Each step is performed by the main
        /// function of the main class of the JAR file. The main class can be
        /// specified either in the manifest of the JAR or by using the
        /// MainFunction parameter of the step. </para> <para> Elastic MapReduce
        /// executes each step in the order listed. For a step to be considered
        /// complete, the main function must exit with a zero exit code and all
        /// Hadoop jobs started while the step was running must have completed and
        /// run successfully. </para> <para> You can only add steps to a job flow
        /// that is in one of the following states: STARTING, BOOTSTAPPING,
        /// RUNNING, or WAITING.</para>
        /// </summary>
        ///
        /// <param name="addJobFlowStepsRequest">Container for the necessary
        ///           parameters to execute the AddJobFlowSteps service method on
        ///           AmazonElasticMapReduce.</param>
        ///
        /// <exception cref="InternalServerErrorException"/>
        public AddJobFlowStepsResponse AddJobFlowSteps(AddJobFlowStepsRequest addJobFlowStepsRequest)
        {
            IRequest <AddJobFlowStepsRequest> request  = new AddJobFlowStepsRequestMarshaller().Marshall(addJobFlowStepsRequest);
            AddJobFlowStepsResponse           response = Invoke <AddJobFlowStepsRequest, AddJobFlowStepsResponse> (request, this.signer, AddJobFlowStepsResponseUnmarshaller.GetInstance());

            return(response);
        }