public Set<State> getNextAndTheirClosure(Object object) {
        Collection<State> nextState = transfers.get(object);
        if (nextState.isEmpty()) {
            return Collections.emptySet();
        }
        Set<State> closures = new HashSet<State>();

        // find their closure
        for (State s : nextState) {
            if (!closures.contains(s)) {
                closures.add(s);
                closures.addAll(s.getClosure());
            }
        }

        return Collections.unmodifiableSet(closures);
    }