anchor.diff:  ----
   --
   
  -Defining an error handler when saving::
  -+
  ---
  -[source, java]
  -----
  -binder.writeBean(person,
  -  // Callback invoked if there is an error
  -  errors ->  {
  -    Notification.show("Validation error count: "
  -      + errors.size())
  -  }
  -);
  -----
  ---
  -
   Checking a return value::
   +
   --
   [source, java]
   ----
   boolean saved = binder.writeBeanIfValid(person);
  -if (!saved) {
  +if (saved) {
  +  MyBackend.updatePersonInDatabase(person);
  +} else {
     Notification.show("Validation error count: "
       + binder.getValidationErrors().size());
   }
  
positive.code: [source, java]
  ----
  binder.addStatusChangeListener(event -> {
    // isValid() only checks the status, but doesn't make all
    // validation errors visible in the way that validate() does
    boolean isValid = binder.isValid();
    boolean hasChanges = binder.hasChanges();
  
    saveButton.setEnabled(hasChanges && isValid);
  
negative.code: 
  ----
  
  Multiple validators and converters can be used for building one binding.
  Each validator or converter is used in the order they were defined for a value provided by the user.
  The value is passed along until a final converted value is stored in the business objet, or until the first validation error or impossible conversion is encountered.
  When updating the UI components, values from the business object are passed through each converter in the reverse order without doing any validation.
  
  [NOTE]
  A converter can be used as a validator but for code clarity and to avoid boilerplate code, you should use a validator when checking the contents and a converter when modifying the value.
  