| getValuesInternal(double, double[], DoubleUnaryOperator, DoubleBinaryOperator) |   | 75% |   | 47% | 17 | 22 | 16 | 79 | 0 | 1 |
| buildContinuousObstacleVector(double[], double, DoubleBinaryOperator, BoundaryCondition, BoundaryCondition) |  | 0% |  | 0% | 7 | 7 | 10 | 10 | 1 | 1 |
| buildObstacleVector(double[], double, DoubleUnaryOperator, BoundaryCondition, BoundaryCondition) |  | 0% |  | 0% | 7 | 7 | 10 | 10 | 1 | 1 |
| applyExerciseProjection(double[], double[], double, DoubleUnaryOperator, BoundaryCondition, BoundaryCondition) |  | 0% |  | 0% | 7 | 7 | 9 | 9 | 1 | 1 |
| validateEventTimesInGrid(double[]) |  | 0% |  | 0% | 5 | 5 | 9 | 9 | 1 | 1 |
| isProductEventTime(double) |   | 20% |   | 25% | 4 | 5 | 6 | 9 | 0 | 1 |
| getLocalShortRateAt(double, double) |   | 42% |   | 50% | 2 | 4 | 6 | 9 | 0 | 1 |
| applyProductEventConditionIfNeeded(double, double[]) |   | 16% |   | 16% | 3 | 4 | 5 | 7 | 0 | 1 |
| getLowerBoundaryCondition(double, double) |   | 44% |   | 25% | 2 | 3 | 4 | 7 | 0 | 1 |
| getUpperBoundaryCondition(double, double) |   | 44% |   | 25% | 2 | 3 | 4 | 7 | 0 | 1 |
| FDMThetaMethod1D(FiniteDifferenceModel, FiniteDifferenceProduct, SpaceTimeDiscretization, Exercise) |   | 55% |   | 50% | 5 | 6 | 5 | 18 | 0 | 1 |
| getDriftAt(double, double) |   | 43% |   | 25% | 2 | 3 | 3 | 5 | 0 | 1 |
| validateModelProductCompatibility() |   | 42% |   | 33% | 6 | 7 | 3 | 7 | 0 | 1 |
| getFactorLoadingAt(double, double) |   | 43% |   | 25% | 2 | 3 | 3 | 5 | 0 | 1 |
| validateProductEventTimesInGrid() |   | 40% |   | 50% | 2 | 3 | 3 | 6 | 0 | 1 |
| isInternalConstraintActive(double, double) |   | 33% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| getValue(double, double, double[], DoubleUnaryOperator) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getValue(double, double, double[], DoubleBinaryOperator) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getInternalConstrainedValue(double, double) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getValue(double, double, double[]) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| reimposeInternalConstraints(double[], double[], double) |   | 66% |   | 75% | 1 | 3 | 1 | 4 | 0 | 1 |
| FDMThetaMethod1D(FiniteDifferenceInterestRateModel, FiniteDifferenceInterestRateProduct, SpaceTimeDiscretization, Exercise) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getValues(double, double[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getValues(double, double[], DoubleUnaryOperator) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getValues(double, double[], DoubleBinaryOperator) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| buildModelCoefficients(double[], double) |  | 100% |  | 100% | 0 | 3 | 0 | 15 | 0 | 1 |
| getValues(double, DoubleUnaryOperator) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| extractTimeSlice(double[][], double, double) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| reimposeBoundaryValues(double[], BoundaryCondition, BoundaryCondition) |  | 100% |   | 50% | 2 | 3 | 0 | 5 | 0 | 1 |
| getValue(double, double, DoubleUnaryOperator) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| FDMThetaMethod1D(FiniteDifferenceEquityModel, FiniteDifferenceEquityProduct, SpaceTimeDiscretization, Exercise) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |