docs: def _build_array_type(var, property_path=None):
      """ Builds schema definitions for array type values.
  
      :param var: The array type value
      :param List[str] property_path: The property path of the current type,
          defaults to None, optional
      :param property_path: [type], optional
      :return: The built schema definition
      :rtype: Dict[str, Any]
      """
  
      if not property_path:
          property_path = []
  
      schema = {"type": "array", "items": {"$id": f"#/{'/'.join(property_path)}/items"}}
      if is_builtin_type(var):
          return schema
  
      if is_config_var(var):
          schema.update(
              _build_attribute_modifiers(
                  var,
                  {
                      "min": "minItems",
                      "max": "maxItems",
                      "unique": "uniqueItems",
                      "contains": "contains",
                  },
              )
          )
  
          if is_typing_type(var.type) and len(var.type.__args__) > 0:
              # NOTE: typing.List only allows one typing argument
              nested_type = var.type.__args__[0]
              schema["items"].update(
                  _build(nested_type, property_path=property_path + ["items"])
              )
      elif is_typing_type(var):
          nested_type = var.__args__[0]
          schema["items"].update(
              _build(nested_type, property_path=property_path + ["items"])
          )
  
      return schema