public static Method getZeroArgMethod(Class cls, String methodName)
    {
        Assert.notNull(cls, "cls cannot be null");
        Assert.notNull(methodName, "methodName cannot be null");
        
        // First check for method using getMethod()
        Method method = null;
        try
        {
            method = cls.getMethod(methodName, new Class[0]);
        }
        catch(NoSuchMethodException ignore) {}
        
        // If that fails, use getDeclaredMethod() going up the class hierarchy
        Class sup = cls;
        while(null == method && sup != null)
        {
            try
            {
                method = sup.getDeclaredMethod(methodName, new Class[0]);
            }
            catch(NoSuchMethodException ignore) {}
            sup = sup.getSuperclass();
        }
        
        // Last resort: throw IllegalArgumentException
        if(method == null)
        {
            throw new IllegalArgumentException(
                "Cannot find \"" + methodName + "\" method on : " + cls
            );
        }
        return method;
    }