* @param path The path to follow.
     * @return True if the unit has completed the path and can move further.
     */
    private boolean followPath(Unit unit, PathNode path) {
        // Traverse the path to the destination.
        for (; path != null; path = path.next) {
            if (path.getLocation() == unit.getLocation()) continue;

            if (path.getLocation() instanceof Europe) {
                if (unit.getTile() != null
                    && unit.getTile().isDirectlyHighSeasConnected()) {
                    moveTo(unit, path.getLocation());
                    return false;
                } else {
                    logger.warning("Can not move to Europe from "
                        + unit.getLocation()
                        + " on path: " + path.fullPathToString());
                }
            } else {
                if (path.getDirection() != null) {
                    if (!moveDirection(unit, path.getDirection(), false)) {
                        return false;
                    }
                } else {
                    logger.warning("Can not move to tile from "
                        + unit.getLocation()
                        + " on path: " + path.fullPathToString());
                }
            }
        }
        return true;
    }