{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "elementArray": {
            "$ref": "#/definitions/ElementArray"
        },
        "inlineElementArray": {
            "$ref": "#/definitions/InlineElementArray"
        },
        "inlineElementArray2": {
            "$ref": "#/definitions/InlineElementArray2"
        },
        "arrayFromExternList": {
            "$ref": "#/definitions/ArrayFromExternList"
        },
        "arrayFromExternList2": {
            "$ref": "#/definitions/ArrayFromExternList2"
        },
        "arrayFromExternList3": {
            "$ref": "#/definitions/ArrayFromExternList3"
        },
        "arrayFromExternList4": {
            "$ref": "#/definitions/ArrayFromExternList4"
        }
    },
    "definitions": {
        "ElementArray": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineItem"
                    }
                }
            }
        },
        "LineItem": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "description": {
                    "type": "string"
                },
                "perUnitOunces": {
                    "type": "number"
                },
                "price": {
                    "type": "number"
                },
                "quantity": {
                    "$ref": "#/definitions/Quantity"
                }
            }
        },
        "Quantity": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": "string"
                },
                "address": {
                    "type": "string"
                },
                "age": {
                    "type": "integer"
                },
                "moo": {
                    "type": "integer"
                },
                "poo": {
                    "type": "integer"
                }
            },
            "required": [
                "moo",
                "poo"
            ]
        },
        "InlineElementArray": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "$ref": "#/definitions/LineItem_1"
                }
            }
        },
        "LineItem_1": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "item": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineItem_1"
                    }
                }
            }
        },
        "InlineElementArray2": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "$ref": "#/definitions/LineItem_2"
                }
            }
        },
        "LineItem_2": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "item": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineItem_2"
                    }
                }
            }
        },
        "ArrayFromExternList": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "$ref": "#/definitions/LineItemList"
                }
            }
        },
        "LineItemList": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "value": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineItem"
                    }
                }
            }
        },
        "ArrayFromExternList2": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "$ref": "#/definitions/LineItemList2"
                }
            }
        },
        "LineItemList2": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "value": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineItem"
                    }
                }
            }
        },
        "ArrayFromExternList3": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "$ref": "#/definitions/LineItemListInline"
                }
            }
        },
        "LineItemListInline": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "value": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Value"
                    }
                }
            }
        },
        "Value": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "test": {
                    "type": "string"
                }
            }
        },
        "ArrayFromExternList4": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "lineItem": {
                    "$ref": "#/definitions/LineItemList2Inline"
                }
            }
        },
        "LineItemList2Inline": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "value": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Value_1"
                    }
                }
            }
        },
        "Value_1": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "test": {
                    "type": "string"
                }
            }
        }
    }
}