Where are higher-rank and existential types used?