We revisit occurrence typing, a technique to refine the type of variables occurring in type-cases and, thus, capture some programming patterns used untyped languages. Although typing was tied from its inception set-theoretic types—union types, particular—it never fully exploited capabilities these types. Here we show how, by using it is possible develop general framework that encompasses and ge...