This is evaluating to true if there is any intersection between the types - is that what we want?  Maybe the function name should change to reflect the semantics more accurately.