private void callSetter(HashMap<String, String> headerToFieldMap, T instance, Method method,
                            CSVMapperSetterMethod annotation, Class<?> parameterType) {
        Class<?> wrapperType;

        if (parameterType.isPrimitive()) {
            wrapperType = wrapperMap.get(parameterType);
        } else {
            wrapperType = parameterType;
        }

        try {
            Object fieldValue = headerToFieldMap.get(annotation.fieldName());
            Object fieldValueAsCorrectType;

            fieldValueAsCorrectType = getFieldValueAsCorrectType(wrapperType, fieldValue);
            method.invoke(instance, fieldValueAsCorrectType);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        } catch (InvocationTargetException e) {
            throw new RuntimeException(e);
        }
    }