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
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
(see Type#description)