How Did This Research Get Made?

"Union, intersection and recursive types are type constructions which make it possible to formulate very precise types. However, because of type checking difficulties related to the simultaneous use of these constructions, they have only found little use in programming languages. One of the problems is subtyping."

— Flemming M. Damm in Subtyping with Union Types, Intersection Types and Recursive Types (1994)

Where to start?