docs: private static void setPropertyAsText(Object bean, String name, String value, PropertyDescriptor pd, Class<?> propCls, Class<? extends Annotation> tagCls) throws IntrospectionException, IllegalAccessException, InvocationTargetException, InstantiationException
  
  	{
  		PropertyEditor propEdit;
  		Object propVal;
  		Method meth;
  
  		// can we use a property editor?
  		// OK, for some stupid reason, Integer.class isn't registered but Integer.TYPE is
  		logger.debug("finding PropertyEditor for {}", propCls);
  		if((propEdit = PropertyEditorManager.findEditor(Reflections.primitiveIfWrapper(propCls)))==null)
  			throw new IllegalArgumentException("No property editor for type " + propCls.getName() + '.');
  
  		propEdit.setValue(null);
  		propEdit.setAsText(value);
  		propVal = propEdit.getValue();
  
  		if((meth=pd.getWriteMethod())==null)
  			throw new IllegalArgumentException("Property " + name + " of class " + bean.getClass().getName() + " cannot be written.");
  		if(tagCls!=null&&!meth.isAnnotationPresent(tagCls))
  			throw new IllegalArgumentException("Write method " + meth + " for property " + name + " of class " + bean.getClass() + " does not have annotation " + tagCls + '.');
  		meth.invoke(bean, propVal);
  	}