public override List<IGEPOrganism> Execute(IGEPEnvironment environment)
        {
            var dna = new GEPDNA();
            var allele = new GEPAllele(dna);
            var main = new GEPGene(environment: environment);
            main.Add(allele);

            var chromosome = new GEPChromosome(environment: environment, main: main);

            var organism = new GEPOrganism(environment: environment) { chromosome };
            organism.Parent = environment;

            for (var i = 0; i < environment.GeneticCode.DNALength; i++)
                allele.DNA.AddRandomNucleotide();




            /*
            var testAllele = new GEPAllele(new GEPDNA());
            var testGene = new GEPGene(environment: environment);
            testGene.Add(testAllele);
            main.Add(testGene);
            for (var i = 0; i < environment.GeneticCode.DNALength; i++)
                testAllele.DNA.AddRandomNucleotide();

            var test2Allele = new GEPAllele(new GEPDNA());
            var test2Gene = new GEPGene(environment: environment);
            test2Gene.Add(test2Allele);
            main.Add(test2Gene);
            for (var i = 0; i < environment.GeneticCode.DNALength; i++)
                test2Allele.DNA.AddRandomNucleotide();

            var test3Allele = new GEPAllele(new GEPDNA());
            var test3Gene = new GEPGene(environment: environment);
            test3Gene.Add(test3Allele);
            test2Gene.Add(test3Gene);
            for (var i = 0; i < environment.GeneticCode.DNALength; i++)
                test3Allele.DNA.AddRandomNucleotide();

            var test4Allele = new GEPAllele(new GEPDNA());
            var test4Gene = new GEPGene(environment: environment);
            test4Gene.Add(test4Allele);
            main.Add(test4Gene);
            for (var i = 0; i < environment.GeneticCode.DNALength; i++)
                test4Allele.DNA.AddRandomNucleotide();

            var test5Allele = new GEPAllele(new GEPDNA());
            var test5Gene = new GEPGene(environment: environment);
            test5Gene.Add(test5Allele);
            test3Gene.Add(test5Gene);
            for (var i = 0; i < environment.GeneticCode.DNALength; i++)
                test5Allele.DNA.AddRandomNucleotide();
            */


            return new List<IGEPOrganism>() { organism };
        }
 private IGEPGene CreateGeneFromGenomeUnit(IGEPEnvironment gepEnvironment, IGenomeUnit unit)
 {
     var gene = new GEPGene(environment: gepEnvironment);
     gene.Add(unit.ActiveAllele);
     foreach (var inactiveAllele in unit.InactiveAlleles)
         gene.Add(inactiveAllele);
     return gene;
 }