class PaddleHook extends SceneTransformer {
  public PaddleHook(Singletons.Global g) {
  }

  public static PaddleHook v() {
    return G.v().soot_jimple_paddle_PaddleHook();
  }

  private IPaddleTransformer paddleTransformer;

  public IPaddleTransformer paddleTransformer() {
    if (paddleTransformer == null) {
      paddleTransformer = (IPaddleTransformer) instantiate("soot.jimple.paddle.PaddleTransformer");
    }
    return paddleTransformer;
  }

  protected void internalTransform(String phaseName, Map<String, String> options) {
    paddleTransformer().transform(phaseName, options);
  }

  public Object instantiate(String className) {
    Object ret;
    try {
      ret = Class.forName(className).newInstance();
    } catch (ClassNotFoundException e) {
      throw new RuntimeException("Could not find " + className + ". Did you include Paddle on your Java classpath?");
    } catch (InstantiationException e) {
      throw new RuntimeException("Could not instantiate " + className + ": " + e);
    } catch (IllegalAccessException e) {
      throw new RuntimeException("Could not instantiate " + className + ": " + e);
    }
    return ret;
  }

  private Object paddleG;

  public Object paddleG() {<FILL_FUNCTION_BODY>}

  /**
   * This is called when Soot finishes executing all interprocedural phases. Paddle uses it to stop profiling if profiling is
   * enabled.
   */
  public void finishPhases() {
    if (paddleTransformer != null) {
      paddleTransformer().finishPhases();
    }
  }
}

    if (paddleG == null) {
      paddleG = instantiate("soot.PaddleG");
    }
    return paddleG;
  
<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>