code: private static List<Token> addParentheses(List<Token> tokens) {
          List<Token> result = new ArrayList<Token>();
          result.add(new Token(TokenType.OPENING, "("));
          for (Token token : tokens) {
              if (token.type == TokenType.OR) {
                  result.add(new Token(TokenType.CLOSING, ")"));
                  result.add(token);
                  result.add(new Token(TokenType.OPENING, "("));
              } else {
                  result.add(token);
              }
          }
          result.add(new Token(TokenType.CLOSING, ")"));
          return result;
      }
docs: Return parenthesized expression, giving lowest priority to OR operator
  
  @param tokens the tokens contained in the requirement string
  
  @return the tokens with parenthesis