@Override
	public Iterable<byte[]> possibleInsVals(AssemblyPatternBlock forCtx) {
		AssemblyPatternBlock ctxCompat = ctx.combine(forCtx);
		if (ctxCompat == null) {
			return List.of();
		}
		Predicate<byte[]> removeForbidden = (byte[] val) -> {
			for (AssemblyResolvedPatterns f : forbids) {
				// If the forbidden length is larger than us, we can ignore it
				if (f.getDefinedInstructionLength() > val.length) {
					continue;
				}
				// Check if the context matches, if not, we can let it pass
				if (null == f.getContext().combine(forCtx)) {
					continue;
				}
				// If the context matches, now check the instruction
				AssemblyPatternBlock i = f.getInstruction();
				AssemblyPatternBlock vi =
					AssemblyPatternBlock.fromBytes(ins.length() - val.length, val);
				if (null == i.combine(vi)) {
					continue;
				}
				return false;
			}
			return true;
		};
		return new Iterable<byte[]>() {
			@Override
			public Iterator<byte[]> iterator() {
				return IteratorUtils.filteredIterator(ins.possibleVals().iterator(),
					removeForbidden);
			}
		};
	}
Count the number of bits specified in the resolution patterns

<p>
Totals the specificity of the instruction and context pattern blocks.

@return the number of bits in the resulting patterns
@see AssemblyPatternBlock#getSpecificity()
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/sem/DefaultAssemblyResolvedPatterns.java