In reply to jogile:
A covergroup should not take the place of an assertion. An illegal_bin does not have all the reporting and filtering capabilities that an assertion has. It was a feature leftover from another language that did not have assertions. It should only be used as a debugging aid.
If you insist, you can use the bin with clause
bins good[] = sampledColor with (item inside {LIST});
illegal_bin bad[] = sampledColor with (!(item inside {LIST});