class CilCkFiniteInstruction extends AbstractCilnstruction {
  public CilCkFiniteInstruction(ProtoIlInstructions.IlInstructionMsg instruction, DotnetBody dotnetBody,
      CilBlock cilBlock) {
    super(instruction, dotnetBody, cilBlock);
  }

  @Override
  public void jimplify(Body jb) {<FILL_FUNCTION_BODY>}

  @Override
  public Value jimplifyExpr(Body jb) {
    throw new NoExpressionInstructionException(instruction);
  }
}

    CilInstruction cilExpr = CilInstructionFactory.fromInstructionMsg(instruction.getArgument(), dotnetBody, cilBlock);
    Value argument = cilExpr.jimplifyExpr(jb);
    DoubleConstant posInfinity = DoubleConstant.v(Double.POSITIVE_INFINITY);
    DoubleConstant negInfinity = DoubleConstant.v(Double.NEGATIVE_INFINITY);

    // infinity conditions
    EqExpr eqPosInfExpr = Jimple.v().newEqExpr(argument, posInfinity);
    EqExpr eqNegInfExpr = Jimple.v().newEqExpr(argument, negInfinity);
    NeExpr eqNaNExpr = Jimple.v().newNeExpr(argument, argument);

    // if value is infinity, throw exception
    SootClass exceptionClass = Scene.v().getSootClass(DotnetBasicTypes.SYSTEM_ARITHMETICEXCEPTION);
    Local tmpLocalVar = dotnetBody.variableManager.localGenerator.generateLocal(exceptionClass.getType());
    ThrowStmt throwStmt = Jimple.v().newThrowStmt(tmpLocalVar);

    // if true throw exception
    jb.getUnits().add(Jimple.v().newIfStmt(eqPosInfExpr, throwStmt));
    jb.getUnits().add(Jimple.v().newIfStmt(eqNegInfExpr, throwStmt));
    jb.getUnits().add(Jimple.v().newIfStmt(eqNaNExpr, throwStmt));
    // if false goto
    NopStmt nopStmt = Jimple.v().newNopStmt();
    jb.getUnits().add(Jimple.v().newGotoStmt(nopStmt));
    jb.getUnits().add(throwStmt);
    jb.getUnits().add(nopStmt);
  
<methods>public void <init>(ProtoIlInstructions.IlInstructionMsg, soot.dotnet.members.method.DotnetBody, soot.dotnet.instructions.CilBlock) <variables>protected final non-sealed soot.dotnet.instructions.CilBlock cilBlock,protected final non-sealed soot.dotnet.members.method.DotnetBody dotnetBody,protected final non-sealed ProtoIlInstructions.IlInstructionMsg instruction