@Override
				public byte[] next() {
					int cm = max >> 1;
					for (int i = 0; i < mask.length; i++) {
						byte m = mask[i];
						for (int j = 0; j < 8; j++) {
							if ((m & 0x80) == 0) {
								byte b = (byte) (0x80 >> j);
								if ((c & cm) == 0) {
									cur[i] &= ~b;
								}
								else {
									cur[i] |= b;
								}
								cm >>= 1;
							}
							m <<= 1;
						}
					}
					c++;
					return cur;
				}
Get an iterable over all the possible fillings of the value, given a partial mask

<p>
This is meant to be used idiomatically, as in an enhanced for loop:

<pre>
for (byte[] val : pattern.possibleVals()) {
	System.out.println(format(val));
}
</pre>

<p>
<b>NOTE:</b> A single byte array is instantiated with the call to
{@link Iterable#iterator()}. Each call to {@link Iterator#next()} modifies the one byte array
and returns it. As such, if you intend to preserve the value in the array for later use, you
<em>must</em> make a copy.

@return the iterable.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/sem/AssemblyPatternBlock.java