org_aspectj_testing_xml_AjcSpecXmlReaderTest_java
org.apache.commons.beanutils.PropertyUtils
public static PropertyDescriptor getPropertyDescriptor(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
        int period;
        if (bean == null) {
            throw new IllegalArgumentException("No bean specified");
        }
        if (name == null) {
            throw new IllegalArgumentException("No name specified");
        }
        while ((period = name.indexOf(46)) >= 0) {
            String next = name.substring(0, period);
            int indexOfINDEXED_DELIM = next.indexOf(91);
            int indexOfMAPPED_DELIM = next.indexOf(40);
            bean = indexOfMAPPED_DELIM >= 0 && (indexOfINDEXED_DELIM < 0 || indexOfMAPPED_DELIM < indexOfINDEXED_DELIM) ? PropertyUtils.getMappedProperty(bean, next) : (indexOfINDEXED_DELIM >= 0 ? PropertyUtils.getIndexedProperty(bean, next) : PropertyUtils.getSimpleProperty(bean, next));
            if (bean == null) {
                throw new IllegalArgumentException("Null property value for '" + name.substring(0, period) + "'");
            }
            name = name.substring(period + 1);
        }
        int left = name.indexOf(91);
        if (left >= 0) {
            name = name.substring(0, left);
        }
        if ((left = name.indexOf(40)) >= 0) {
            name = name.substring(0, left);
        }
        if (bean == null || name == null) {
            return null;
        }
        PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(bean);
        if (descriptors != null) {
            int i = 0;
            while (i < descriptors.length) {
                if (name.equals(descriptors[i].getName())) {
                    return descriptors[i];
                }
                ++i;
            }
        }
        PropertyDescriptor result = null;
        FastHashMap mappedDescriptors = PropertyUtils.getMappedPropertyDescriptors(bean);
        if (mappedDescriptors != null) {
            result = (PropertyDescriptor)mappedDescriptors.get(name);
        }
        if (result == null) {
            try {
                result = new MappedPropertyDescriptor(name, (Class)bean.getClass());
            }
            catch (IntrospectionException ie) {
                // empty catch block
            }
        }
        if (result != null) {
            mappedDescriptorsCache.put(name, result);
        }
        return result;
    }
 -> java.lang.String.indexOf(int): int -> java.lang.String.indexOf(int): int -> java.lang.String.indexOf(int): int -> java.lang.Object.getClass(): java.lang.Class -> java.util.HashMap.get(java.lang.Object): java.lang.Object -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean
 [CALL] -> java.lang.String.indexOf(int): int -> java.lang.String.indexOf(int): int -> java.lang.String.indexOf(int): int [CALL] -> java.lang.Object.getClass(): java.lang.Class [CALL] [CALL] -> java.util.HashMap.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.beans.PropertyDescriptor.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean [EXIT]