docs: public void setProperties(Properties props) throws Exception {
  		// Use reflection to read in all possible properties of int, String or boolean.
  		for (Method method: BoneCPConfig.class.getDeclaredMethods()){
  			String tmp = null;
  			if (method.getName().startsWith("is")){
  				tmp = lowerFirst(method.getName().substring(2));
  			} else if (method.getName().startsWith("set")){
  				tmp = lowerFirst(method.getName().substring(3));
  			} else {
  				continue;
  			}
  
  			if (method.getParameterTypes().length == 1 && method.getParameterTypes()[0].equals(int.class)){
  				String val = props.getProperty(tmp);
  				if (val == null){
  					val = props.getProperty("bonecp."+tmp); // hibernate provider style
  				}
  				if (val != null) {
  					try{
  						method.invoke(this, Integer.parseInt(val));
  					} catch (NumberFormatException e){
  						// do nothing, use the default value
  					}
  				}
  			} else if (method.getParameterTypes().length == 1 && method.getParameterTypes()[0].equals(long.class)){
  				String val = props.getProperty(tmp);
  				if (val == null){
  					val = props.getProperty("bonecp."+tmp); // hibernate provider style
  				}
  				if (val != null) {
  					try{
  						method.invoke(this, Long.parseLong(val));
  					} catch (NumberFormatException e){
  						// do nothing, use the default value
  					}
  				}
  			} else if (method.getParameterTypes().length == 1 && method.getParameterTypes()[0].equals(String.class)){
  				String val = props.getProperty(tmp);
  				if (val == null){
  					val = props.getProperty("bonecp."+tmp); // hibernate provider style
  				}
  				if (val != null) {
  					method.invoke(this, val);
  				}
  			} if (method.getParameterTypes().length == 1 && method.getParameterTypes()[0].equals(boolean.class)){
  				String val = props.getProperty(tmp);
  				if (val == null){
  					val = props.getProperty("bonecp."+tmp); // hibernate provider style
  				}
  				if (val != null) {
  					method.invoke(this, Boolean.parseBoolean(val));
  				}
  			}
  		}
  	}