I don't like this interface. Having all those generic parameters, It's unclear what behavior it represents.  

`GetSymbolAtPosition` is used only inside the two implementations, so it seems that we miss another, lower level abstraction (and I really don't like to introduce one). 

Maybe it's wrong approach to use `LanguageService` in the test implementation and `VSLanguageService` in the 'production' one? It causes the implementations to be too different.