For now, this uses JSON to print objects on error, which is hard to debug. It should probably use something like google/go-cmp instead, because these objects are now too large for direct comparison.