'Process a single node.
Generates a clone of the node to be used to hold the data-else portion
of the result. Also checks the keys detected to see if there are any
problems. Finally, adds in the data-else and injects the cloned node.
Returns the existing node or the modified node, if need be. Could also
return a tuple of nodes'

def process_node(self, orig_node):

    self.cloned_node = copy.deepcopy(orig_node)
    self.cloned_node.tail = ''
    self.cloned_vars = self.find_fixable_vars(self.cloned_node)
    node = super(IfElseFilter, self).process_node(orig_node)
    if (node is orig_node):
        return orig_node
    if (len(self.match_keys) > 1):
        self.errors.append(('Contains    too    many    different    keys    (%s):\n%s' % (',    '.join(self.match_keys), _get_outerhtml(orig_node))))
        return orig_node
    if self.match_keys:
        key = self.match_keys[0]
        node.set('data-if', self.get_condition(key))
        self.cloned_node.set('data-else', '')
        node.addnext(self.cloned_node)
        self.nodes_changed += 1
        return (node, self.cloned_node)
    return node
