class GotoInstruction extends JumpInstruction implements DeferableInstruction {
  public GotoInstruction(Instruction instruction, int codeAdress) {
    super(instruction, codeAdress);
  }

  public void jimplify(DexBody body) {<FILL_FUNCTION_BODY>}

  public void deferredJimplify(DexBody body) {
    body.getBody().getUnits().insertAfter(gotoStatement(), markerUnit);
  }

  private GotoStmt gotoStatement() {
    GotoStmt go = Jimple.v().newGotoStmt(targetInstruction.getUnit());
    setUnit(go);
    addTags(go);
    return go;
  }

}

    // check if target instruction has been jimplified
    if (getTargetInstruction(body).getUnit() != null) {
      body.add(gotoStatement());
      return;
    }
    // set marker unit to swap real gotostmt with otherwise
    body.addDeferredJimplification(this);
    markerUnit = Jimple.v().newNopStmt();
    addTags(markerUnit);
    unit = markerUnit;
    body.add(markerUnit);
  
<methods>public void <init>(org.jf.dexlib2.iface.instruction.Instruction, int) <variables>protected soot.Unit markerUnit,protected soot.dexpler.instructions.DexlibAbstractInstruction targetInstruction