private Map<String, PropertyDescriptor> resolveProperties(Class<?> clazz) {
    final Map<String, PropertyDescriptor> descriptors = 
      new HashMap<String, PropertyDescriptor>();
    
    new ClassWalkingLogic(clazz).walk(new ClassVisitor() {
      public void visit(Class<?> clazz) {
        PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(clazz);
        for (PropertyDescriptor descriptor : pds) {
          descriptors.put(descriptor.getName(), descriptor);
        }