private JsonSchemaModel BuildNodeModel(JsonSchemaNode node) { JsonSchemaModel model; if (_nodeModels.TryGetValue(node, out model)) { return(model); } model = JsonSchemaModel.Create(node.Schemas); _nodeModels[node] = model; foreach (KeyValuePair <string, JsonSchemaNode> property in node.Properties) { if (model.Properties == null) { model.Properties = new Dictionary <string, JsonSchemaModel>(); } model.Properties[property.Key] = BuildNodeModel(property.Value); } foreach (KeyValuePair <string, JsonSchemaNode> property in node.PatternProperties) { if (model.PatternProperties == null) { model.PatternProperties = new Dictionary <string, JsonSchemaModel>(); } model.PatternProperties[property.Key] = BuildNodeModel(property.Value); } foreach (JsonSchemaNode t in node.Items) { if (model.Items == null) { model.Items = new List <JsonSchemaModel>(); } model.Items.Add(BuildNodeModel(t)); } if (node.AdditionalProperties != null) { model.AdditionalProperties = BuildNodeModel(node.AdditionalProperties); } if (node.AdditionalItems != null) { model.AdditionalItems = BuildNodeModel(node.AdditionalItems); } return(model); }