code: public LR1ItemSet calc(LR1ItemSet initialItemSet) {
  	LR1ItemSet result = closures.get(initialItemSet);
  	if (result == null) {
  	    return calculate(initialItemSet);
  	}
  	return result;
      }
docs: 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.