protected Stream<AssemblyGeneratedPrototype> applyConstructor(GeneratorContext gc,
			AssemblyConstructorSemantic sem) {
		Stream<AssemblyResolvedPatterns> applied = sem.applyPatternsForward(gc.shift, fromLeft)
				.filter(pat -> {
					if (pat == null) {
						gc.dbg("Conflicting pattern. fromLeft=" + fromLeft + ",sem=" +
							sem.getLocation());
						return false;
					}
					return true;
				})
				.map(pat -> sem.applyContextChangesForward(resolver.vals, pat));
		List<AssemblyParseTreeNode> opOrdered = orderOpNodes(sem);
		return applied.flatMap(
			patterned -> applyOperands(gc, patterned, sem, opOrdered));
	}
Generate prototypes, considering the given SLEIGH constructor

<p>
This comprises three steps: apply patterns, apply context changes, apply operands
left-to-right.

@param gc the generator context for this node
@param sem the SLEIGH constructor to apply
@return the stream of generated (sub) prototypes
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/sem/AssemblyConstructStateGenerator.java