public static Method findSetter(final Object object, final String fieldName, final Class<?> argumentType) {
		if( object == null ) {
			throw new NullPointerException("object should not be null");
		} else if( fieldName == null ) {
			throw new NullPointerException("fieldName should not be null");
		} else if( argumentType == null ) {
			throw new NullPointerException("argumentType should not be null");
		}
		
		final String setterName = getMethodNameForField(SET_PREFIX, fieldName);
		final Class<?> clazz = object.getClass();
		
		// find a setter compatible with the supplied argument type
		Method setter = findSetterWithCompatibleParamType(clazz, setterName, argumentType);
		
		// if that failed, try the corresponding primitive/wrapper if it's a type that can be autoboxed/unboxed
		if( setter == null && AUTOBOXING_CONVERTER.containsKey(argumentType) ) {
			setter = findSetterWithCompatibleParamType(clazz, setterName, AUTOBOXING_CONVERTER.get(argumentType));
		}
		
		if( setter == null ) {
			throw new SuperCsvReflectionException(
				String
					.format(
						"unable to find method %s(%s) in class %s - check that the corresponding nameMapping element matches the field name in the bean, "
							+ "and the cell processor returns a type compatible with the field", setterName,
						argumentType.getName(), clazz.getName()));
		}
		
		return setter;
	}