'Does this pattern exactly match a node?
Returns True if it matches, False if not.
If results is not None, it must be a dict which will be
updated with the nodes matching named subpatterns.
Default implementation for non-wildcard patterns.'

def match(self, node, results=None):

    if ((self.type is not None) and (node.type != self.type)):
        return False
    else:
        if (self.content is not None):
            r = None
            if (results is not None):
                r = {}
            if (not self._submatch(node, r)):
                return False
            if r:
                results.update(r)
        if ((results is not None) and self.name):
            results[self.name] = node
        return True
