if (_valueType != Type.NodeSet && _valueType != Type.ResultTree && _valueType != Type.String) {
if (_valueType != Type.NodeSet && _valueType != Type.String) {
    public Type typeCheck(SymbolTable stable) throws TypeCheckError {	final Type returnType = super.typeCheck(stable);	// Run type check on the key name (first argument) - must be a string,	// and if it is not it must be converted to one using string() rules.	if (_name != null) {	    final Type nameType = _name.typeCheck(stable); 	    if (_name instanceof LiteralExpr) {		final LiteralExpr literal = (LiteralExpr) _name;		_resolvedQName = 		    getParser().getQNameIgnoreDefaultNs(literal.getValue());	    }	    else if (nameType instanceof StringType == false) {		_name = new CastExpr(_name, Type.String);	    }	}	// Run type check on the value for this key. This value can be of	// any data type, so this should never cause any type-check errors.	// If the value is not a node-set then it should be converted to a	// string before the lookup is done. If the value is a node-set then	// this process (convert to string, then do lookup) should be applied	// to every node in the set, and the result from all lookups should	// be added to the resulting node-set.	_valueType = _value.typeCheck(stable);	if (_valueType != Type.NodeSet && _valueType != Type.ResultTree		&& _valueType != Type.String) 	{	    _value = new CastExpr(_value, Type.String);	}	return returnType;    }