def __init__(self, space, w_self, size):
        self = fresh_virtualizable(self)
        AbstractStrategy.__init__(self, space, w_self, size)

        # If w_self is not given, is_block_context must be set explicitely!
        if w_self is not None:
            if w_self.getclass(space).is_same_object(space.w_BlockContext):
                self.is_block_context = True
            elif w_self.getclass(space).is_same_object(space.w_MethodContext):
                self.is_block_context = False
            else:
                raise ValueError("Object %s cannot be treated like a Context object!" % w_self)

        self._s_sender = None
        if w_self is not None:
            self._w_self_size = w_self.size()
        else:
            self._w_self_size = size
        self._w_self = w_self
        self.instances_w = {}
        self.state = InactiveContext
        self.store_pc(0)

        # From BlockContext
        self._w_home = None
        self._initialip = 0
        self._eargc = 0
        # From MethodContext
        self.closure = None
        self._w_method = None
        self._w_receiver = None
        self._is_BlockClosure_ensure = False
    def __init__(self, space, w_self, size):
        self = fresh_virtualizable(self)
        AbstractStrategy.__init__(self, space, w_self, size)

        # If w_self is not given, is_block_context must be set explicitely!
        if w_self is not None:
            if w_self.getclass(space).is_same_object(space.w_BlockContext):
                self.is_block_context = True
            elif w_self.getclass(space).is_same_object(space.w_MethodContext):
                self.is_block_context = False
            else:
                raise ValueError(
                    "Object %s cannot be treated like a Context object!" %
                    w_self)

        self._s_sender = None
        if w_self is not None:
            self._w_self_size = w_self.size()
        else:
            self._w_self_size = size
        self._w_self = w_self
        self.instances_w = {}
        self.state = InactiveContext
        self.store_pc(0)

        # From BlockContext
        self._w_home = None
        self._initialip = 0
        self._eargc = 0
        # From MethodContext
        self.closure = None
        self._w_method = None
        self._w_receiver = None
        self._is_BlockClosure_ensure = False
    def __init__(self, space, w_self, size, w_class):
        self = fresh_virtualizable(self)
        AbstractStrategy.__init__(self, space, w_self, size, w_class)

        self._s_sender = None
        if w_self is not None:
            self._w_self_size = w_self.size()
        else:
            self._w_self_size = size
        self._w_self = w_self
        self.state = InactiveContext
        self.store_pc(0)

        # From MethodContext
        self.closure = None
        self._w_method = None
        self._w_receiver = None
        # Extra data
        self.extra_data = None