/// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public override void Validate()
 {
     if (Cluster != null)
     {
         Cluster.Validate();
     }
     if (ContainerSettings != null)
     {
         ContainerSettings.Validate();
     }
     if (PyTorchSettings != null)
     {
         PyTorchSettings.Validate();
     }
     if (TensorFlowSettings != null)
     {
         TensorFlowSettings.Validate();
     }
     if (Caffe2Settings != null)
     {
         Caffe2Settings.Validate();
     }
     if (ChainerSettings != null)
     {
         ChainerSettings.Validate();
     }
     if (CustomMpiSettings != null)
     {
         CustomMpiSettings.Validate();
     }
     if (HorovodSettings != null)
     {
         HorovodSettings.Validate();
     }
     if (JobPreparation != null)
     {
         JobPreparation.Validate();
     }
     if (InputDirectories != null)
     {
         foreach (var element in InputDirectories)
         {
             if (element != null)
             {
                 element.Validate();
             }
         }
     }
     if (OutputDirectories != null)
     {
         foreach (var element1 in OutputDirectories)
         {
             if (element1 != null)
             {
                 element1.Validate();
             }
         }
     }
     if (EnvironmentVariables != null)
     {
         foreach (var element2 in EnvironmentVariables)
         {
             if (element2 != null)
             {
                 element2.Validate();
             }
         }
     }
     if (Secrets != null)
     {
         foreach (var element3 in Secrets)
         {
             if (element3 != null)
             {
                 element3.Validate();
             }
         }
     }
 }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (Cluster == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "Cluster");
     }
     if (StdOutErrPathPrefix == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "StdOutErrPathPrefix");
     }
     if (Cluster != null)
     {
         Cluster.Validate();
     }
     if (ContainerSettings != null)
     {
         ContainerSettings.Validate();
     }
     if (PyTorchSettings != null)
     {
         PyTorchSettings.Validate();
     }
     if (TensorFlowSettings != null)
     {
         TensorFlowSettings.Validate();
     }
     if (Caffe2Settings != null)
     {
         Caffe2Settings.Validate();
     }
     if (ChainerSettings != null)
     {
         ChainerSettings.Validate();
     }
     if (CustomMpiSettings != null)
     {
         CustomMpiSettings.Validate();
     }
     if (HorovodSettings != null)
     {
         HorovodSettings.Validate();
     }
     if (JobPreparation != null)
     {
         JobPreparation.Validate();
     }
     if (InputDirectories != null)
     {
         foreach (var element in InputDirectories)
         {
             if (element != null)
             {
                 element.Validate();
             }
         }
     }
     if (OutputDirectories != null)
     {
         foreach (var element1 in OutputDirectories)
         {
             if (element1 != null)
             {
                 element1.Validate();
             }
         }
     }
     if (EnvironmentVariables != null)
     {
         foreach (var element2 in EnvironmentVariables)
         {
             if (element2 != null)
             {
                 element2.Validate();
             }
         }
     }
     if (Secrets != null)
     {
         foreach (var element3 in Secrets)
         {
             if (element3 != null)
             {
                 element3.Validate();
             }
         }
     }
 }