private int getResourceModifier(Resource resource) {
int resourceModifier = 0;
boolean tileHasResource = (getType().getProduction(resource) > 0);
Iterator<TileImprovementType> improvementsIterator = getImprovementsIterator();
while (improvementsIterator.hasNext()) {
TileImprovementType improvement = improvementsIterator.next();
resourceModifier = resourceModifier + improvement.getResourceModifier(resource, tileHasResource);
}
if (getVegetation() != null) {
resourceModifier = resourceModifier + getVegetation().getResourceModifier(resource, tileHasResource);
}
if (getBonusResource() != null) {