| DualBound |  | 100% |  | 100% | 0 | 21 | 0 | 28 | 0 | 17 | 0 | 1 |
| SingleBound |  | 100% | | n/a | 0 | 17 | 0 | 22 | 0 | 17 | 0 | 1 |
| MultiConstraint |  | 100% |  | 100% | 0 | 7 | 0 | 15 | 0 | 4 | 0 | 1 |
| NumericConstraint |  | 100% | | n/a | 0 | 3 | 0 | 11 | 0 | 3 | 0 | 1 |
| SingleBound.Bound |  | 100% | | n/a | 0 | 2 | 0 | 9 | 0 | 2 | 0 | 1 |
| CollectionConstraint |  | 100% | | n/a | 0 | 4 | 0 | 7 | 0 | 4 | 0 | 1 |
| SubCollectionConstraint |  | 100% | | n/a | 0 | 4 | 0 | 7 | 0 | 4 | 0 | 1 |
| SingleBound.UpperBoundInclusive |  | 100% |  | 100% | 0 | 3 | 0 | 3 | 0 | 2 | 0 | 1 |
| SingleBound.LowerBoundExclusive |  | 100% |  | 100% | 0 | 3 | 0 | 3 | 0 | 2 | 0 | 1 |
| SingleBound.UpperBoundExclusive |  | 100% |  | 100% | 0 | 3 | 0 | 3 | 0 | 2 | 0 | 1 |
| SingleBound.LowerBoundInclusive |  | 100% |  | 100% | 0 | 3 | 0 | 3 | 0 | 2 | 0 | 1 |
| NumericConstraint.new NumericConstraint() {...} |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 2 | 0 | 1 |
| NumericConstraint.new NumericConstraint() {...} |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 2 | 0 | 1 |
| NumericConstraint.new NumericConstraint() {...} |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 2 | 0 | 1 |
| NumericConstraint.new NumericConstraint() {...} |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 2 | 0 | 1 |
| NumericConstraint.new NumericConstraint() {...} |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 2 | 0 | 1 |
| NumericConstraint.new NumericConstraint() {...} |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 2 | 0 | 1 |
| ConstraintInterface |  | 100% | | n/a | 0 | 1 | 0 | 7 | 0 | 1 | 0 | 1 |
| ClassCollectionConstraint |  | 100% | | n/a | 0 | 2 | 0 | 3 | 0 | 2 | 0 | 1 |