void (State state) { List<EKey> throwKeys = interpreter.throwKeys; interpreter.throwKeys = null; if (myThrowKeys == null) return; Set<EKey> prevKeys = myThrowKeys.remove(state); if (myNextStates.isEmpty()) { updateFinalKeys(prevKeys); return; } if (prevKeys == null || prevKeys.isEmpty()) { prevKeys = throwKeys != null ? Set.copyOf(throwKeys) : Collections.emptySet(); } else { if (throwKeys != null && !throwKeys.isEmpty()) { prevKeys = new HashSet<>(prevKeys); prevKeys.addAll(throwKeys); if (prevKeys.size() > 8) { myThrowKeys = null; return; } } } for (State next : myNextStates) { myThrowKeys.put(next, prevKeys); } }