Interface IntersectionType

An intersection type can be either implicitly or explicitly
declared in a program. For example, the bound of the type parameter
<T extends Number & Runnable> is an (implicit) intersection
type. As of RELEASE_8, this is represented by an IntersectionType with
Number and Runnable as its bounds.

Implementation Note:

Also as of RELEASE_8, in the
reference implementation an IntersectionType is used to
model the explicit target type of a cast expression.