public List expansionForLevel(int level) {
		if (level < 0)
			throw new IllegalArgumentException("Recursion level " + level
					+ " impossible!");
		if (level < cachedExpansions.size())
			return (List) cachedExpansions.get(level);
		List lastOne = (List) cachedExpansions.get(cachedExpansions.size() - 1);
		for (int i = cachedExpansions.size(); i <= level; i++)
			cachedExpansions.add(lastOne = expand(lastOne));
		return lastOne;
	}