code: private static Object invokeMethod( final Object        obj,
                                          final String        methodName,
                                          final Object[]      args,
                                          final Class<?>[]    parameterTypes )
          throws
              UtilException
      {
          return invokeMethod( obj, obj.getClass(), methodName, args, parameterTypes );
      }
docs: We have an object and a method name, but in order to invoke
  a method on an object, we need the object's Class (type).
  
  Given this Class we can then check that such a method exists
  and throw an exception if it doesn't.
  
  @param obj to invoke method on
  @param methodName to invoke
  @param args to use
  @param parameterTypes types of arguments
  @return method result
  @throws net.crowmagnumb.util.UtilException if problem