docs: public <T> T resultToJava(DatabaseResults results, Map<String, Integer> columnPositions) throws SQLException {
  		Integer dbColumnPos = columnPositions.get(columnName);
  		if (dbColumnPos == null) {
  			dbColumnPos = results.findColumn(columnName);
  			columnPositions.put(columnName, dbColumnPos);
  		}
  
  		/*
  		 * Subtle problem here. If the field is a foreign-field and/or a primitive and the value was null then we get 0
  		 * from results.getInt() which mirrors the ResultSet. We have to specifically test to see if we have a null
  		 * result with results.wasNull(...) afterwards so we return a null value to not create the sub-object or turn a
  		 * Integer field into 0 instead of null.
  		 * 
  		 * But this presents a limitation. Sometimes people want to convert a result field value that is stored in the
  		 * database as null into a non-null value when it comes out of the database. There is no way to do that because
  		 * of the results.wasNull(...) checks after the fact then override the non-null value from the converter.
  		 */
  		@SuppressWarnings("unchecked")
  		T converted = (T) fieldConverter.resultToJava(this, results, dbColumnPos);
  		if (fieldConfig.isForeign()) {
  			/*
  			 * If your foreign field is a primitive and the value was null then this would return 0 from
  			 * results.getInt(). We have to specifically test to see if we have a foreign field so if it is null we
  			 * return a null value to not create the sub-object.
  			 */
  			if (results.wasNull(dbColumnPos)) {
  				return null;
  			}
  		} else if (dataPersister.isPrimitive()) {
  			if (fieldConfig.isThrowIfNull() && results.wasNull(dbColumnPos)) {
  				throw new SQLException(
  						"Results value for primitive field '" + field.getName() + "' was an invalid null value");
  			}
  		} else if (!fieldConverter.isStreamType() && results.wasNull(dbColumnPos)) {
  			// we can't check if we have a null if this is a stream type
  			return null;
  		}
  		return converted;
  	}