@SuppressWarnings("unchecked")
  final <T> void setMapping(String property, Mapper<? super S, ? extends T> e, String source) {
    try {
      mapper.addMapperForProperty(property, e, currentTypes, source);
      if (e instanceof EntityMapper) {
        ((EntityMapper<?, ?>) e).init();
      }
      Mapper<S, Object> old = extractors.put(property, (Mapper<S, Object>) e);
      log.info(String.format("%s property '%s'",
          (old == null ? "Mapped" : "Remapped"), property));
    } catch (Exception ex) {
      log.warn(buildExceptionMessage(ex));
      log.warn("→  " + source);
    }
  }