code: private boolean checkSimpleExpression(String tagExpression, List<String> scenarioTags) {
          Set<String> expressionTags = extractTagsFromSimpleExpression(tagExpression);
  
          for (String expressionTag : expressionTags) {
              if (expressionTag.startsWith("@")) {
                  if (!scenarioTags.contains(expressionTag)) {
                      //this tag is not listed on the scenario so don't execute
                      return false;
                  }
              } else if (expressionTag.startsWith("!")) {
                  String expressionTagWithoutNot = expressionTag.substring(1, expressionTag.length());
                  if (scenarioTags.contains(expressionTagWithoutNot)) {
                      //this is a negated tag and it exists on the scenario so don't execute
                      return false;
                  }
              } else {
                  throw new IllegalStateException(String.format("'%s' is not a valid tag, no @ or !@ prefix", expressionTag));
              }
          }
  
          //there are no reasons left for not executing
          return true;
      }
docs: Checks a simple expression (i.e. one that does not contain the or '|' operator)
  
  @param tagExpression a simple tag expression
  @param scenarioTags  tags present on a scenario
  @return true iff the scenarion should be executed