Prevents crashing if an object defines __repr__ to raise an error
Adds tests, always decrements recursion