private Object[] getArgs(Object[] arguments) throws Exception {
        if (eventPropertyName == null) {
            return new Object[0];
        } else if ((arguments == null) || (arguments.length == 0)) {
            return arguments;
        } else {
            Object arg = arguments[0];
            StringTokenizer st = new StringTokenizer(eventPropertyName, "."); //$NON-NLS-1$

            while (st.hasMoreTokens()) {
                String propertyName = st.nextToken();
                PropertyDescriptor pd = findPropertyDescriptor(arg.getClass(),
                        propertyName);

                Method getMethod = null;
                if (pd != null) {
                    getMethod = pd.getReadMethod();

                    if (getMethod != null) {
                        arg = getMethod.invoke(arg, new Object[] {});
                    } else {
                        throw new IntrospectionException(Messages.getString(
                                "beans.11", propertyName)); //$NON-NLS-1$
                    }
                } else {
                    getMethod = findStaticGetter(arg.getClass(), propertyName);

                    if (getMethod != null) {
                        arg = getMethod.invoke(null, new Object[] {});
                    } else {
                        // cannot access property getter
                        // RI throws NPE here so we should do the same
                        throw new NullPointerException(Messages.getString(
                                "beans.12", propertyName)); //$NON-NLS-1$
                    }
                }
            }
            return new Object[] { arg };
        }
    }