public override CoordinatesCrossover <TAlgorithm, TProblem, TSolution> DeepClone()
 {
     return(new CoordinatesCrossoverExtendedLine <TAlgorithm, TProblem, TSolution>
     {
         GetDimension = (Func <int>?)GetDimension?.Clone(),
         GetRandom = (Func <Random>?)GetRandom?.Clone()
     });
 }
 public override CoordinatesInitializer <TAlgorithm, TProblem, TSolution> DeepClone()
 {
     return(new CoordinatesInitializerUniform <TAlgorithm, TProblem, TSolution>
     {
         GetDimension = (Func <int>?)GetDimension?.Clone(),
         GetLowerSearchBorders = (Func <double[]>?)GetLowerSearchBorders?.Clone(),
         GetUpperSearchBorders = (Func <double[]>?)GetUpperSearchBorders?.Clone(),
         GetRandom = (Func <Random>?)GetRandom?.Clone()
     });
 }