beforePass(passes, Pass.PRE_OUTPUT_ALL, new VisitorPass(SIMPLIFY, job, new SimplifyVisitor(job, ts, nf)));
beforePass(passes, BOXING, new VisitorPass(UNBOXING, job, new UnboxingVisitor(job, ts, nf)));  beforePass(passes, UNBOXING, new VisitorPass(SIMPLIFY, job, new SimplifyVisitor(job, ts, nf)));
    public List passes(Job job) {        getOptions().serialize_type_info = false;        List passes = super.passes(job);        // TODO: add passes as needed by your compiler        //afterPass(passes, Pass.DISAM_ALL, new VisitorPass(ENUM_SWITCH_DISAMBIGUATE, job, new LeftoverAmbiguityRemover(job, ts, nf, LeftoverAmbiguityRemover.SWITCH_CASES)));                //replacePass(passes, Pass.BUILD_TYPES, new VisitorPass(Pass.BUILD_TYPES, job, new JL5TypeBuilder(job, ts, nf)));                beforePass(passes, Pass.CLEAN_SUPER, new VisitorPass(GENERIC_TYPE_HANDLER, job, new JL5AmbiguityRemover(job, ts, nf, JL5AmbiguityRemover.TYPE_VARS)));                afterPass(passes, GENERIC_TYPE_HANDLER, new VisitorPass(ADD_TYPE_VARS, job, new AddTypeVarsVisitor(job, ts, nf)));                //beforePass(passes, Pass.TYPE_CHECK, new VisitorPass(GENERIC_ARGS, job, new GenericTypeHandler(job, ts, nf)));        //afterPass(passes, Pass.TYPE_CHECK, new VisitorPass(GENERIC_RESET, job, new GenericTypeReseter(job, ts, nf)));        afterPass(passes, Pass.TYPE_CHECK, new BarrierPass(TYPE_CHECK_ALL, job));        beforePass(passes, Pass.REACH_CHECK, new VisitorPass(APPLICATION_CHECK, job, new ApplicationChecker(job, ts, nf)));        beforePass(passes, Pass.PRE_OUTPUT_ALL, new VisitorPass(SIMPLIFY, job, new SimplifyVisitor(job, ts, nf)));        return passes;    }