public Collection<String> readableProps(Object m) {
		LinkedList<String> res = new LinkedList<String>();
		for(PropertyDescriptor pd : info(m).getPropertyDescriptors()) {
			Method getter = pd.getReadMethod();
			String prop = pd.getName();
			if(getter != null && ! skipProps.contains(prop)) {
				res.add(prop);
			}
		}
		return res;
	}
public Collection < String > readableProps ( Object m ) { LinkedList < String > res = new LinkedList < String > ( ) ; for ( PropertyDescriptor pd : info ( m ) . getPropertyDescriptors ( ) ) { Method getter = pd . getReadMethod ( ) ; String prop = pd . getName ( ) ; if ( getter != null && ! skipProps . contains ( prop ) ) { res . add ( prop ) ; } } return res ; }
TODO private WeakHashMap<Object, BeanInfo> cache = new WeakHashMap<Object, BeanInfo>();