Member predicate Type::hasUnderlyingTypeName
Holds if this refers to the given named type, or is declared as a subtype thereof, or is a union or intersection containing such a type.
This is useful for recognising expressions that may refer to an instance of a given type, without relying on the exact static type of the expression.
predicate hasUnderlyingTypeName(TypeName typeName)