code: public static void callMethod(final Object obj, final String methodName, final boolean includePrivateMehtods, final Object... args)
  			throws InvocationTargetException {
  		final Class[] intArgsClass = initParamsClasses(args);
  		try {
  			Class<?> current = obj.getClass();
  			Method method = null;
  			while (current != Object.class) {
  				try {
  					method = current.getDeclaredMethod(methodName, intArgsClass);
  					break;
  				} catch (final NoSuchMethodException ex) {
  					current = current.getSuperclass();
  				}
  			}
  			if (method == null) {
  				throw new NoSuchMethodException("Mehtod is not found in " + current);
  			}
  			method.setAccessible(true);
  			method.invoke(obj, args);
  		} catch (final InvocationTargetException e) {
  			throw new InvocationTargetException(e.getCause());
  		} catch (final Exception e) {
  			throw new InvocationTargetException(e);
  		}
  	}
docs: ////////////////////////////////////////////////////////////////////////////////////////////////////////////////