public Collection<AssemblyParseStateItem> getClosure(AssemblyGrammar grammar) {
		AssemblySymbol next = getNext();
		if (next == null) {
			return Collections.emptySet();
		}
		if (!(next instanceof AssemblyNonTerminal)) {
			return Collections.emptySet();
		}
		AssemblyNonTerminal nt = (AssemblyNonTerminal) next;
		Set<AssemblyParseStateItem> result = new TreeSet<>();
		for (AssemblyProduction subst : grammar.productionsOf(nt)) {
			result.add(new AssemblyParseStateItem(subst, 0));
		}
		return result;
	}
"Fill" one step out to close a state containing this item

<p>
To compute the full closure, you must continue stepping out until no new items are generated

@param grammar the grammar containing the production
@return a subset of items in the closure of a state containing this item
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/parse/AssemblyParseStateItem.java