i.f() and s.f() both ref and ref/call the same node, a unary tapp (tapp(C::f)). We used to point directly at C<int>::f or C<short>::f. (Attentive readers may recall a low-priority issue wrt the target of the instantiates edge starting at these members.)

In this situation, I think the best thing we can do is flatten out the type context (since the schema doesn't like nested tapps) and refer to tapp(C::f, int) and tapp(C::f, short). The head of the tapp should be the nearest explicit thing we can get at (like the closest partial specialization).