protected void collectProperties(Class<?> type,Type<?> referenceType,Map<String,Property> properties){
  try {
    BeanInfo beanInfo=Introspector.getBeanInfo(type);
    PropertyDescriptor[] descriptors=beanInfo.getPropertyDescriptors();
    for (    final PropertyDescriptor pd : descriptors) {
      try {
        Method readMethod=getReadMethod(pd,type);
        Method writeMethod=getWriteMethod(pd,type,null);
        Property property=processProperty(pd.getName(),pd.getPropertyType(),readMethod,writeMethod,type,referenceType,properties);
        postProcessProperty(property,pd,readMethod,writeMethod,type,referenceType,properties);
      }
 catch (      final Exception e) {
        throw new RuntimeException("Unexpected error while trying to resolve property " + referenceType.getCanonicalName() + ", ["+ pd.getName()+ "]",e);
      }
    }
  }
 catch (  IntrospectionException e) {
    throw new RuntimeException(e);
  }
}

protected void collectProperties ( Class < ? > type , Type < ? > referenceType , Map < String , Property > properties ) { try { BeanInfo beanInfo = Introspector . getBeanInfo ( type ) ; PropertyDescriptor [ ] descriptors = beanInfo . getPropertyDescriptors ( ) ; for ( final PropertyDescriptor pd : descriptors ) { try { Method readMethod = getReadMethod ( pd , type ) ; Method writeMethod = getWriteMethod ( pd , type , null ) ; Property property = processProperty ( pd . getName ( ) , pd . getPropertyType ( ) , readMethod , writeMethod , type , referenceType , properties ) ; postProcessProperty ( property , pd , readMethod , writeMethod , type , referenceType , properties ) ; } catch ( final Exception e ) { throw new RuntimeException ( "Unexpected error while trying to resolve property " + referenceType . getCanonicalName ( ) + ", [" + pd . getName ( ) + "]" , e ) ; } } } catch ( IntrospectionException e ) { throw new RuntimeException ( e ) ; } }
collects all properties for the specified type .
