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;
  }
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 ; }
/*
Will generate all combinations by the given classification tree.
The result is returned as list, where each row represent the combination.