<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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