code: @SuppressWarnings("unchecked")
      private boolean shouldAddEnclosingValidator(
              EditableValueHolder component, 
              String validatorId)
      {
          // check if the validatorId is on the exclusion list on the component
          List<String> exclusionList = (List<String>) ((UIComponent) component)
                  .getAttributes()
                  .get(ValidatorTagHandlerDelegate.VALIDATOR_ID_EXCLUSION_LIST_KEY);
          if (exclusionList != null)
          {
              for (String excludedId : exclusionList)
              {
                  if (excludedId.equals(validatorId))
                  {
                      return false;
                  }
              }
          }
  
          // Some extra rules are required for Bean Validation.
          if (validatorId.equals(BeanValidator.VALIDATOR_ID) &&
              !ExternalSpecifications.isBeanValidationAvailable())
          {
              // the BeanValidator was added as a default-validator, but
              // bean validation is not available on the classpath.
              // --> log a warning about this scenario.
              log.log(Level.WARNING,
                      "Bean validation is not available on the "
                              + "classpath, thus the BeanValidator will not be added for "
                              + "the component " + component);
              return false;
          }
  
          // By default, all default validators should be added
          return true;
      }
docs: Determine if the validator with the given validatorId should be added.
  
  The difference here with shouldAddEnclosingValidator is the inner one has
  precedence over the outer one, so a disable="true" over the same outer
  validator, the inner one should ignore this condition.
  
  @param mctx
  @param facesContext
  @param component
  @param validatorId
  @return