prevent undefined or unspecified behaviour in div, mod and shift implementations
test division by zero
test division overflow exception
simplify arithmetic error testing and test mod
test invalid shift amounts
test add/sub overflows
test negation overflow error
garbage collection makes sense now
string behaves like a value type when equality-compared or hashed
strings compare lexicographically instead of identity-based like objects do by default