Tighten generic restrictions for UserDetailsBuilder