public int NextChoice(ChoiceRange range)
        {
            Debug.Assert(!done);
            ChoiceTracker c;

            if (nextChoiceIdx >= choices.Count)
            {
                c = new ChoiceTracker(range);
                choices.Add(c);
            }
            else
            {
                c = choices[nextChoiceIdx];
                //Debug.Assert(c.min == min && c.max == max);
            }

            nextChoiceIdx++;
            return(c.value);
        }
 public ChoiceTracker(int bits)
 {
     this.range = new ChoiceRange_Bits(bits);
     this.index = 0;
 }
 public ChoiceTracker(ChoiceRange range)
 {
     this.range = range;
     this.index = 0;
 }