protected void setValueByName(String name, Object value) {
		Method method = getMethod(name, SetterPrevNames, setterContainer);
		try{
			if(value != null) {
				Class<?> type = method.getParameters()[0].getType();
				if(value instanceof Integer && type.equals(Long.class)) {
					value = Long.valueOf((Integer)value);
				} else if(value instanceof Float && type.equals(Double.class)) {
					value = Double.valueOf((Float)value);
				}
			}
			method.invoke(this, value);
		}	catch(Exception e) {
			System.err.println("invoke err from " + method.getDeclaringClass().getName());
			System.err.println("set \"" + name + "\" " + value + " ("+(value == null?"void":value.getClass().getName())+")");
			System.err.println(method);
			throw new RuntimeException(e);
		}
	}