The submitted program is not correct as per JLS 3rd. In short, you cannot access a private member of a type variable, as there is no static guarantee that the type-variable will be instantiated with a type in which the member will be inherited.
Below is reported the relevant JLS text:
JLS 4.4 (Type-Variables)
"The members of a type variable X with bound T & I1 ... In are the members of the intersection type (??4.9) T & I1 ... In appearing at the point where the type variable is declared."
JLS 4.9 (Intersection types)
"The members of an intersection type T1 & ... & Tn are determined as follows:
*) For each Ti, 1in, let Ci be the most specific class or array type such that Ti <: Ci Then there must be some Tk <: Ck such that Ck <: Ci for any i, 1in, or a compile-time error occurs.
*) For 1jn, if Tj is a type variable, then let ITj be an interface whose members are the same as the **public** members of Tj; otherwise, if Tj is an interface, then let ITj be Tj.
Then the intersection type has the same members as a class type (??8) with an empty body, direct superclass Ck and direct superinterfaces IT1 , ..., ITn, declared in the same package in which the intersection type appears."
It follows that an intersection type cannot have private members - this implies that type-variables also cannot have private members.