public static Method findServiceMethod(final Class objectClass, final String methodName, final Object[] params)
        throws NoSuchMethodException {

        Method serviceMethod = null;
        if (params == null || params.length == 0)
            serviceMethod = objectClass.getMethod(methodName, (Class[]) null);
        else {
            for (Method method : objectClass.getMethods()) {

                if (!methodName.equals(method.getName()))
                    continue;

                Type[] paramTypes = method.getGenericParameterTypes();
                if (paramTypes.length != params.length)
                    continue;

                if (canConvertForMethodInvocation(params, paramTypes)) {
                    serviceMethod = method;
                    break;
                }
            }
        }

        if (serviceMethod == null)
            throw new NoSuchMethodException(objectClass.getName() + '.' + methodName + StringUtil.toString(params));

        return serviceMethod;
    }