class ShimpleTransformer extends SceneTransformer {
  private static final Logger logger = LoggerFactory.getLogger(ShimpleTransformer.class);

  public ShimpleTransformer(Singletons.Global g) {
  }

  public static ShimpleTransformer v() {
    return G.v().soot_shimple_ShimpleTransformer();
  }

  @Override
  protected void internalTransform(String phaseName, Map options) {<FILL_FUNCTION_BODY>}
}

    if (Options.v().verbose()) {
      logger.debug("Transforming all classes in the Scene to Shimple...");
    }
    // *** FIXME: Add debug output to indicate which class/method is being shimplified.
    // *** FIXME: Is ShimpleTransformer the right solution? The call graph may deem
    // some classes unreachable.

    for (SootClass sClass : Scene.v().getClasses()) {
      if (!sClass.isPhantom()) {
        for (SootMethod method : sClass.getMethods()) {
          if (method.isConcrete()) {
            if (method.hasActiveBody()) {
              Body body = method.getActiveBody();

              ShimpleBody sBody;
              if (body instanceof ShimpleBody) {
                sBody = (ShimpleBody) body;
                if (!sBody.isSSA()) {
                  sBody.rebuild();
                }
              } else {
                sBody = Shimple.v().newBody(body);
              }

              method.setActiveBody(sBody);
            } else {
              method.setSource(new ShimpleMethodSource(method.getSource()));
            }
          }
        }
      }
    }
  
<methods>public non-sealed void <init>() ,public final void transform(java.lang.String, Map<java.lang.String,java.lang.String>) ,public final void transform(java.lang.String) ,public final void transform() <variables>