':see: Expression.free()'

def free(self):

    conds_free = reduce(operator.or_, [c.free() for c in self.conds], set())
    if self.consequent:
        conds_free.update(self.consequent.free())
    return (conds_free - set(self.refs))
