class BehaviorDependentDispatcher extends AbstractPropertyDispatcherDecorator {

    @SuppressWarnings("unchecked")
    @Override
    public <T> T pull(Aspect<T> aspect) {
        if (aspect.getName().equals(VisibleAspectDefinition.NAME) &&
                !isConsensus(forBoundObjectAndProperty(PropertyBehavior::isVisible))) {
            return (T)Boolean.FALSE;
        } else {
            return super.pull(aspect);
        }
    }

    public  BehaviorDependentDispatcher(PropertyDispatcher wrappedDispatcher,
            PropertyBehaviorProvider provider);

}