ça me parait chaud, comme tu dis, le compilateur ne peut pas vérifier que tu vas appeler Machin.Methode avec le bon type.
et donc effectivement il faudrait un genre de "where T in A, B, C" pour dire au compilo que ça peut pas être autre chose.
Et comme tu controles pas les types A,B,C tu peux pas dire qu'ils implémentent tous une interface commune ou qu'ils dérivent d'un même super type...
donc je dirais que la solution est "non y'en a pas

"
(et en langue de Sun ça marche pas non plus ^^)