boolean (PsiType type, ExpectedTypeInfo info) { PsiType infoType = info.getType(); return switch (info.getKind()) { case ExpectedTypeInfo.TYPE_STRICTLY -> type.equals(infoType); case ExpectedTypeInfo.TYPE_OR_SUBTYPE -> infoType.isAssignableFrom(type); case ExpectedTypeInfo.TYPE_OR_SUPERTYPE -> type.isAssignableFrom(infoType); case ExpectedTypeInfo.TYPE_BETWEEN -> type.isAssignableFrom(info.getDefaultType()) && infoType.isAssignableFrom(type); case ExpectedTypeInfo.TYPE_SAME_SHAPED -> true; default -> { LOG.error("Unexpected ExpectedInfo kind"); yield false; } }; }