code: def state_action_value(self, state: State, action: Action) -> float:
      value = 0.0
      sr_dist = self._model.next_state_reward_dist(state, action)
      for _, rp in sr_dist.items():
          value += rp.prob * (
              rp.reward + self._gamma * self.state_value(state)
          )
      return value
  
imports: import pickle
  from functools import reduce
  from typing import List, Mapping, Sequence
  import torch
  from reagent.ope.estimators.sequential_estimators import Model, RLPolicy, State, ValueFunction
  from reagent.ope.estimators.types import Action, ActionDistribution, ActionSpace
  from reagent.ope.test.envs import Environment, PolicyLogGenerator
  from reagent.ope.utils import RunningAverage
label_desc: Use image node_id 3 for calling the TabularValueFunction obj's underlying member method code with example usage: obj.state_action_value(state, action) and returns: value