# Path: lang/femtocode/thirdparty/meta/asttools/visitors/symbol_visitor.py
# def get_symbols(node, ctx_types=(ast.Load, ast.Store)):
#     '''
#     Returns all symbols defined in an ast node. 
#     
#     if ctx_types is given, then restrict the symbols to ones with that context.
#     
#     :param node: ast node
#     :param ctx_types: type or tuple of types that may be found assigned to the `ctx` attribute of 
#                       an ast Name node.
#         
#     '''
#     gen = SymbolVisitor(ctx_types)
#     return gen.visit(node)


from . import Visitor, visit_children
from ..visitors.symbol_visitor import get_symbols
from ...utils import py2op
import ast
    def stable_lhs(self):
        assert not (self._stable_lhs & self._cond_lhs)
        return self._stable_lhs

    @property
    def stable_rhs(self):
        assert not (self._stable_rhs & self._cond_rhs)
        return self._stable_rhs

    @property
    def cond_rhs(self):
        assert not (self._stable_rhs & self._cond_rhs)
        return self._cond_rhs

    @property
    def cond_lhs(self):
        assert not (self._stable_lhs & self._cond_lhs)
        return self._cond_lhs

    @property
    def lhs(self):
        assert not (self._stable_lhs & self._cond_lhs)
        return self._cond_lhs | self._stable_lhs

    @property
    def rhs(self):
        assert not (self._stable_rhs & self._cond_rhs)
        return self._cond_rhs | self._stable_rhs

    def visitAugAssign(self, node):

# Path: lang/femtocode/thirdparty/meta/asttools/visitors/symbol_visitor.py
# def get_symbols(node, ctx_types=(ast.Load, ast.Store)):
#     '''
#     Returns all symbols defined in an ast node. 
#     
#     if ctx_types is given, then restrict the symbols to ones with that context.
#     
#     :param node: ast node
#     :param ctx_types: type or tuple of types that may be found assigned to the `ctx` attribute of 
#                       an ast Name node.
#         
#     '''
#     gen = SymbolVisitor(ctx_types)
#     return gen.visit(node)


# Path: lang/femtocode/thirdparty/meta/asttools/visitors/cond_symbol_visitor.py
from . import Visitor, visit_children
from ..visitors.symbol_visitor import get_symbols
from ...utils import py2op
import ast

    def stable_lhs(self):
        assert not (self._stable_lhs & self._cond_lhs)
        return self._stable_lhs

    @property
    def stable_rhs(self):
        assert not (self._stable_rhs & self._cond_rhs)
        return self._stable_rhs

    @property
    def cond_rhs(self):
        assert not (self._stable_rhs & self._cond_rhs)
        return self._cond_rhs

    @property
    def cond_lhs(self):
        assert not (self._stable_lhs & self._cond_lhs)
        return self._cond_lhs

    @property
    def lhs(self):
        assert not (self._stable_lhs & self._cond_lhs)
        return self._cond_lhs | self._stable_lhs

    @property
    def rhs(self):
        assert not (self._stable_rhs & self._cond_rhs)
        return self._cond_rhs | self._stable_rhs

    def visitAugAssign(self, node):

        values = get_symbols(node.value)