docs: protected List<ValidationContext> parseValidationContexts(Element messageElement, BeanDefinitionBuilder builder) {
          List<ValidationContext> validationContexts = new ArrayList<>();
          if (messageElement != null) {
              String messageType = messageElement.getAttribute("type");
              if (!StringUtils.hasText(messageType)) {
                  messageType = Citrus.DEFAULT_MESSAGE_TYPE;
              } else {
                  builder.addPropertyValue("messageType", messageType);
              }
  
              HeaderValidationContext headerValidationContext = new HeaderValidationContext();
              validationContexts.add(headerValidationContext);
  
              String headerValidator = messageElement.getAttribute("header-validator");
              if (StringUtils.hasText(headerValidator)) {
                  headerValidationContext.addHeaderValidator(headerValidator);
              }
  
              String headerValidatorExpression = messageElement.getAttribute("header-validators");
              if (StringUtils.hasText(headerValidatorExpression)) {
                  Stream.of(headerValidatorExpression.split(","))
                          .map(String::trim)
                          .forEach(headerValidationContext::addHeaderValidator);
              }
  
              XmlMessageValidationContext xmlMessageValidationContext = getXmlMessageValidationContext(messageElement);
              validationContexts.add(xmlMessageValidationContext);
  
              XpathMessageValidationContext xPathMessageValidationContext = getXPathMessageValidationContext(messageElement, xmlMessageValidationContext);
              if (!xPathMessageValidationContext.getXpathExpressions().isEmpty()) {
                  validationContexts.add(xPathMessageValidationContext);
              }
  
              JsonMessageValidationContext jsonMessageValidationContext = getJsonMessageValidationContext(messageElement);
              validationContexts.add(jsonMessageValidationContext);
  
              JsonPathMessageValidationContext jsonPathMessageValidationContext = getJsonPathMessageValidationContext(messageElement);
              if (!jsonPathMessageValidationContext.getJsonPathExpressions().isEmpty()) {
                  validationContexts.add(jsonPathMessageValidationContext);
              }
  
              ScriptValidationContext scriptValidationContext = getScriptValidationContext(messageElement, messageType);
              if (scriptValidationContext != null) {
                  validationContexts.add(scriptValidationContext);
              }
  
              ManagedList<RuntimeBeanReference> validators = new ManagedList<>();
              String messageValidator = messageElement.getAttribute("validator");
              if (StringUtils.hasText(messageValidator)) {
                  validators.add(new RuntimeBeanReference(messageValidator));
              }
  
              String messageValidatorExpression = messageElement.getAttribute("validators");
              if (StringUtils.hasText(messageValidatorExpression)) {
                  Stream.of(messageValidatorExpression.split(","))
                          .map(String::trim)
                          .map(RuntimeBeanReference::new)
                          .forEach(validators::add);
              }
  
              if (!validators.isEmpty()) {
                  builder.addPropertyValue("validators", validators);
              }
  
              String dataDictionary = messageElement.getAttribute("data-dictionary");
              if (StringUtils.hasText(dataDictionary)) {
                  builder.addPropertyReference("dataDictionary", dataDictionary);
              }
          } else {
              validationContexts.add(new HeaderValidationContext());
          }
  
          return validationContexts;
      }