:param state:       The state with which to execute
        :param irsb:        The PyVEX IRSB object to use for execution. If not provided one will be lifted.
        :param skip_stmts:  The number of statements to skip in processing
        :param last_stmt:   Do not execute any statements after this statement
        :param whitelist:   Only execute statements in this set
        :param inline:      This is an inline execution. Do not bother copying the state.
        :param force_addr:  Force execution to pretend that we're working at this concrete address

        :param thumb:       Whether the block should be lifted in ARM's THUMB mode.
        :param extra_stop_points:
                            An extra set of points at which to break basic blocks
        :param opt_level:   The VEX optimization level to use.
        :param insn_bytes:  A string of bytes to use for the block instead of the project.
        :param size:        The maximum size of the block, in bytes.
        :param num_inst:    The maximum number of instructions.
        :param traceflags:  traceflags to be passed to VEX. (default: 0)
        :returns:           A SimSuccessors object categorizing the block's successors

def process(self, state,
            irsb=None,
            skip_stmts=0,
            last_stmt=99999999,
            whitelist=None,
            inline=False,
            force_addr=None,
            insn_bytes=None,
            size=None,
            num_inst=None,
            traceflags=0,
            thumb=False,
            extra_stop_points=None,
            opt_level=None,
            **kwargs):
        """
        :param state:       The state with which to execute
        :param irsb:        The PyVEX IRSB object to use for execution. If not provided one will be lifted.
        :param skip_stmts:  The number of statements to skip in processing
        :param last_stmt:   Do not execute any statements after this statement
        :param whitelist:   Only execute statements in this set
        :param inline:      This is an inline execution. Do not bother copying the state.
        :param force_addr:  Force execution to pretend that we're working at this concrete address

        :param thumb:       Whether the block should be lifted in ARM's THUMB mode.
        :param extra_stop_points:
                            An extra set of points at which to break basic blocks
        :param opt_level:   The VEX optimization level to use.
        :param insn_bytes:  A string of bytes to use for the block instead of the project.
        :param size:        The maximum size of the block, in bytes.
        :param num_inst:    The maximum number of instructions.
        :param traceflags:  traceflags to be passed to VEX. (default: 0)
        :returns:           A SimSuccessors object categorizing the block's successors
        """
        if 'insn_text' in kwargs:

            if insn_bytes is not None:
                raise SimEngineError("You cannot provide both 'insn_bytes' and 'insn_text'!")

            insn_bytes = \
                self.project.arch.asm(kwargs['insn_text'], addr=kwargs.get('addr', 0),
                                      thumb=thumb, as_bytes=True)

            if insn_bytes is None:
                raise AngrAssemblyError("Assembling failed. Please make sure keystone is installed, and the assembly"
                                        " string is correct.")

        return super(SimEngineVEX, self).process(state, irsb,
                skip_stmts=skip_stmts,
                last_stmt=last_stmt,
                whitelist=whitelist,
                inline=inline,
                force_addr=force_addr,
                insn_bytes=insn_bytes,
                size=size,
                num_inst=num_inst,
                traceflags=traceflags,
                thumb=thumb,
                extra_stop_points=extra_stop_points,
                opt_level=opt_level)