The docs say:
typeintersect(T, S)Compute a type that contains the intersection of T and S. Usually this will be the smallest such type or one close to it.
I interpret this to mean that there may be cases where typeintersect(T, S) is not a subtype of both T and S?
Can anyone give me an example?