For other CodeQL resources, including tutorials and examples, see Learning CodeQL
Repeatedly unfolds union and intersection types and gets any of the underlying types,
or this type itself if it is not a union or intersection.
For example, for a type (S & T) | U this gets the types S, T, and U.
(S & T) | U