public List<Set<String>> makeNWiseTuples(String[] variables, int nWise) {
        List<Set<String>> completeTuples = new ArrayList<>();
        makeNWiseTuplesHelper(completeTuples, variables, 0, new HashSet<String>(), nWise);

        return completeTuples;
    }
public List < Set < String > > makeNWiseTuples ( String [ ] variables , int nWise ) { List < Set < String > > completeTuples = new ArrayList < > ( ) ; makeNWiseTuplesHelper ( completeTuples , variables , 0 , new HashSet < String > ( ) , nWise ) ; return completeTuples ; }
Produces all tuples of size n chosen from a list of variable names

@param variables the list of variable names to make tuples of
@param nWise     the size of the desired tuples
@return all tuples of size nWise