code: @Override
      public final GeoCodeItem find(final String placeName) {
          logger.debug("find(\"" + placeName + "\")");
          final GeoDocument geoDocument = getDocument(placeName);
          GeoCodeItem gcce;
          if (geoDocument != null) {
              gcce = geoDocument.getGeoItem();
              if (gcce.getGeocodingResult() != null) {
                  return gcce;
              }
  
              // It doesn't have a coding result, see if there is one.
              final GeocodingResult[] results = geoCoder.geocode(
                      gcce.getModernPlaceName());
              if (results.length == 0) {
                  // Nope, so we live with the current entry from the cache.
                  return gcce;
              } else {
                  // Replace item in cache with new one.
                  gcce = new GeoCodeItem(gcce.getPlaceName(),
                          gcce.getModernPlaceName(), results[0]);
                  add(gcce);
                  return gcce;
              }
          }
          // Not found in cache. Let's see what we can find.
          final GeocodingResult[] results = geoCoder.geocode(placeName);
          if (results.length > 0) {
              /* Work with the first result. */
              gcce = new GeoCodeItem(placeName, results[0]);
          } else {
              // Not found, create empty.
              gcce = new GeoCodeItem(placeName);
          }
          add(gcce);
          return gcce;
      }
docs: {@inheritDoc}