private static float sampleFertility(Tile point) {
    final int range = BROWSER_SEPARATION * 2 ;// + (SPECIES_SEPARATION / 2) ;
    float fertility = 0 ;
    int numSamples = BROWSING_SAMPLE ; while (numSamples-- > 0) {
      final Tile t = point.world.tileAt(
        point.x + Rand.range(-range, range),
        point.y + Rand.range(-range, range)
      ) ;
      if (t == null) continue ;
      final Habitat h = t.habitat() ;
      if (h.isOcean || h.isWaste) continue ;
      else {
        final float moisture = Visit.clamp((h.moisture - 2) / 10f, 0, 1) ;
        fertility += moisture / 4f ;
        if (t.owner() instanceof Flora) {
          final Flora f = (Flora) t.owner() ;
          fertility += (f.growStage() + 0.5f) * moisture / 1.5f ;
        }
      }
    }
    return fertility * (range * range) / BROWSING_SAMPLE ;
  }