class_docstr: Base class for any new effect handlers that use the
  :func:`~pyro.contrib.funsor.to_funsor` and :func:`~pyro.contrib.funsor.to_data` primitives
  to allocate ``DimType.GLOBAL`` or ``DimType.VISIBLE`` dimensions.
  
  Serves as a manual "scope" for dimensions that should not be recycled by :class:`~MarkovMessenger`:
  global dimensions will be considered active until the innermost :class:`~GlobalNamedMessenger`
  under which they were initially allocated exits.
code: def __init__(self, first_available_dim=None):
      self._saved_frames = []
      super().__init__(first_available_dim=first_available_dim)
  
imports: from collections import OrderedDict
  from contextlib import ExitStack
  from pyro.contrib.funsor.handlers.runtime import _DIM_STACK, DimRequest, DimType, StackFrame
  from pyro.poutine.reentrant_messenger import ReentrantMessenger
label_desc: Use image node_id 1 to create a new GlobalNamedMessenger object from inherited base classes: NamedMessenger with example: obj = GlobalNamedMessenger(first_available_dim)