def _try_get_solutions(self, address, size, access, max_solutions=<NUM_LIT>, force=False):
assert issymbolic(address)<EOL>solutions = solver.get_all_values(self.constraints, address, maxcnt=max_solutions)<EOL>crashing_condition = False<EOL>for base in solutions:<EOL><INDENT>if not self.access_ok(slice(base, base + size), access, force):<EOL><INDENT>crashing_condition = Operators.OR(address == base, crashing_condition)<EOL><DEDENT><DEDENT>if solver.can_be_true(self.constraints, crashing_condition):<EOL><INDENT>raise InvalidSymbolicMemoryAccess(address, access, size, crashing_condition)<EOL><DEDENT>return solutions<EOL>
Try to solve for a symbolic address, checking permissions when reading/writing size bytes.

:param Expression address: The address to solve for
:param int size: How many bytes to check permissions for
:param str access: 'r' or 'w'
:param int max_solutions: Will raise if more solutions are found
:param force: Whether to ignore permission failure
:rtype: list