code: def match(self, node, results=None):
          
          if self.type is not None and node.type != self.type:
              return False
          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
docs: 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.