public virtual void SetScorer(Scorer scorer) { // Gathers all scorers, including value and "under": allScorers = new JCG.List <Scorer>(); allScorers.Add(scorer); int upto = 0; while (upto < allScorers.Count) { scorer = allScorers[upto++]; foreach (ChildScorer sub in scorer.GetChildren()) { allScorers.Add(sub.Child); } } }