code: @Override
    public void setupValueChangedListeners() {
      super.setupValueChangedListeners();
  
      field.itemsProperty().addListener(
          (observable, oldValue, newValue) -> node.setItems(field.getItems())
      );
  
      field.selectionProperty().addListener((observable, oldValue, newValue) -> {
        if (preventUpdate) {
          return;
        }
  
        preventUpdate = true;
  
        for (int i = 0; i < field.getItems().size(); i++) {
          if (field.getSelection().contains(field.getItems().get(i))) {
            node.getSelectionModel().select(i);
          } else {
            node.getSelectionModel().clearSelection(i);
          }
        }
  
        preventUpdate = false;
      });
  
      field.errorMessagesProperty().addListener(
          (observable, oldValue, newValue) -> toggleTooltip(node)
      );
      field.tooltipProperty().addListener((observable, oldValue, newValue) -> toggleTooltip(node));
      node.focusedProperty().addListener((observable, oldValue, newValue) -> toggleTooltip(node));
    }
docs: {@inheritDoc}