The question initially appeared to clarify some specific things I was not clear about the code posted, but after all the investigations, I guess, there is a sense to share the whole understanding I have got about generics, extension methods and expressions (if they are used all together).