public static JsonSchemaModel Create(IList<JsonSchema> schemata)
		{
			var model = new JsonSchemaModel();

			foreach (var schema in schemata)
			{
				Combine(model, schema);
			}

			return model;
		}
		private static void Combine(JsonSchemaModel model, JsonSchema schema)
		{
			// Version 3 of the Draft JSON Schema has the default value of Not Required
			model.Required = model.Required || (schema.Required ?? false);
			model.Type = model.Type & (schema.Type ?? JsonSchemaType.Any);

			model.MinimumLength = MathUtils.Max(model.MinimumLength, schema.MinimumLength);
			model.MaximumLength = MathUtils.Min(model.MaximumLength, schema.MaximumLength);

			// not sure what is the best way to combine divisibleBy
			model.DivisibleBy = MathUtils.Max(model.DivisibleBy, schema.DivisibleBy);

			model.Minimum = MathUtils.Max(model.Minimum, schema.Minimum);
			model.Maximum = MathUtils.Max(model.Maximum, schema.Maximum);
			model.ExclusiveMinimum = model.ExclusiveMinimum || (schema.ExclusiveMinimum ?? false);
			model.ExclusiveMaximum = model.ExclusiveMaximum || (schema.ExclusiveMaximum ?? false);

			model.MinimumItems = MathUtils.Max(model.MinimumItems, schema.MinimumItems);
			model.MaximumItems = MathUtils.Min(model.MaximumItems, schema.MaximumItems);
			model.PositionalItemsValidation = model.PositionalItemsValidation || schema.PositionalItemsValidation;
			model.AllowAdditionalProperties = model.AllowAdditionalProperties && schema.AllowAdditionalProperties;
			model.AllowAdditionalItems = model.AllowAdditionalItems && schema.AllowAdditionalItems;
			model.UniqueItems = model.UniqueItems || schema.UniqueItems;
			if (schema.Enum != null)
			{
				if (model.Enum == null)
					model.Enum = new List<JToken>();

				model.Enum.AddRangeDistinct(schema.Enum, JToken.EqualityComparer);
			}
			model.Disallow = model.Disallow | (schema.Disallow ?? JsonSchemaType.None);

			if (schema.Pattern != null)
			{
				if (model.Patterns == null)
					model.Patterns = new List<string>();

				model.Patterns.AddDistinct(schema.Pattern);
			}
		}