public GeneticAlgo(IConfigureGeneticParameters parameters, ICreateGenomes <TGenome, TFitness> genomeCreator, [CanBeNull] IComparer <TFitness> fitnessComparer)
 {
     if (genomeCreator == null)
     {
         throw new ArgumentNullException(nameof(genomeCreator));
     }
     m_parameters      = parameters;
     m_genomeCreator   = genomeCreator;
     m_fitnessComparer = fitnessComparer;
 }
        public GeneticAlgo(ICanModifyTheGeneticParameters <TGenome> parameters,
                           [NotNull] ICreateGenomes <TGenome, TFitness> genomeCreator,
                           [CanBeNull] IComparer <TFitness> fitnessComparer)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }
            if (genomeCreator == null)
            {
                throw new ArgumentNullException(nameof(genomeCreator));
            }

            m_parameters        = parameters;
            m_parameterModifier = parameters;
            m_genomeCreator     = genomeCreator;
            m_fitnessComparer   = fitnessComparer;
        }