`completer.completer` is just bad for readability. They aren't both the same type of object and should thus be named differently. Your GeneralCompleterInstance class should probably be called CompleterWrap, but why do you need it at all? You just put state into it. Can't you get the same functionality by adding new methods on completers? Instead of putting stuff in Instance.results, why not just call completer.CandidatesFromStoredRequest directly?

Try not to create new state if you can. State is bad and should be avoided if possible.