docs: def get_array_items_description(item: Array) -> str:
      """Returns a description for an array's items.
  
      :param item: The Array type whose items should be documented.
      :returns: A string documenting what type the array's items should be.
      """
      desc = ''
      if isinstance(item.items, list):
          # This means the type has a list of types where each position is
          # mapped to a different type.  Document what each type should be.
          desc = ''
          item_pos_template = (
              ' *Item {pos} must be*: {description}{enum}{ref}')
          for pos, item in enumerate(item.items):
              _enum = ''
              ref = ''
              if issubclass(item, Enum):
                  _enum = ' Must be one of: `{}`'.format(item.enum)
                  if item.case_insensitive:
                      _enum += ' (case-insensitive)'
                  _enum += '.'
              elif issubclass(item, Object):
                  ref = get_object_reference(item)
  
              desc += item_pos_template.format(
                  pos=pos, description=item.description, enum=_enum,
                  ref=ref)
  
      else:
          # Otherwise just document the type assigned to `items`.
          desc = item.items.description
          _enum = ''
          ref = ''
          if issubclass(item.items, Enum):
              _enum = ' Must be one of: `{}`'.format(
                  item.items.enum)
              if item.items.case_insensitive:
                  _enum += ' (case-insensitive)'
              _enum += '.'
          elif issubclass(item.items, Object):
              ref = get_object_reference(item.items)
          desc = '  *Items must be*: {description}{enum}{ref}'.format(
              description=desc, enum=_enum, ref=ref)
      return desc