Ignore and illegal bins within a cross

I have two variables , one a 2 bit variable and another a single bit variable.

cp_a : coverpoint a {
bins zero = {2’b00};
bins one = {2’b01};
bins two = {2’b10};
bins three = {2’b11};
}
cp_b : coverpoint b {
bins zero = {0};
bins one = {1};
}
cr_a_b: cross cp_a,cp_b {
ignore_bins ignore = binsof(cp_a.zero);
ignore_bins ignore1 = binsof(cp_b.zero);
illegal_bins illegal = binsof(cp_a.three);
}

Now, I expect that bin (cp_a.three,cp_b.zero) and Illegal should be hit only when (cp_a.three,cp_b.one) is hit.

**But, I see that illegal is getting hit when (cp_a.three,cp_b.zero) is hit. I have asked the cross to IGNORE cp_b.zero. This being the case, why is the simulator hitting illegal when (cp_a.three,cp_b.zero) is true.

Can you please explain the usage of illegal and ignore in the context of a cross (ie, assuming no illegals/ignores are specified in the individual coverpoints) as seen in the case above.
**
Please help me resolve this issue.

Thanks

This is because illegal_bins take precedence over any other bin.