code: def _run_state_discharge_rule(
      in_avals: Sequence[core.AbstractValue],
      out_avals: Sequence[core.AbstractValue],
      *args: Any,
      jaxpr: core.Jaxpr,
      which_linear: Sequence[bool],
  ):
      del out_avals
      out_vals = run_state_p.bind(
          *args, jaxpr=jaxpr, which_linear=which_linear
      )
      new_invals = []
      for aval, out_val in zip(in_avals, out_vals):
          new_invals.append(
              out_val if isinstance(aval, AbstractRef) else None
          )
      return new_invals, out_vals
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  import dataclasses
  from functools import partial
  import operator
  from typing import Any, Callable, Protocol
  import numpy
  from jax._src import api_util
  from jax._src import ad_util
  from jax._src import config
  from jax._src import core
  from jax._src import linear_util
  from jax._src import source_info_util
  from jax._src import tree_util
  from jax._src.interpreters import ad
  from jax._src.interpreters import mlir
  from jax._src.interpreters import partial_eval
  from jax._src.lax import lax
  from jax._src.lax import slicing
  from jax._src.state import indexing
  from jax._src.state.types import AbstractRef, RefEffect
  from jax._src.state.primitives import get_p, swap_p, addupdate_p
  from jax._src.state.utils import hoist_consts_to_refs
  from jax._src.typing import Array
  from jax._src.util import safe_map, safe_zip, split_list, weakref_lru_cache, partition_list, merge_lists, split_dict
label_desc: Use image node_id 29 for calling a global function with example usage: _run_state_discharge_rule(in_avals, out_avals) and returns: new_invals,  out_vals