- Empty ArrayList will write as [] as opposed {} when the type is ArrayList.
- Added test case that has outer and inner class with field with same name to prove reported issue was invalid.
- duplicate field names between parent class and child class are now correctly supported.
- minor format change