} else { for (HashTable<IDAStarCacheState>::Iterator it = cachedStates.begin(); it != cachedStates.end(); ++it) ++((*it).minMovesFromStart);
deque<Move> IDAStar(int maxDist) {    DEBUG0("IDAStar" << maxDist);    moves = 0;    ++Statistics::statesGenerated;    state = IDAStarState(Problem::startPositions());    solution.clear();    if (state.minMovesLeft() > maxDist)	return solution;	// saves memory allocation and freeing    //DEBUG1(cachedStates.capacity() << " 1 " << MAX_STATES);    //if (cachedStates.capacity() != MAX_STATES)    //cachedStates = HashTable<IDAStarCacheState>(MAX_STATES, LOAD_FACTOR);    //DEBUG1(cachedStates.capacity() << " 2 " << MAX_STATES);    if (Problem::goalNr != cacheGoalNr) {	DEBUG1("cache of wrong goal nr. Clearing.");	cacheGoalNr = Problem::goalNr;	cachedStates.clear(MAX_STATES, LOAD_FACTOR);	if (maxDist > 0) {	    DEBUG1("Pre-heating cache.");	    for (maxMoves = 0; maxMoves < maxDist; ++maxMoves) {		DEBUG1("Pre-heating with maxDist = " << maxMoves);		dfs(Move());		assert(solution.empty());	    }	    DEBUG1("Pre-heated cache.");	}    }    maxMoves = maxDist;    Statistics::timer.start();    dfs(Move());    Statistics::timer.stop();    return solution;}