/// <summary>
        /// <para> DescribeJobFlows returns a list of job flows that match all of the supplied parameters. The parameters can include a list of job flow
        /// IDs, job flow states, and restrictions on job flow creation date and time.</para> <para> Regardless of supplied parameters, only job flows
        /// created within the last two months are returned.</para> <para> If no parameters are supplied, then job flows matching either of the
        /// following criteria are returned:</para>
        /// <ul>
        /// <li>Job flows created and completed in the last two weeks</li>
        /// <li> Job flows created within the last two months that are in one of the following states: <c>RUNNING</c> ,
        /// <c>WAITING</c> ,
        /// <c>SHUTTING_DOWN</c> ,
        ///
        /// <c>STARTING</c> </li>
        ///
        /// </ul>
        /// <para> Amazon Elastic MapReduce can return a maximum of 512 job flow descriptions. </para>
        /// </summary>
        ///
        /// <param name="describeJobFlowsRequest">Container for the necessary parameters to execute the DescribeJobFlows service method on
        /// AmazonElasticMapReduce.</param>
        ///
        /// <returns>The response from the DescribeJobFlows 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 <DescribeJobFlowsResponse> DescribeJobFlowsAsync(DescribeJobFlowsRequest describeJobFlowsRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new DescribeJobFlowsRequestMarshaller();
            var unmarshaller = DescribeJobFlowsResponseUnmarshaller.GetInstance();

            return(Invoke <IRequest, DescribeJobFlowsRequest, DescribeJobFlowsResponse>(describeJobFlowsRequest, marshaller, unmarshaller, signer, cancellationToken));
        }
        IAsyncResult invokeDescribeJobFlows(DescribeJobFlowsRequest describeJobFlowsRequest, AsyncCallback callback, object state, bool synchronized)
        {
            IRequest    irequest     = new DescribeJobFlowsRequestMarshaller().Marshall(describeJobFlowsRequest);
            var         unmarshaller = DescribeJobFlowsResponseUnmarshaller.GetInstance();
            AsyncResult result       = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller);

            Invoke(result);
            return(result);
        }
        /// <summary>
        /// <para> DescribeJobFlows returns a list of job flows that match all of
        /// the supplied parameters. The parameters can include a list of job flow
        /// IDs, job flow states, and restrictions on job flow creation date and
        /// time.</para> <para> Regardless of supplied parameters, only job flows
        /// created within the last two months are returned.</para> <para> If no
        /// parameters are supplied, then job flows matching either of the
        /// following criteria are returned:</para>
        /// <ul>
        /// <li>Job flows created and completed in the last two weeks</li>
        /// <li> Job flows created within the last two months that are in one of
        /// the following states: <c>RUNNING</c> ,
        ///
        /// <c>WAITING</c> ,
        ///
        /// <c>SHUTTING_DOWN</c> ,
        ///
        /// <c>STARTING</c> </li>
        ///
        /// </ul>
        /// <para> Amazon Elastic MapReduce can return a maximum of 512 job flow
        /// descriptions. </para>
        /// </summary>
        ///
        /// <param name="describeJobFlowsRequest">Container for the necessary
        ///           parameters to execute the DescribeJobFlows service method on
        ///           AmazonElasticMapReduce.</param>
        ///
        /// <returns>The response from the DescribeJobFlows service method, as
        ///         returned by AmazonElasticMapReduce.</returns>
        ///
        /// <exception cref="InternalServerErrorException"/>
        public DescribeJobFlowsResponse DescribeJobFlows(DescribeJobFlowsRequest describeJobFlowsRequest)
        {
            IRequest <DescribeJobFlowsRequest> request  = new DescribeJobFlowsRequestMarshaller().Marshall(describeJobFlowsRequest);
            DescribeJobFlowsResponse           response = Invoke <DescribeJobFlowsRequest, DescribeJobFlowsResponse> (request, this.signer, DescribeJobFlowsResponseUnmarshaller.GetInstance());

            return(response);
        }