new OPT_OptimizationPlanAtomicElement(new OPT_NullCheckCombining()) });
new OPT_OptimizationPlanAtomicElement(new OPT_NullCheckCombining() { public void perform(OPT_IR ir) { super.perform(ir);  ir.IRStage = OPT_IR.MIR; ir.MIRInfo = new OPT_MIRInfo(ir); } }) });
  OPT_ConvertLIRtoMIR () {    super("Instruction Selection", new OPT_OptimizationPlanElement[] {        // Stage 1: Reduce the LIR operator set to a core set of operators.        new OPT_OptimizationPlanAtomicElement(new ReduceOperators()),                 // Stage 2: Convert ALU operators         new OPT_OptimizationPlanAtomicElement(new OPT_ConvertALUOperators()),         // Stage 3: Normalize usage of constants to simplify Stage 3.        new OPT_OptimizationPlanAtomicElement(new NormalizeConstants()),         // Stage 4a: Compute liveness information for DepGraph        new OPT_OptimizationPlanAtomicElement(new DoLiveness()),        // Stage 4b: Block by block build DepGraph and do         //           BURS based instruction selection.        new OPT_OptimizationPlanAtomicElement(new DoBURS()),         // Stage 5: Handle complex operators         //          (those that expand to multiple basic blocks of MIR).        new OPT_OptimizationPlanAtomicElement(new ComplexOperators()),        // Stage 6: Use validation operands to do null check combining,        //          and then finish the removal off all validation        //          operands (they are not present in the MIR).        new OPT_OptimizationPlanAtomicElement(new OPT_NullCheckCombining())    });  }