private WorkerWish getBestWorkerWish(AIUnit aiUnit, 
        java.util.Map<UnitType, List<Wish>> workerWishes) {
        final Unit unit = aiUnit.getUnit();
        List<Wish> wishList = workerWishes.get(unit.getType());
        WorkerWish nonTransported = null;
        WorkerWish transported = null;
        float bestNonTransportedValue = -1.0f;
        float bestTransportedValue = -1.0f;
        for (Wish w : wishList) {
            WorkerWish ww = (WorkerWish)w;
            int turns = unit.getTurnsToReach(ww.getDestination());
            if (turns == INFINITY) {
                if (bestTransportedValue < ww.getValue()) {
                    bestTransportedValue = ww.getValue();
                    transported = ww;
                }
            } else {
                if (bestNonTransportedValue < (float)ww.getValue() / turns) {
                    bestNonTransportedValue = (float)ww.getValue() / turns;
                    nonTransported = ww;
                }
            }
        }
        return (nonTransported != null) ? nonTransported
            : (transported != null) ? transported
            : null;
    }