code: @Override
    public Configuration getDriverConfiguration(final URI jobFolder,
                                                final String clientRemoteId,
                                                final String jobId,
                                                final Configuration applicationConfiguration) {
      AvroMultiRuntimeDefinition runtimeDefinitions = this.definitionGenerator.getMultiRuntimeDefinition(
              jobFolder,
              clientRemoteId,
              jobId);
      ConfigurationModule conf = MultiRuntimeDriverConfiguration.CONF;
  
      for(AvroRuntimeDefinition runtimeDefinition : runtimeDefinitions.getRuntimes()){
        conf = conf.set(MultiRuntimeDriverConfiguration.RUNTIME_NAMES, runtimeDefinition.getRuntimeName().toString());
      }
  
      final Configuration mainConfiguration = this.mainRuntimeConfigGenerator.getMainConfiguration();
  
      return Configurations.merge(mainConfiguration, applicationConfiguration,
                      conf
                      .set(MultiRuntimeDriverConfiguration.JOB_IDENTIFIER, jobId)
                      .set(MultiRuntimeDriverConfiguration.CLIENT_REMOTE_IDENTIFIER, clientRemoteId)
                      .set(MultiRuntimeDriverConfiguration.SERIALIZED_RUNTIME_DEFINITION,
                              this.runtimeDefinitionSerializer.toString(runtimeDefinitions))
                      .build());
    }
docs: Assembles the driver configuration.
  
  @param jobFolder                The folder in which the local runtime will execute this job.
  @param clientRemoteId           the remote identifier of the client. It is used by the Driver to establish a
  connection back to the client.
  @param jobId                    The identifier of the job.
  @param applicationConfiguration The configuration of the application, e.g. a filled out DriverConfiguration
  @return The Driver configuration to be used to instantiate the Driver.