docs: public void marshall(JobFlowDetail jobFlowDetail, ProtocolMarshaller protocolMarshaller) {
  
          if (jobFlowDetail == null) {
              throw new SdkClientException("Invalid argument passed to marshall(...)");
          }
  
          try {
              protocolMarshaller.marshall(jobFlowDetail.getJobFlowId(), JOBFLOWID_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getName(), NAME_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getLogUri(), LOGURI_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getAmiVersion(), AMIVERSION_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getExecutionStatusDetail(), EXECUTIONSTATUSDETAIL_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getInstances(), INSTANCES_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getSteps(), STEPS_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getBootstrapActions(), BOOTSTRAPACTIONS_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getSupportedProducts(), SUPPORTEDPRODUCTS_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getVisibleToAllUsers(), VISIBLETOALLUSERS_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getJobFlowRole(), JOBFLOWROLE_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getServiceRole(), SERVICEROLE_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getAutoScalingRole(), AUTOSCALINGROLE_BINDING);
              protocolMarshaller.marshall(jobFlowDetail.getScaleDownBehavior(), SCALEDOWNBEHAVIOR_BINDING);
          } catch (Exception e) {
              throw new SdkClientException("Unable to marshall request to JSON: " + e.getMessage(), e);
          }
      }