public LR1ItemSet calc(LR1ItemSet initialItemSet) {
	LR1ItemSet result = closures.get(initialItemSet);
	if (result == null) {
	    return calculate(initialItemSet);
	}
	return result;
    }
public LR1ItemSet calc ( LR1ItemSet initialItemSet ) { LR1ItemSet result = closures . get ( initialItemSet ) ; if ( result == null ) { return calculate ( initialItemSet ) ; } return result ; }
This is the closure method for a set of items. This method is descibed in
the Dragon Book 4.6.2.

<pre>
SetOfItems CLOSURE(I) {
repeat
for (jedes Item [ A --&gt; alpha . B beta, a] in I)
for (jede Produktion B --&gt; gamma in G')
for ( jedes Terminal b in FIRST(beta a) )
fuege [ B --&gt; . gamma, b ] zur Menge I hinzu;
until es werden keine weiteren Items mehr zu I hinzugefuegt;
}
</pre>

@param initialItemSet
is the {@link LR1ItemSet} for initial state.
@return A complete set of items is returned containing the parameter
items and all calculated extensions.