class AnonClassInitMethodSource extends soot.javaToJimple.PolyglotMethodSource {

  private boolean hasOuterRef;

  public void hasOuterRef(boolean b) {
    hasOuterRef = b;
  }

  public boolean hasOuterRef() {
    return hasOuterRef;
  }

  private boolean hasQualifier;

  public void hasQualifier(boolean b) {
    hasQualifier = b;
  }

  public boolean hasQualifier() {
    return hasQualifier;
  }

  private boolean inStaticMethod;

  public void inStaticMethod(boolean b) {
    inStaticMethod = b;
  }

  public boolean inStaticMethod() {
    return inStaticMethod;
  }

  private boolean isSubType = false;

  public void isSubType(boolean b) {
    isSubType = b;
  }

  public boolean isSubType() {
    return isSubType;
  }

  private soot.Type superOuterType = null;
  private soot.Type thisOuterType = null;

  public void superOuterType(soot.Type t) {
    superOuterType = t;
  }

  public soot.Type superOuterType() {
    return superOuterType;
  }

  public void thisOuterType(soot.Type t) {
    thisOuterType = t;
  }

  public soot.Type thisOuterType() {
    return thisOuterType;
  }

  private polyglot.types.ClassType polyglotType;

  public void polyglotType(polyglot.types.ClassType type) {
    polyglotType = type;
  }

  public polyglot.types.ClassType polyglotType() {
    return polyglotType;
  }

  private polyglot.types.ClassType anonType;

  public void anonType(polyglot.types.ClassType type) {
    anonType = type;
  }

  public polyglot.types.ClassType anonType() {
    return anonType;
  }

  public soot.Body getBody(soot.SootMethod sootMethod, String phaseName) {<FILL_FUNCTION_BODY>}

  private soot.Type outerClassType;

  public soot.Type outerClassType() {
    return outerClassType;
  }

  public void outerClassType(soot.Type type) {
    outerClassType = type;
  }
}

    AnonInitBodyBuilder aibb = new AnonInitBodyBuilder();
    soot.jimple.JimpleBody body = aibb.createBody(sootMethod);

    PackManager.v().getPack("jj").apply(body);

    return body;
  
<methods>public void <init>() ,public void <init>(polyglot.ast.Block, List#RAW) ,public void addAssertInits(soot.Body) ,public soot.Body getBody(soot.SootMethod, java.lang.String) ,public ArrayList<polyglot.ast.FieldDecl> getFieldInits() ,public ArrayList<soot.SootField> getFinalsList() ,public ArrayList<polyglot.ast.Block> getInitializerBlocks() ,public HashMap#RAW getNewToOuterMap() ,public soot.Local getOuterClassThisInit() ,public ArrayList<polyglot.ast.FieldDecl> getStaticFieldInits() ,public ArrayList<polyglot.ast.Block> getStaticInitializerBlocks() ,public boolean hasAssert() ,public void hasAssert(boolean) ,public void setFieldInits(ArrayList<polyglot.ast.FieldDecl>) ,public void setFinalsList(ArrayList<soot.SootField>) ,public void setInitializerBlocks(ArrayList<polyglot.ast.Block>) ,public void setJBB(soot.javaToJimple.AbstractJimpleBodyBuilder) ,public void setNewToOuterMap(HashMap#RAW) ,public void setOuterClassThisInit(soot.Local) ,public void setStaticFieldInits(ArrayList<polyglot.ast.FieldDecl>) ,public void setStaticInitializerBlocks(ArrayList<polyglot.ast.Block>) <variables>private soot.javaToJimple.AbstractJimpleBodyBuilder ajbb,private polyglot.ast.Block block,private ArrayList<polyglot.ast.FieldDecl> fieldInits,private ArrayList<soot.SootField> finalsList,private List#RAW formals,private boolean hasAssert,private ArrayList<polyglot.ast.Block> initializerBlocks,private HashMap#RAW newToOuterMap,private soot.Local outerClassThisInit,private ArrayList<polyglot.ast.FieldDecl> staticFieldInits,private ArrayList<polyglot.ast.Block> staticInitializerBlocks