refactored named and unnamed array implementations out to a common implementation as a top-level class rather than anonymous inner in JsonDocumentDefinition