'od.pop(k[,d]) -> v, remove specified key and return the corresponding
value.  If key is not found, d is returned if given, otherwise KeyError
is raised.'

def pop(self, key, default=__marker):

    if (key in self):
        result = self[key]
        del self[key]
        return result
    if (default is self.__marker):
        raise KeyError(key)
    return default
