Generics
Plain reflection tells you a method returns T. scala-universe tells you what T is for the class you asked about.
Overridden with a concrete type
The subclass overrides a generic method. The resolved method is the subclass's, and its return type is concrete.
Declared generic, resolved concrete
Members inherited without an override are resolved against the starting type as well: fields, return types and parameters.
findMethod matches the JVM signature, so a parameter of type E is found as classOf[Object]. The resolved parameterType then says User.
Start from the concrete type
Resolving the generic class itself leaves its type variables unbound. In 1.0.4 the raw class of an unbound variable is the class that declares it, not its bound.
Code that reads raw or name of a member type should start from a concrete class such as UserRepository. Starting from Repository[?] gives a type variable, whose raw class says nothing about its values.
Collections know their elements
typeArguments of a parameterized type are ResolvedClasses themselves. That is what lets json-mapper create the right element type for each JSON array.