If any of the method’s type arguments were not inferred from the types of the actual arguments, they are now inferred as follows.
• If the method result occurs in a context where it will be subject to assignment conversion (§5.2) to a type S, then let R be the declared result type of the method, and let R’ = R
[T1=B(T1) ... Tn=B(Tn)
], where B(Ti) is the type inferred for Ti in the previous section or Ti if no type was inferred.
If S is a reference type, then let S’ be S. Otherwise, if S is a primitive type, then let S’ be the result of applying boxing conversion (§5.1.7) to S.
Then, a set of initial constraints consisting of:
♦ the constraint S’ >> R’, provided R is not
♦ additional constraints ...