public boolean validateTileImprovementPlan(TileImprovementPlan tip) {
        if (tip == null) return false;
        Tile target = tip.getTarget();
        if (target == null) {
            logger.warning("Removing targetless TileImprovementPlan");
            tip.dispose();
            return false;
        }
        if (target.hasImprovement(tip.getType())) {
            logger.finest("Removing obsolete TileImprovementPlan");
            tip.dispose();
            return false;
        }
        if (tip.getPioneer() != null
            && (tip.getPioneer().getUnit() == null
                || tip.getPioneer().getUnit().isDisposed())) {
            logger.warning("Clearing broken pioneer for TileImprovementPlan");
            tip.setPioneer(null);
        }
        return true;
    }