class_docstr: Abstract base class for boxed Metadata.
  
  ``AxisMetadata`` enables arbitrary, per axis metadata for variables.
  By using ``unbox`` the metadata is stripped away to obtain the original
  variables. By using unboxing, most code handling variables does not need
  to handle ``AxisMetadata`` specifically, but can directly operate on the JAX
  arrays that they wrap.
  
  Additionally, ``AxisMetadata`` supports updating metadata whenever an axis
  is added or removed by a functional transformation
  (e.g.: ``nn.scan`` or ``nn.vmap``) using the ``add_axis`` and ``remove_axis``
  methods.
  
  By extending ``AxisMetadata``, custom metadata can be stored. See
  ``Partitioned`` for a specific implementation.
docstr: Returns the content of the AxisMetadata box.
  
  Note that unlike ``meta.unbox`` the unbox call should recursively unbox
  metadata. It should simply return value that it wraps directly even
  if that value itself is an instance of AxisMetadata.
  
  In practise, AxisMetadata subclasses should be registered as PyTree nodes to
  support passing instances to JAX and Flax APIs. The leaves returned for this
  note should correspond to the value returned by unbox.
  
  Returns:
    The unboxed value.
docstr_tok: ["Returns","the","content","of","the","AxisMetadata","box",".","Note","that","unlike","``","meta.unbox","``","the","unbox","call","should","recursively","unbox","metadata",".","It","should","simply","return","value","that","it","wraps","directly","even","if","that","value","itself","is","an","instance","of","AxisMetadata",".","In","practise",",","AxisMetadata","subclasses","should","be","registered","as","PyTree","nodes","to","support","passing","instances","to","JAX","and","Flax","APIs",".","The","leaves","returned","for","this","note","should","correspond","to","the","value","returned","by","unbox",".","Returns",":","The","unboxed","value","."]
code: def unbox(self) -> A:
      """Returns the content of the AxisMetadata box.
  
      Note that unlike ``meta.unbox`` the unbox call should recursively unbox
      metadata. It should simply return value that it wraps directly even
      if that value itself is an instance of AxisMetadata.
  
      In practise, AxisMetadata subclasses should be registered as PyTree nodes to
      support passing instances to JAX and Flax APIs. The leaves returned for this
      note should correspond to the value returned by unbox.
  
      Returns:
        The unboxed value.
      """
      pass
  
imports: import abc
  import functools
  from typing import Any, Callable, Dict, Generic, Optional, Tuple, TypeVar, Union
  import jax
  from jax.experimental import maps
  from flax import errors, struct
label_desc: Use image node_id 1 for calling the AxisMetadata obj's underlying member method code with example usage: obj.unbox() without return types