def __call__(cls: AbstractStructMetaclass, *args, **kwargs):
    """Creates a new instance of the class.

    Args:
      *args: Arguments to __init__.
      **kwargs: Keyword arguments to __init__.

    Returns:
      A new instance of the class.

    Raises:
      TypeError: If `pytree_dataclass` wasn't called on this class, indicating
        that it's abstract (or that the user forgot @pytree_dataclass).
    """
    if not is_pytree_dataclass_type(cls):
      raise TypeError(
          f"Can't instantiate abstract Struct subclass {cls}. Non-abstract"
          " subclasses of penzai.Struct must be decorated with"
          " @penzai.pytree_dataclass before they can be instantiated."
      )

    return super().__call__(*args, **kwargs)
Creates a new instance of the class.

    Args:
      *args: Arguments to __init__.
      **kwargs: Keyword arguments to __init__.

    Returns:
      A new instance of the class.

    Raises:
      TypeError: If `pytree_dataclass` wasn't called on this class, indicating
        that it's abstract (or that the user forgot @pytree_dataclass).
    
penzai/core/struct.py