The a& check in your example returning true is a bug in my opinion. & should be literal unless separated by spaces. When separated by spaces in a check, it should be treated as a word wildcard.
e.g. - This requires a $2 and cannot have a $3
on *:text:!identify &:?: { }
e.g. - This also requires a $2 and cannot have a $3
if (!identify & iswm $1-) { }
Of course, & is also a bitwise operator, so you have to watch how you use it or you risk the wrong interpretation.