Playing with reflection and generics, added method type variables