I'm pretty sure we're never going to need the case where T1 is not the same as T2.  

If other parts of the lib are written this way, we need to go back and rethink.  if we have fvar.fvar.T and fvar.T, then we want to promote the second one to fvar.fvar.T most likely and not the way we have it.