docs: def _build(value, property_path=None):
      """ The generic schema definition build method.
  
      :param value: The value to build a schema definition for
      :param List[str] property_path: The property path of the current type,
          defaults to None, optional
      :return: The built schema definition
      :rtype: Dict[str, Any]
      """
  
      if not property_path:
          property_path = []
  
      if is_config_type(value):
          return _build_config(value, property_path=property_path)
      elif is_config_var(value):
          return _build_var(value, property_path=property_path)
      elif is_builtin_type(value):
          return _build_type(value, value, property_path=property_path)
      elif is_regex_type(value):
          # NOTE: building regular expression types assumes type is string
          return _build_type(str, value, property_path=property_path)
      elif is_typing_type(value):
          return _build_type(value, value, property_path=property_path)
      return _build_type(type(value), value, property_path=property_path)