fixed == to behave correctly with BigDecimal values and added tests for ==
improve error messages for recur across try