code: def _for_abstract_eval(*avals, jaxpr, **__):
      # Find out for each of the `Ref`s in our jaxpr what effects they have.
      jaxpr_aval_effects = state_types.get_ref_state_effects(
          [v.aval for v in jaxpr.invars], jaxpr.effects
      )[1:]
      aval_effects = [
          {eff.replace(input_index=eff.input_index - 1) for eff in effs}
          for aval, effs in zip(avals, jaxpr_aval_effects)
          if isinstance(aval, AbstractRef)
      ]
      nonlocal_state_effects = core.join_effects(*aval_effects)
      return list(avals), nonlocal_state_effects
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  import functools
  import operator
  from typing import Any, Callable, Generic, TypeVar
  import jax.numpy
  from jax import lax
  from jax.api_util import flatten_fun_nokwargs
  from jax._src.interpreters import ad
  from jax._src.interpreters import batching
  from jax._src.interpreters import mlir
  from jax._src.interpreters import partial_eval
  from jax.tree_util import tree_flatten, tree_structure, tree_unflatten, treedef_tuple, tree_map, tree_leaves, PyTreeDef
  from jax._src import ad_util
  from jax._src import core
  from jax._src import dispatch
  from jax._src import dtypes
  from jax._src import linear_util
  from jax._src import source_info_util
  from jax._src.state.types import ReadEffect, AbstractRef, StateEffect
  from jax._src.state import discharge
  from jax._src.state import primitives
  from jax._src.state import utils
  from jax._src.state import types
  from jax._src.typing import Array
  from jax._src.util import partition_list, merge_lists, safe_map, safe_zip, split_list, split_dict, weakref_lru_cache
  from jax._src.lax.control_flow import loops
  from jax._src.lax.control_flow.common import _abstractify, _initial_style_jaxpr
label_desc: Use image node_id 5 for calling a global function with example usage: _for_abstract_eval() and returns: list,  nonlocal_state_effects