'Process a single node.
Bail if the node doesn\'t contain any elements that may need
fixing. (We discard the results of running this against the
original node as we really want the result from the cloned
node.) Unfortunately cloning the nodes is a more-expensive
operation than running the XPath expression so we do this
first to offset the expense.
Returns the existing node or the modified node, if need be.'

def process_node(self, orig_node):

    if (not self.find_fixable_vars(orig_node)):
        return orig_node
    node = self.copy_node(orig_node)
    self.fixable_vars = self.find_fixable_vars(node)
    if (not self.process_vars(self.fixable_vars)):
        return orig_node
    return self.replace_node(orig_node, node)
