<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find(self, addr, what, max_search=None, max_symbolic_bytes=None, default=None, step=1, disable_actions=False, inspect=True, chunk_size=None):
 """ Returns the address of bytes equal to 'what', starting from 'start'. Note that, if you don't specify a default value, this search could cause the state to go unsat if no possible matching byte exists. :param addr: The start address. :param what: What to search for; :param max_search: Search at most this many bytes. :param max_symbolic_bytes: Search through at most this many symbolic bytes. :param default: The default value, if what you're looking for wasn't found. :param step: The stride that the search should use while scanning memory :param disable_actions: Whether to inhibit the creation of SimActions for memory access :param inspect: Whether to trigger SimInspect breakpoints :returns: An expression representing the address of the matching byte. """

        addr = _raw_ast(addr)
        what = _raw_ast(what)
        default = _raw_ast(default)

        if isinstance(what, bytes):
            # Convert it to a BVV
            what = claripy.BVV(what, len(what) * self.state.arch.byte_width)

        r,c,m = self._find(addr, what, max_search=max_search, max_symbolic_bytes=max_symbolic_bytes, default=default,
                           step=step, disable_actions=disable_actions, inspect=inspect, chunk_size=chunk_size)
        if o.AST_DEPS in self.state.options and self.category == 'reg':
            r = SimActionObject(r, reg_deps=frozenset((addr,)))

        return r,c,m