private boolean isShareable(ScopeLogicVariable var) {
        if (compareComponentOrder(this.componentOrder, var.componentOrder) == -1 || this.equals(var)) {
            return false;
        }
        
        int generationGap = this.generation - var.generation;

        //如果两个变量的代数不同，代数多的一直向上获取parent直到获取到和另一个变量相同的代数
        if (generationGap >= 0) {// 如果当前变量的代数多，既辈份低
            // 当前变量向上获取parent直到获取到和另一个变量相同的辈份
            ScopeComponent currCom = this;
            while (generationGap > 0) {
                currCom = currCom.getParent();
                generationGap--;
            }
            // 如果他们的父类相同说明不能share
            if (currCom.getParent().equals(var.getParent())) {
                return false;
            }
        }
        return true;
    }