public static CandidateComparerCollection <T> Concat(CandidateComparerCollection <T> first, CandidateComparerCollection <T> second)
        {
            if (first.CandidateCount != second.CandidateCount)
            {
                throw new ArgumentException("Candidate Counts must be equal.");
            }

            return(new CandidateComparerCollection <T>(first.CandidateCount, CountedList <T> .Concat(first.Comparers, second.Comparers)));
        }
        public CandidateComparerCollection <T> Append(T value)
        {
            if (CandidateCount != value.CandidateCount)
            {
                throw new ArgumentException("Candidate Counts must be equal.");
            }

            var second = new CountedList <T>();

            second.Add(value);
            return(new CandidateComparerCollection <T>(CandidateCount, CountedList <T> .Concat(Comparers, second)));
        }