Look at CandidatesForQueryAsync in Completer. It does the filtering on the cached candidates. So the subclass returns the full list of candidates and the superclass does the filtering. The subclasses should not be doing it.