code: public List<List<Classification.RuntimeClassification>> generate() {
      List<Classification.RuntimeClassification> classes = getClassifications();
      List<List<Classification.RuntimeClassification>> treeData = new ArrayList<>();
      for (Classification.RuntimeClassification cls : classes) {
        treeData.add(cls.getClassifications());
      }
  
      combinations = new ArrayList<>();
      getCombinations(treeData, 0, new ArrayList<>());
      return combinations;
    }
docs: /*
  Will generate all combinations by the given classification tree.
  The result is returned as list, where each row represent the combination.