':return: A :class:`FeedParserDict`.'

def __getitem__(self, key):

    if (key == 'category'):
        try:
            return dict.__getitem__(self, 'tags')[0]['term']
        except IndexError:
            raise KeyError, "object    doesn't    have    key    'category'"
    elif (key == 'enclosures'):
        norel = (lambda link: FeedParserDict([(name, value) for (name, value) in link.items() if (name != 'rel')]))
        return [norel(link) for link in dict.__getitem__(self, 'links') if (link['rel'] == u'enclosure')]
    elif (key == 'license'):
        for link in dict.__getitem__(self, 'links'):
            if ((link['rel'] == u'license') and ('href' in link)):
                return link['href']
    elif (key == 'updated'):
        if ((not dict.__contains__(self, 'updated')) and dict.__contains__(self, 'published')):
            warnings.warn("To    avoid    breaking    existing    software    while    fixing    issue    310,    a    temporary    mapping    has    been    created    from    `updated`    to    `published`    if    `updated`    doesn't    exist.    This    fallback    will    be    removed    in    a    future    version    of    feedparser.", DeprecationWarning)
            return dict.__getitem__(self, 'published')
        return dict.__getitem__(self, 'updated')
    elif (key == 'updated_parsed'):
        if ((not dict.__contains__(self, 'updated_parsed')) and dict.__contains__(self, 'published_parsed')):
            warnings.warn("To    avoid    breaking    existing    software    while    fixing    issue    310,    a    temporary    mapping    has    been    created    from    `updated_parsed`    to    `published_parsed`    if    `updated_parsed`    doesn't    exist.    This    fallback    will    be    removed    in    a    future    version    of    feedparser.", DeprecationWarning)
            return dict.__getitem__(self, 'published_parsed')
        return dict.__getitem__(self, 'updated_parsed')
    else:
        realkey = self.keymap.get(key, key)
        if isinstance(realkey, list):
            for k in realkey:
                if dict.__contains__(self, k):
                    return dict.__getitem__(self, k)
        elif dict.__contains__(self, realkey):
            return dict.__getitem__(self, realkey)
    return dict.__getitem__(self, key)
