code: public List<Map<String, String>> pipelinePossibleStates(FileTag action,
                                                              List<Map<String, String>> possibleStateList) {
          String variable = action.getName();
          String fileName = action.getFileName();
          String fileSeparator = action.getFileSeparator();
  
          Set<String> domain = new HashSet<String>();
          if (fileName != null && fileName.length() > 0) {
              generateFileValues(domain, fileName, fileSeparator);
          }
  
          //take the product
          List<Map<String, String>> productTemp = new LinkedList<>();
          for (Map<String, String> p : possibleStateList) {
              for (String value : domain) {
                  HashMap<String, String> n = new HashMap<>(p);
                  n.put(variable, value);
                  productTemp.add(n);
              }
          }
  
          return productTemp;
      }
docs: Performs variable assignments from a set of values
  
  @param action a SetAssignTag Action
  @param possibleStateList a current list of possible states produced so far from expanding a model state
  
  @return the cartesian product of every current possible state and the set of values specified by action