code: @SuppressWarnings({ "rawtypes", "unchecked" })
  	public void callMethod(final MethodCallInfo info) {
  		try {
  			MethodsCaller.logger.info("loading class : ".concat(info.getClassName()));
  			final Class clas = getClass().getClassLoader().loadClass(info.getClassName());
  			MethodsCaller.logger.info("calling default constructor");
  			final Object object = clas.newInstance();
  			MethodsCaller.logger.info("calling method : " + info.getMethodName() + " , with params: ".concat(Arrays.toString(info.getParamters())));
  			final Method method = clas.getMethod(info.getMethodName(), info.getParamtersTypes());
  			final Object result = method.invoke(object, info.getParamters());
  			if (!(result instanceof Serializable)) {
  				throw new IllegalStateException("object " + result + " from type " + result.getClass().getName() + " is not serialzable");
  			}
  			info.setResult(result);
  		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException
  				| IllegalArgumentException | InvocationTargetException e) {
  			MethodsCaller.logger.severe("calling to method failed : ".concat(info.toString()));
  			throw new RemoteReflectionException(e);
  		}
  	}
docs: Get the required information from {@link MethodCallInfo} object , and then
  call it using java standard reflection API.
  
  @param info the info