'Create a new StackedObjectProxy
If a default is given, its used in every thread if no other object
has been pushed on.'

def __init__(self, default=NoDefault, name='Default'):

    self.__dict__['____name__'] = name
    self.__dict__['____local__'] = threadinglocal.local()
    if (default is not NoDefault):
        self.__dict__['____default_object__'] = default
