public OPT_CompilerPhase newExecution (OPT_IR ir) { try { return (OPT_CompilerPhase)this.clone(); } catch (CloneNotSupportedException e) {  return null;
public OPT_CompilerPhase newExecution(OPT_IR ir) { Constructor cons = getClassConstructor(); if(cons != null) { try { return (OPT_CompilerPhase)cons.newInstance(initargs); } catch(Exception e){ throw new Error("Failed to create phase " + this.getClass() + " with constructor " + cons, e); } } else { throw new Error("Error, no constructor found in phase " + this.getClass() + " make sure a public constructor is declared");
  public OPT_CompilerPhase newExecution (OPT_IR ir) {    try {      return (OPT_CompilerPhase)this.clone();    } catch (CloneNotSupportedException e) {      // we implement Cloneable, so of course we can't reach here.      return null;    }  }