_type = Type.NodeSetDTM;
_type = Type.NodeSet;
    public Type typeCheck(SymbolTable stable) throws TypeCheckError {	_hadPredicates = hasPredicates();	if (isAbbreviatedDot()) {	    _type = Type.Node;	}	else if (isAbbreviatedDDot()) {	    _type = Type.NodeSetDTM;	}	else {	    // Special case for '@attr' with no parent or predicates	    if (_axis == Axis.ATTRIBUTE		&& _nodeType != NodeTest.ATTRIBUTE		&& !hasParent()		&& !hasPredicates()) {		_type = Type.Node;	    }	    else {		_type = Type.NodeSetDTM;	    }	}	if (_predicates != null) {	    final int n = _predicates.size();	    for (int i = 0; i < n; i++) {		final Expression pred = (Expression)_predicates.elementAt(i);		pred.typeCheck(stable);	    }	}	return _type;    }