code: def update_index(self):
          idx = {}
          for _, p in sorted(self.permissions.items(), key=lambda x: str(x[0])):
              branch = idx
              parent_p = const.PERM_DENY
              for k in p.namespace.keys:
                  if not k in branch:
                      branch[k] = {"__": parent_p}
                      branch[k].update(__implicit=True)
                  branch = branch[k]
                  parent_p = branch["__"]
              branch["__"] = p.value
              branch["__implicit"] = False
          self.index = idx
          ramap = {}
          def update_ramap(branch_idx):
              r = {"__": False}
              for k, v in list(branch_idx.items()):
                  if k != "__" and k != "__implicit":
                      r[k] = update_ramap(v)
              if branch_idx["__"] is not None and (branch_idx["__"] & const.PERM_READ) != 0:
                  r["__"] = True
              return r
          for k, v in list(idx.items()):
              ramap[k] = update_ramap(v)
          self.read_access_map = ramap
          return self.index