public boolean isCauseFulfilled(Integer newNode, Map<Integer, Integer> nodeStates) {

		if (events.size() == 0) {
			return true;
		}

		Event event = events.get(newNode);

		if (event == null) {
			return true;
		}

		for (Entry<Integer, Integer> cause : event.getCauses().entrySet()) {

			Integer visited = nodeStates.get(cause.getKey());
			if (visited == null) {
				visited = 0;
			}

			if (!cause.getValue().equals(visited)) {
				return false;
			}
		}

		return true;
	}