code: def description
        article = name[0] =~ /[aeiou]/i ? 'an' : 'a'
        key_descriptions = or_list(key_types.map(&:description))
        value_descriptions = or_list(value_types.map(&:description))
        "#{article} #{name} with keys of (#{key_descriptions}) and values of (#{value_descriptions})"
      end
docs: (see Type#description)