==========================================
recovers from top-level errors
==========================================
[}
---
(ERROR)

==========================================
recovers from unexpected tokens
==========================================
barf
---
(ERROR)

==========================================
recovers from errors inside arrays
==========================================
[1, , 2]
---
(value (array
    (number)
    (ERROR)
    (number)))

==========================================
recovers from errors inside objects
==========================================
{ "key1": 1, oops }
---
(value (object (string) (number) (ERROR)))

==========================================
recovers from errors inside nested objects
==========================================
{ "key1": { "key2": 1, 2 }, [, "key3": 3 }
---
(value (object
    (string) (object (string) (number) (ERROR))
    (ERROR)
    (string) (number)))
