public static void callSetter(Object o, String prop,Object value) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
prop="set"+StringUtil.ucFirst(prop);
Class c=o.getClass();
//Class[] cArg=new Class[]{value.getClass()};
Object[] oArg=new Object[]{value};
MethodParameterPair mp = getMethodParameterPairIgnoreCase(c, prop, oArg);
//Method m=getMethodIgnoreCase(c,prop,cArg);
if(!mp.getMethod().getReturnType().getName().equals("void"))
throw new NoSuchMethodException("invalid return Type, method ["+mp.getMethod().getName()+"] must have return type void, now ["+mp.getMethod().getReturnType().getName()+"]");
mp.getMethod().invoke(o,mp.getParameters());
}