code: def _create_lookup(self, branched_action_space):
          
          possible_vals = [range(_num) for _num in branched_action_space]
          all_actions = [list(_action) for _action in itertools.product(*possible_vals)]
          # Dict should be faster than List for large action spaces
          action_lookup = {_scalar: _action for (_scalar, _action) in enumerate(all_actions)}
          return action_lookup
docs: Creates a Dict that maps discrete actions (scalars) to branched actions (lists).
          Each key in the Dict maps to one unique set of branched actions, and each value
          contains the List of branched actions.