Minor, but returning 'unhashable_object' makes it look like we are not really converting input to a hashable object. Actually, I can see that it can be confusing because of recursion. Never mind, not too important.