class MonitorExitInstruction extends DexlibAbstractInstruction {

  public MonitorExitInstruction(Instruction instruction, int codeAdress) {
    super(instruction, codeAdress);
  }

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

    int reg = ((OneRegisterInstruction) instruction).getRegisterA();
    Local object = body.getRegisterLocal(reg);
    ExitMonitorStmt exitMonitorStmt = Jimple.v().newExitMonitorStmt(object);
    setUnit(exitMonitorStmt);
    addTags(exitMonitorStmt);
    body.add(exitMonitorStmt);

    if (IDalvikTyper.ENABLE_DVKTYPER) {
      // Debug.printDbg(IDalvikTyper.DEBUG, "constraint: "+ exitMonitorStmt);
      DalvikTyper.v().setType(exitMonitorStmt.getOpBox(), RefType.v("java.lang.Object"), true);
    }
  
<methods>public void <init>(org.jf.dexlib2.iface.instruction.Instruction, int) ,public org.jf.dexlib2.iface.instruction.Instruction getInstruction() ,public int getLineNumber() ,public soot.Unit getUnit() ,public Set<soot.Type> introducedTypes() ,public abstract void jimplify(soot.dexpler.DexBody) ,public void setLineNumber(int) <variables>protected final non-sealed int codeAddress,protected final non-sealed org.jf.dexlib2.iface.instruction.Instruction instruction,protected int lineNumber,protected soot.Unit unit