def __init__(
        self,
        type: Optional[int] = None,
        content: Optional[Iterable[str]] = None,
        name: Optional[str] = None,
    ) -> None:
        """
        Initializer.  Takes optional type, content, and name.

        The type, if given, must be a symbol type (>= 256).  If the
        type is None this matches *any* single node (leaf or not),
        except if content is not None, in which it only matches
        non-leaf nodes that also match the content pattern.

        The content, if not None, must be a sequence of Patterns that
        must match the node's children exactly.  If the content is
        given, the type must not be None.

        If a name is given, the matching node is stored in the results
        dict under that key.
        """
        if type is not None:
            assert type >= 256, type
        if content is not None:
            assert not isinstance(content, str), repr(content)
            newcontent = list(content)
            for i, item in enumerate(newcontent):
                assert isinstance(item, BasePattern), (i, item)
                # I don't even think this code is used anywhere, but it does cause
                # unreachable errors from mypy. This function's signature does look
                # odd though *shrug*.
                if isinstance(item, WildcardPattern):  # type: ignore[unreachable]
                    self.wildcards = True  # type: ignore[unreachable]
        self.type = type
        self.content = newcontent  # TODO: this is unbound when content is None
        self.name = name

        Initializer.  Takes optional type, content, and name.

        The type, if given, must be a symbol type (>= 256).  If the
        type is None this matches *any* single node (leaf or not),
        except if content is not None, in which it only matches
        non-leaf nodes that also match the content pattern.

        The content, if not None, must be a sequence of Patterns that
        must match the node's children exactly.  If the content is
        given, the type must not be None.

        If a name is given, the matching node is stored in the results
        dict under that key.
        
src/blib2to3/pytree.py