Title: TextUtils BalancedJSONTokenizer matches quotes
Content:
Parsing {"odd back slashes with text around":"tes\\\"t"}
{"odd back slashes with text around":"tes\\\"t"}
Parsing {"escaped double quotes":"\"test\""}
{"escaped double quotes":"\"test\""}
Parsing {"escaped back slash before double quote":"test\\"}
{"escaped back slash before double quote":"test\\"}
Parsing {"1":2}
{"1":2}
Parsing {"":""}
{"":""}
Parsing {"nested brackets":{}}
{"nested brackets":{}}
Parsing {"nested brackets with double quotes":{"":""}}
{"nested brackets with double quotes":{"":""}}
Parsing {"etc":{"\\":"\""}}
{"etc":{"\\":"\""}}
Parsing {"etc":{"\\\\":"\\"}}
{"etc":{"\\\\":"\\"}}
Parsing {"etc":{"\\\\\"":"\\\\\""}}
{"etc":{"\\\\\"":"\\\\\""}}
=== end content

Title: TextUtils BalancedJSONTokenizer matches sequence using one shot
Content:
Parsing {"one":"one"}
{"one":"one"}
Parsing [{"one":"one"},{"two":"two"}]
[{"one":"one"}
Parsing [{"one":"one"},{"two":"two"},{"three":"three"}]
[{"one":"one"}
=== end content

Title: TextUtils BalancedJSONTokenizer matches sequence using multiple
Content:
Parsing {"one":"one"}
{"one":"one"}
Parsing [{"one":"one"},{"two":"two"}]
[{"one":"one"},{"two":"two"}
Parsing [{"one":"one"},{"two":"two"},{"three":"three"}]
[{"one":"one"},{"two":"two"},{"three":"three"}
=== end content

Title: TextUtils BalancedJSONTokenizer incremental writes
Content:
Running at once:
[{"odd back slashes with text around":"tes\\\"t"},{"escaped double quotes":"\"test\""},{"escaped back slash before double quote":"test\\"},{"1":2},{"":""},{"nested brackets":{}},{"nested brackets with double quotes":{"":""}},{"etc":{"\\":"\""}},{"etc":{"\\\\":"\\"}},{"etc":{"\\\\\"":"\\\\\""}}
Running by 3:
[{"odd back slashes with text around":"tes\\\"t"}
,{"escaped double quotes":"\"test\""}
,{"escaped back slash before double quote":"test\\"}
,{"1":2}
,{"":""}
,{"nested brackets":{}}
,{"nested brackets with double quotes":{"":""}}
,{"etc":{"\\":"\""}}
,{"etc":{"\\\\":"\\"}}
,{"etc":{"\\\\\"":"\\\\\""}}
Running by 15:
[{"odd back slashes with text around":"tes\\\"t"}
,{"escaped double quotes":"\"test\""}
,{"escaped back slash before double quote":"test\\"},{"1":2}
,{"":""}
,{"nested brackets":{}}
,{"nested brackets with double quotes":{"":""}}
,{"etc":{"\\":"\""}}
,{"etc":{"\\\\":"\\"}}
,{"etc":{"\\\\\"":"\\\\\""}}
Running by 50:
[{"odd back slashes with text around":"tes\\\"t"}
,{"escaped double quotes":"\"test\""}
,{"escaped back slash before double quote":"test\\"},{"1":2}
,{"":""},{"nested brackets":{}}
,{"nested brackets with double quotes":{"":""}},{"etc":{"\\":"\""}}
,{"etc":{"\\\\":"\\"}},{"etc":{"\\\\\"":"\\\\\""}}
=== end content

Title: TextUtils BalancedJSONTokenizer garbage after object
Content:
Parsing [{a: 'b'}], {'x': {a: 'b'}}
[{a: 'b'}
=== end content
