code: @Override
    public void showErrors(final List<EditorError> errors) {
      final Set<String> messages = errors.stream().filter(error -> editorErrorMatches(error))
          .map(error -> error.getMessage()).distinct().collect(Collectors.toSet());
  
      if (messages.isEmpty()) {
        errorLabel.setText(StringUtils.EMPTY);
        errorLabel.getElement().getStyle().setDisplay(Display.NONE);
        if (contents.getWidget() != null) {
          contents.getWidget().removeStyleName(decoratorStyle.errorInputStyle());
          contents.getWidget().addStyleName(decoratorStyle.validInputStyle());
        }
      } else {
        if (contents.getWidget() != null) {
          contents.getWidget().removeStyleName(decoratorStyle.validInputStyle());
          contents.getWidget().addStyleName(decoratorStyle.errorInputStyle());
          if (focusOnError) {
            setFocus(true);
          }
        }
        final SafeHtmlBuilder sb = new SafeHtmlBuilder();
        messages.forEach(message -> {
          sb.appendEscaped(message);
          sb.appendHtmlConstant("<br />");
        });
        errorLabel.setHTML(sb.toSafeHtml());
        errorLabel.getElement().getStyle().setDisplay(Display.TABLE);
      }
    }
docs: The default implementation will display, but not consume, received errors whose
  {@link EditorError#getEditor() getEditor()} method returns the Editor passed into
  {@link #setEditor}.
  
  @param errors a List of {@link EditorError} instances