I couldn't figure out a better place to put it, as the contains function doesn't cut it due to the need to parse and compare the versions. I did my best to make it follow the same style as the not() special case in the matcher.