/** @return a new instance of the jdbcMapper based on the current state of the builder. */
  public final M mapper() {
    Mapper<S, T> mapper = fieldMapperMapperBuilder.mapper();

    if (fieldMapperMapperBuilder.hasJoin()) {
      return newJoinJdbcMapper(mapper);
    } else {
      return newStaticJdbcMapper(mapper);
    }
  }
 @SuppressWarnings("unchecked")
 public final B addMapping(K key, FieldMapperColumnDefinition<K> columnDefinition) {
   fieldMapperMapperBuilder.addMapping(key, columnDefinition);
   return (B) this;
 }
 @SuppressWarnings("unchecked")
 public final B addMapping(K key, ColumnProperty... properties) {
   fieldMapperMapperBuilder.addMapping(key, FieldMapperColumnDefinition.<K>of(properties));
   return (B) this;
 }
 /**
  * append a FieldMapper to the mapping list.
  *
  * @param mapper the field jdbcMapper
  * @return the current builder
  */
 @SuppressWarnings("unchecked")
 public final B addMapper(FieldMapper<S, T> mapper) {
   fieldMapperMapperBuilder.addMapper(mapper);
   return (B) this;
 }