class JInvokeStmt extends AbstractStmt implements InvokeStmt {

  protected final ValueBox invokeExprBox;

  public JInvokeStmt(Value c) {
    this(Jimple.v().newInvokeExprBox(c));
  }

  protected JInvokeStmt(ValueBox invokeExprBox) {
    this.invokeExprBox = invokeExprBox;
  }

  @Override
  public Object clone() {
    return new JInvokeStmt(Jimple.cloneIfNecessary(getInvokeExpr()));
  }

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

  @Override
  public String toString() {
    return invokeExprBox.getValue().toString();
  }

  @Override
  public void toString(UnitPrinter up) {
    invokeExprBox.toString(up);
  }

  @Override
  public void setInvokeExpr(Value invokeExpr) {
    invokeExprBox.setValue(invokeExpr);
  }

  @Override
  public InvokeExpr getInvokeExpr() {
    return (InvokeExpr) invokeExprBox.getValue();
  }

  @Override
  public ValueBox getInvokeExprBox() {
    return invokeExprBox;
  }

  @Override
  public List<ValueBox> getUseBoxes() {
    List<ValueBox> list = new ArrayList<ValueBox>(invokeExprBox.getValue().getUseBoxes());
    list.add(invokeExprBox);
    return list;
  }

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

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

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

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

    InvokeExpr ie = getInvokeExpr();

    context.setCurrentUnit(this);

    ((ConvertToBaf) ie).convertToBaf(context, out);

    Type returnType = ie.getMethodRef().returnType();
    if (!VoidType.v().equals(returnType)) {
      Unit u = Baf.v().newPopInst(returnType);
      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>