In EventTypeAssignabilityRules, method isAssignableFrom(Type type1, Type types2) seems to be incorrect - it is called from isTypeInsideBounds() with expectation that type1 has to assignableFrom each Type from types2, not from at least one as is the case.
Other such incorrect methods are:
- isAssignableFrom(Type type1, Set<? extends Type> types2)
- isAssignableFrom(Type types1, Type type2)