'Create a new page object. Carries permissions information.
Permissions default to RW unless `executable` is True,
in which case permissions default to RWX.
:param int page_addr: The base address of the page.
:param int page_size: The size of the page.
:param bool executable: Whether the page is executable. Typically,
this will depend on whether the binary has an
executable stack.
:param claripy.AST permissions: A 3-bit bitvector setting specific permissions
for EXEC, READ, and WRITE'

def __init__(self, page_addr, page_size, permissions=None, executable=False):

    self._page_addr = page_addr
    self._page_size = page_size
    if (permissions is None):
        perms = (Page.PROT_READ | Page.PROT_WRITE)
        if executable:
            perms |= Page.PROT_EXEC
        self.permissions = claripy.BVV(perms, 3)
    else:
        self.permissions = permissions
