'Get a converter, lazy loading it if necessary'

def __getitem__(self, name):

    if (name in self.converters):
        return self.converters[name]
    for ep in iter_entry_points(self.entry_point):
        if (ep.name == name):
            self.converters[ep.name] = ep.load()()
            return self.converters[ep.name]
    for ep in (EntryPoint.parse(c) for c in (self.registered_converters + self.internal_converters)):
        if (ep.name == name):
            if hasattr(ep, 'resolve'):
                plugin = ep.resolve()
            elif hasattr(ep, '_load'):
                plugin = ep._load()
            else:
                plugin = ep.load(require=False)
            self.converters[ep.name] = plugin()
            return self.converters[ep.name]
    raise KeyError(name)
