code: @Override
      public final GeoCodeItem find(final String placeName,
              final String modernPlaceName) {
          if (modernPlaceName == null || modernPlaceName.isEmpty()) {
              return find(placeName);
          }
          logger.debug(
                  "find(\"" + placeName + "\", \"" + modernPlaceName + "\")");
          final GeoDocument geoDocument = getDocument(placeName);
          if (geoDocument != null) {
              // We found one.
              if (modernPlaceName.equals(geoDocument.getModernName())) {
                  // Modern name matches existing, so we don't have a change.
                  if (geoDocument.getResult() == null) {
                      return modernWithNoResult(placeName, modernPlaceName,
                              geoDocument);
                  } else {
                      // Fully formed return it.
                      return geoDocument.getGeoItem();
                  }
              } else {
                  // Modern place names don't match, replace.
                  // No result, try to get.
                  final GeocodingResult[] results = geoCoder.geocode(
                          modernPlaceName);
                  if (results.length == 0) {
                      return noModernResult(placeName, modernPlaceName);
                  } else {
                      return newModernResult(placeName, modernPlaceName, results);
                  }
              }
          }
  
          GeoCodeItem gcce;
          // Not found in cache. Let's see what we can find.
          final GeocodingResult[] results = geoCoder.geocode(modernPlaceName);
          if (results.length > 0) {
              /* Work with the first result. */
              gcce = new GeoCodeItem(placeName, modernPlaceName, results[0]);
          } else {
              // Not found, create empty.
              gcce = new GeoCodeItem(placeName, modernPlaceName);
          }
          add(gcce);
          return gcce;
      }
docs: {@inheritDoc}