class SaveASTVisitor extends polyglot.frontend.AbstractPass {

  private polyglot.frontend.Job job;
  private polyglot.frontend.ExtensionInfo extInfo;

  public SaveASTVisitor(polyglot.frontend.Pass.ID id, polyglot.frontend.Job job, polyglot.frontend.ExtensionInfo extInfo) {
    super(id);
    this.job = job;
    this.extInfo = extInfo;
  }

  public boolean run() {<FILL_FUNCTION_BODY>}
}

    if (extInfo instanceof soot.javaToJimple.jj.ExtensionInfo) {
      soot.javaToJimple.jj.ExtensionInfo jjInfo = (soot.javaToJimple.jj.ExtensionInfo) extInfo;
      if (jjInfo.sourceJobMap() == null) {
        jjInfo.sourceJobMap(new HashMap<Source, Job>());
      }
      jjInfo.sourceJobMap().put(job.source(), job);
      return true;
    }
    return false;
  
<methods>public void <init>(polyglot.frontend.Pass.ID) ,public long exclusiveTime() ,public polyglot.frontend.Pass.ID id() ,public long inclusiveTime() ,public java.lang.String name() ,public void resetTimers() ,public abstract boolean run() ,public java.lang.String toString() ,public void toggleTimers(boolean) <variables>protected long exclusive_time,protected polyglot.frontend.Pass.ID id,protected long inclusive_time