code: protected MESSAGES resolveTypeFailure(Object form, MESSAGES messages) {
          final TypeFailureBean failureBean = findFailureBeanOnThread(form);
          if (failureBean == null || !failureBean.hasFailure()) {
              return messages;
          }
          final Map<String, TypeFailureElement> elementMap = failureBean.getElementMap();
          final MESSAGES newMsgs = prepareActionMessages();
          for (String property : messages.toPropertySet()) {
              final TypeFailureElement element = elementMap.get(property);
              if (element != null) { // already exists except type failure
                  handleTypeFailureGroups(element); // may be bad request
                  for (Iterator<UserMessage> ite = messages.silentAccessByIteratorOf(property); ite.hasNext();) {
                      final UserMessage current = ite.next();
                      if (current.getValidatorAnnotation().filter(anno -> {
                          return anno instanceof NotNull || anno instanceof Required;
                      }).isPresent()) {
                          continue; // remove required annotations because they were born by type failure's null
                      }
                      newMsgs.add(property, current);
                  }
                  newMsgs.add(property, createTypeFailureActionMessage(element)); // add to existing property
              } else { // properties not related with type failures
                  for (Iterator<UserMessage> ite = messages.silentAccessByIteratorOf(property); ite.hasNext();) {
                      newMsgs.add(property, ite.next()); // add no-related property
                  }
              }
          }
          for (TypeFailureElement element : elementMap.values()) {
              final String property = element.getPropertyPath();
              if (!messages.hasMessageOf(property)) { // no other validation error
                  handleTypeFailureGroups(element); // may be bad request
                  newMsgs.add(property, createTypeFailureActionMessage(element)); // add as new message for the proeprty
              }
          }
          return newMsgs;
      }
docs: ============