public VirusInfo?Next()
        {
            if (!isEmpty)
            {
                string Info;
                (Info, nameIndex) = RetrieveNextString(database.Names, nameIndex);
                var virusName = Info;

                (Info, deathRateIndex) = RetrieveNextString(database.DeathRates, deathRateIndex);
                var deathRate = RetrieveNumber(Info);

                (Info, infectionRateIndex) = RetrieveNextString(database.InfectionRates, infectionRateIndex);
                var infectionRate = RetrieveNumber(Info);

                (Info, genomeIdIndex) = RetrieveNextString(database.GenomeIds, genomeIdIndex);
                var genomeId = Guid.Parse(Info);

                var virusInfo = new VirusInfo(virusName, deathRate, infectionRate, genomeId);
                return(virusInfo);
            }
            else
            {
                return(null);
            }
        }
 public VirusInfo?Next()
 {
     if (i < virusDatas.Count)
     {
         var virusInfo = new VirusInfo(virusDatas[i].VirusName, virusDatas[i].DeathRate,
                                       virusDatas[i].InfectionRate, virusDatas[i].GenomeId);
         i++;
         return(virusInfo);
     }
     else
     {
         return(null);
     }
 }
 public VirusInfo?Next()
 {
     if (nodeStack.Count != 0)
     {
         var currentNode = nodeStack.Pop();
         var childNodes  = currentNode.Children;
         foreach (var Node in childNodes)
         {
             nodeStack.Push(Node);
         }
         var virusInfo = new VirusInfo(currentNode.VirusName, currentNode.DeathRate,
                                       currentNode.InfectionRate, currentNode.GenomeTag);
         return(virusInfo);
     }
     else
     {
         return(null);
     }
 }