### Question:
ComplexOomage implements Oomage { public static ComplexOomage randomComplexOomage() { int N = StdRandom.uniform(1, 10); ArrayList<Integer> params = new ArrayList<>(N); for (int i = 0; i < N; i += 1) { params.add(StdRandom.uniform(0, 255)); } return new ComplexOomage(params); } ComplexOomage(List<Integer> params); @Override int hashCode(); @Override boolean equals(Object o); @Override void draw(double x, double y, double scalingFactor); static ComplexOomage randomComplexOomage(); static void main(String[] args);  }### Answer:
@Test public void testWithDeadlyParams() { List<Oomage> deadlyList = new ArrayList<>(); for (int i = 0; i < 167772; i++) { deadlyList.add(ComplexOomage.randomComplexOomage()); } assertTrue(OomageTestUtility.haveNiceHashCodeSpread(deadlyList, 256)); }
@Test public void testRandomOomagesHashCodeSpread() { List<Oomage> oomages = new ArrayList<>(); int N = 10000; for (int i = 0; i < N; i += 1) { oomages.add(ComplexOomage.randomComplexOomage()); } assertTrue(OomageTestUtility.haveNiceHashCodeSpread(oomages, 10)); }