def getFreeVariableMemberAccessChains(pyAstNode, isClassContext=None):
    pyAstNode = PyAstUtil.getRootInContext(pyAstNode, isClassContext)
    freeVariableMemberAccessChainsVisitor = _FreeVariableMemberAccessChainsVisitor()
    freeVariableMemberAccessChainsVisitor.visit(pyAstNode)

    return freeVariableMemberAccessChainsVisitor.freeVariableMemberAccessChains
def getFreeVariables(pyAstNode, isClassContext=None):
    pyAstNode = PyAstUtil.getRootInContext(pyAstNode, isClassContext)
    freeVarsVisitor = _FreeVarsVisitor()
    freeVarsVisitor.visit(pyAstNode)
    return freeVarsVisitor.getFreeVars()