code: private Configuration makeEvaluatorConfiguration(final String contextConfiguration,
                                                     final Optional<String> evaluatorConfiguration,
                                                     final Optional<String> serviceConfiguration,
                                                     final Optional<String> taskConfiguration) {
  
      final ConfigurationModule evaluatorConfigModule;
      if (this.evaluatorManager.getEvaluatorDescriptor().getProcess() instanceof CLRProcess) {
        evaluatorConfigModule = EvaluatorConfiguration.CONFCLR;
      } else if (this.evaluatorManager.getEvaluatorDescriptor().getProcess() instanceof DotNetProcess) {
        evaluatorConfigModule = EvaluatorConfiguration.CONFDOTNET;
      } else {
        evaluatorConfigModule = EvaluatorConfiguration.CONF;
      }
      ConfigurationModule evaluatorConfigurationModule = evaluatorConfigModule
          .set(EvaluatorConfiguration.APPLICATION_IDENTIFIER, this.jobIdentifier)
          .set(EvaluatorConfiguration.DRIVER_REMOTE_IDENTIFIER, this.remoteID)
          .set(EvaluatorConfiguration.EVALUATOR_IDENTIFIER, this.getId())
          .set(EvaluatorConfiguration.ROOT_CONTEXT_CONFIGURATION, contextConfiguration);
  
      // Add the (optional) service configuration
      if (evaluatorConfiguration.isPresent()) {
        evaluatorConfigurationModule = evaluatorConfigurationModule
            .set(EvaluatorConfiguration.EVALUATOR_CONFIGURATION, evaluatorConfiguration.get());
      }
  
      // Add the (optional) service configuration
      if (serviceConfiguration.isPresent()) {
        evaluatorConfigurationModule = evaluatorConfigurationModule
            .set(EvaluatorConfiguration.ROOT_SERVICE_CONFIGURATION, serviceConfiguration.get());
      } else {
        evaluatorConfigurationModule = evaluatorConfigurationModule
            .set(EvaluatorConfiguration.ROOT_SERVICE_CONFIGURATION,
                this.configurationSerializer.toString(Tang.Factory.getTang().newConfigurationBuilder().build()));
      }
  
      // Add the (optional) task configuration
      if (taskConfiguration.isPresent()) {
        evaluatorConfigurationModule = evaluatorConfigurationModule
            .set(EvaluatorConfiguration.TASK_CONFIGURATION, taskConfiguration.get());
      }
  
      // Create the evaluator configuration.
      return evaluatorConfigurationModule.build();
    }
docs: Make configuration for Evaluator.
  @param contextConfiguration
  @param evaluatorConfiguration
  @param serviceConfiguration
  @param taskConfiguration
  @return Configuration