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

def __getitem__(self, key):

    if (key == u'category'):
        try:
            return dict.__getitem__(self, u'tags')[0][u'term']
        except IndexError:
            raise KeyError(u"object    doesn't    have    key    'category'")
    elif (key == u'enclosures'):
        norel = (lambda link: FeedParserDict([(name, value) for (name, value) in link.items() if (name != u'rel')]))
        return [norel(link) for link in dict.__getitem__(self, u'links') if (link[u'rel'] == u'enclosure')]
    elif (key == u'license'):
        for link in dict.__getitem__(self, u'links'):
            if ((link[u'rel'] == u'license') and (u'href' in link)):
                return link[u'href']
    elif (key == u'updated'):
        if ((not dict.__contains__(self, u'updated')) and dict.__contains__(self, u'published')):
            warnings.warn(u"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, u'published')
        return dict.__getitem__(self, u'updated')
    elif (key == u'updated_parsed'):
        if ((not dict.__contains__(self, u'updated_parsed')) and dict.__contains__(self, u'published_parsed')):
            warnings.warn(u"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, u'published_parsed')
        return dict.__getitem__(self, u'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)
