docs: public boolean doesResourceMatch(Collection<ProductDefinition> productDefinitions, Visibility visibility) {
          ResourceType type = getType();
          if (ResourceType.FEATURE == type && visibility != null) {
              EsaResourceImpl esa = (EsaResourceImpl) this;
              Visibility visibilityMatches = esa.getVisibility() == null ? Visibility.PUBLIC : esa.getVisibility();
              if (!visibilityMatches.equals(visibility)) {
                  // Visibility is different, no match
                  return false;
              }
          }
  
          // If there is no product definitions defined then say it matches - not being filtered to a specific version
          boolean matches = productDefinitions == null || productDefinitions.isEmpty();
          if (productDefinitions != null) {
              for (ProductDefinition productDefinition : productDefinitions) {
                  if (matches(productDefinition) == MatchResult.MATCHED) {
                      matches = true;
                      break;
                  }
              }
          }
          return matches;
      }