code: 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;
  	}
docs: TODO private WeakHashMap<Object, BeanInfo> cache = new WeakHashMap<Object, BeanInfo>();