docs: private void findAndInvokeCompatibleSetter(SetterTarget target, String value) throws IllegalAccessException,
  			InvocationTargetException, NoSuchMethodError
  	{
  		Object _objectToChange = target.getObjectToChange();
  		Method[] _declaredMethods = _objectToChange.getClass().getDeclaredMethods();
  		String _setterName = target.getSetterName();
  		for (Method _candidate : _declaredMethods)
  		{
  			if (_candidate.getName().equals(_setterName))
  			{
  				Class<?>[] _parameterTypes = _candidate.getParameterTypes();
  				if (_parameterTypes.length != 1)
  				{
  					continue;
  				}
  				Class<?> _class = _parameterTypes[0];
  				if (_class == String.class)
  				{
  					// no conversion
  					_candidate.invoke(_objectToChange, value);
  					return;
  				}
  				else if (_class == Integer.TYPE)
  				{
  					_candidate.invoke(_objectToChange, Integer.parseInt(value));
  					return;
  				}
  				else if (_class == Long.TYPE)
  				{
  					_candidate.invoke(_objectToChange, Long.parseLong(value));
  					return;
  
  				}
  				else if (_class == Float.TYPE)
  				{
  					_candidate.invoke(_objectToChange, Float.parseFloat(value));
  					return;
  
  				}
  				else if (_class == Double.TYPE)
  				{
  					_candidate.invoke(_objectToChange, Double.parseDouble(value));
  					return;
  
  				}
  				else if (_class == Boolean.TYPE)
  				{
  					_candidate.invoke(_objectToChange, Boolean.parseBoolean(value));
  					return;
  				}
  			}
  		}
  		throw new NoSuchMethodError(_setterName);
  	}