docs: private final BeanProperty toBeanProperty(Object base, Object property) {
  		BeanProperties beanProperties = cache.get(base.getClass());
  		if (beanProperties == null) {
  			BeanProperties newBeanProperties = new BeanProperties(base.getClass());
  			beanProperties = cache.putIfAbsent(base.getClass(), newBeanProperties);
  			if (beanProperties == null) { // put succeeded, use new value
  				beanProperties = newBeanProperties;
  			}
  		}
  		BeanProperty beanProperty = property == null ? null : beanProperties.getBeanProperty(property.toString());
  		if (beanProperty == null) {
  			throw new PropertyNotFoundException("Could not find property " + property + " in " + base.getClass());
  		}
  		return beanProperty;
  	}