class ReflectionPropertyDispatcher implements PropertyDispatcher {

    @Override
    public Class<?> getValueClass() {
        Object boundObject = getBoundObject();
        if (boundObject != null && hasReadMethod(getProperty())) {
            Class<?> valueClass = getAccessor(getProperty()).getValueClass();
            return valueClass;
        } else {
            return fallbackDispatcher.getValueClass();
        }
    }

    public  ReflectionPropertyDispatcher(Supplier<?> boundObjectSupplier, String property,
            PropertyDispatcher fallbackDispatcher);

}