   * `additional_items` disallow additional items, if set to false. The keyword
     can also contain a schema to specify the type of additional items.
   * `additional_properties` disallow additional properties, if set to true.
+  * 'all_of' a list of schemas they must all be valid.
+  * 'any_of' a list of schemas with any valid schema.
   * `const` specifies a constant.
   * `definitions` contains schemas for reuse.
   * `dependencies` allows the schema of the map to change based on the presence

  * `minimum` the minimum value.
  * `multiple_of` is a number greater 0. The value has to be a multiple of this
    number.
  * `one_of` the given data must be valid against exactly one of the given
    subschemas.
  * `pattern_properties` specifies schemas for properties by patterns

  @type t :: %Schema{
          additional_items: Xema.t() | Schema.t() | boolean | nil,
          additional_properties: map | boolean | nil,
          all_of: [Schema.t()] | nil,
          any_of: [Schema.t()] | nil,
          const: any,
          definitions: map,
          dependencies: list | map | nil,
