'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.'

def __init__(self, type=None, content=None, name=None):

    if (type is not None):
        assert (type >= 256), type
    if (content is not None):
        assert (not isinstance(content, basestring)), repr(content)
        content = list(content)
        for (i, item) in enumerate(content):
            assert isinstance(item, BasePattern), (i, item)
            if isinstance(item, WildcardPattern):
                self.wildcards = True
    self.type = type
    self.content = content
    self.name = name
