/// <summary>
        /// <para> TerminateJobFlows shuts a list of job flows down. When a job flow is shut down, any step not yet completed is canceled and the EC2
        /// instances on which the job flow is running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was specified
        /// when the job flow was created. </para> <para> The call to TerminateJobFlows is asynchronous. Depending on the configuration of the job flow,
        /// it may take up to 5-20 minutes for the job flow to completely terminate and release allocated resources, such as Amazon EC2 instances.
        /// </para>
        /// </summary>
        ///
        /// <param name="terminateJobFlowsRequest">Container for the necessary parameters to execute the TerminateJobFlows service method on
        /// AmazonElasticMapReduce.</param>
        ///
        /// <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 <TerminateJobFlowsResponse> TerminateJobFlowsAsync(TerminateJobFlowsRequest terminateJobFlowsRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new TerminateJobFlowsRequestMarshaller();
            var unmarshaller = TerminateJobFlowsResponseUnmarshaller.GetInstance();

            return(Invoke <IRequest, TerminateJobFlowsRequest, TerminateJobFlowsResponse>(terminateJobFlowsRequest, marshaller, unmarshaller, signer, cancellationToken));
        }
        IAsyncResult invokeTerminateJobFlows(TerminateJobFlowsRequest terminateJobFlowsRequest, AsyncCallback callback, object state, bool synchronized)
        {
            IRequest    irequest     = new TerminateJobFlowsRequestMarshaller().Marshall(terminateJobFlowsRequest);
            var         unmarshaller = TerminateJobFlowsResponseUnmarshaller.GetInstance();
            AsyncResult result       = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller);

            Invoke(result);
            return(result);
        }
        /// <summary>
        /// <para> TerminateJobFlows shuts a list of job flows down. When a job
        /// flow is shut down, any step not yet completed is canceled and the EC2
        /// instances on which the job flow is running are stopped. Any log files
        /// not already saved are uploaded to Amazon S3 if a LogUri was specified
        /// when the job flow was created. </para>
        /// </summary>
        ///
        /// <param name="terminateJobFlowsRequest">Container for the necessary
        ///           parameters to execute the TerminateJobFlows service method on
        ///           AmazonElasticMapReduce.</param>
        ///
        /// <exception cref="InternalServerErrorException"/>
        public TerminateJobFlowsResponse TerminateJobFlows(TerminateJobFlowsRequest terminateJobFlowsRequest)
        {
            IRequest <TerminateJobFlowsRequest> request  = new TerminateJobFlowsRequestMarshaller().Marshall(terminateJobFlowsRequest);
            TerminateJobFlowsResponse           response = Invoke <TerminateJobFlowsRequest, TerminateJobFlowsResponse> (request, this.signer, TerminateJobFlowsResponseUnmarshaller.GetInstance());

            return(response);
        }