public boolean availableFor(ScopeComponent scopeComponent) {
        if (this.equals(scopeComponent)) {
            return true;
        }

        if (compareComponentOrder(this.componentOrder, scopeComponent.componentOrder) == 1) {
        	return false;
        }

        // 当前变量与com相差的代数
        int currDiff = scopeComponent.generation - this.generation;

        // 如果两个变量的代数不同，代数多的一直向上获取parent直到获取到和另一个变量相同的代数

        if (currDiff >= 0) {// 如果当前变量的代数少，既辈份高
            // Com向上获取parent直到获取到和另一个变量相同的辈份
            // Component currCom = com;
            while (currDiff > 0) {
                scopeComponent = scopeComponent.getParent();
                currDiff--;
            }
            // 如果他们的父类相同说明可是使用
            if (this.getParent().equals(scopeComponent.getParent())) {
                return true;
            }
        }
        return false;
    }