class AvailExprTagger extends BodyTransformer {
  public AvailExprTagger(Singletons.Global g) {
  }

  public static AvailExprTagger v() {
    return G.v().soot_jimple_toolkits_annotation_AvailExprTagger();
  }

  protected void internalTransform(Body b, String phaseName, Map opts) {<FILL_FUNCTION_BODY>}
}


    SideEffectTester sideEffect;
    if (Scene.v().hasCallGraph() && !PhaseOptions.getBoolean(opts, "naive-side-effect")) {
      sideEffect = new PASideEffectTester();
    } else {
      sideEffect = new NaiveSideEffectTester();
    }
    sideEffect.newMethod(b.getMethod());

    AETOptions options = new AETOptions(opts);
    if (options.kind() == AETOptions.kind_optimistic) {
      new SlowAvailableExpressionsAnalysis(ExceptionalUnitGraphFactory.createExceptionalUnitGraph(b));
    } else {
      new PessimisticAvailableExpressionsAnalysis(ExceptionalUnitGraphFactory.createExceptionalUnitGraph(b), b.getMethod(),
          sideEffect);
    }
  
<methods>public non-sealed void <init>() ,public final void transform(soot.Body, java.lang.String, Map<java.lang.String,java.lang.String>) ,public final void transform(soot.Body, java.lang.String) ,public final void transform(soot.Body) <variables>private static final Map<java.lang.String,java.lang.String> enabledOnlyMap