class JGotoStmt extends AbstractStmt implements GotoStmt {

  protected final UnitBox targetBox;
  protected final List<UnitBox> targetBoxes;

  public JGotoStmt(Unit target) {
    this(Jimple.v().newStmtBox(target));
  }

  public JGotoStmt(UnitBox box) {
    this.targetBox = box;
    this.targetBoxes = Collections.singletonList(box);
  }

  @Override
  public Object clone() {
    return new JGotoStmt(getTarget());
  }

  @Override
  public String toString() {
    Unit t = getTarget();
    String target = t.branches() ? "(branch)" : t.toString();
    return Jimple.GOTO + " [?= " + target + "]";
  }

  @Override
  public void toString(UnitPrinter up) {
    up.literal(Jimple.GOTO + " ");
    targetBox.toString(up);
  }

  @Override
  public Unit getTarget() {
    return targetBox.getUnit();
  }

  @Override
  public void setTarget(Unit target) {
    targetBox.setUnit(target);
  }

  @Override
  public UnitBox getTargetBox() {
    return targetBox;
  }

  @Override
  public List<UnitBox> getUnitBoxes() {
    return targetBoxes;
  }

  @Override
  public void apply(Switch sw) {
    ((StmtSwitch) sw).caseGotoStmt(this);
  }

  @Override
  public void convertToBaf(JimpleToBafContext context, List<Unit> out) {<FILL_FUNCTION_BODY>}

  @Override
  public boolean fallsThrough() {
    return false;
  }

  @Override
  public boolean branches() {
    return true;
  }
}

    final Baf vaf = Baf.v();
    Unit u = vaf.newGotoInst(vaf.newPlaceholderInst(getTarget()));
    u.addAllTagsOf(this);
    out.add(u);
  
<methods>public non-sealed void <init>() ,public boolean containsArrayRef() ,public boolean containsFieldRef() ,public boolean containsInvokeExpr() ,public void convertToBaf(soot.jimple.JimpleToBafContext, List<soot.Unit>) ,public soot.jimple.ArrayRef getArrayRef() ,public soot.ValueBox getArrayRefBox() ,public soot.jimple.FieldRef getFieldRef() ,public soot.ValueBox getFieldRefBox() ,public soot.jimple.InvokeExpr getInvokeExpr() ,public soot.ValueBox getInvokeExprBox() <variables>