public IInternalCandidate Add(IInternalCandidate candidate) { _result.Add(candidate); if (((QCandidateBase)candidate)._size == 0) { // This means that the candidate was already present // and QCandidate does not allow duplicates. // In this case QCandidate#isDuplicateOf will have // placed the existing QCandidate in the i_root // variable of the new candidate. We return it here: return(candidate.GetRoot()); } return(candidate); }