Rewrote generalizeOverType to reuse existing forall combinator