### Question:
Combinator { public static List<int[]> computeSubCombinations(int[] combination, int size) { Preconditions.notNull(combination); Preconditions.check(size >= 0); return computeSubCombinationsRecursively(combination, emptyCombination(combination.length), 0, size); } private  Combinator(); static List<int[]> computeCartesianProduct(Int2IntMap parameters, int combinationSize); static List<IntSet> computeParameterCombinations(int[] parameters, int size); static List<IntSet> computeNegativeParameterCombinations(int[] parameters, int[] negativeParameters, int size); static Set<int[]> computeCombinations(int[] parameters, int size); static List<int[]> computeSubCombinations(int[] combination, int size); static List<int[]> computeSubCombinations(int[] combination);  }### Answer:
@Test void preconditionsOfComputeSubCombinationsOfSize() { assertThrows(NullPointerException.class, () -> Combinator.computeSubCombinations(null, 1)); assertThrows(IllegalArgumentException.class, () -> Combinator.computeSubCombinations(CombinationUtil.emptyCombination(2), -1)); }
@Test void preconditionsOfComputeSubCombinations() { assertThrows(NullPointerException.class, () -> Combinator.computeSubCombinations(null)); }