### Question:
UnusedParameters implements Deobfuscator { @Override public void run(ClassGroup group) { int i; int pnum = 1; do { group.buildClassGraph(); invokes.clear(); this.buildUnused(group); Execution execution = new Execution(group); execution.addExecutionVisitor(ictx -> visit(ictx)); execution.populateInitialMethods(); execution.run(); i = this.processUnused(execution, group); count += i; break; } while (i > 0); logger.info("Removed {} unused parameters", count); }  Collection<Integer> findUnusedParameters(Collection<Method> methods); void removeParameter(ClassGroup group, List<Method> methods, Signature signature, Execution execution, int paramIndex, int lvtIndex); @Override void run(ClassGroup group); int getCount();  }### Answer:
@Test public void testRun() { RenameUnique r = new RenameUnique(); r.run(group); r = null; System.gc(); RuntimeExceptions re = new RuntimeExceptions(); re.run(group); re = null; System.gc(); UnreachedCode uc = new UnreachedCode(); uc.run(group); uc = null; System.gc(); UnusedMethods um = new UnusedMethods(); um.run(group); um = null; System.gc(); IllegalStateExceptions ise = new IllegalStateExceptions(); ise.run(group); ise = null; System.gc(); UnusedParameters cp = new UnusedParameters(); cp.run(group); cp = null; System.gc(); }