if (contextItem != null) contextSequence = contextItem.toSequence();
	public Sequence eval(Sequence contextSequence, Item contextItem)		throws XPathException {		Sequence arg = getArgument(0).eval(contextSequence, contextItem);		if(arg.getLength() == 0)			return Sequence.EMPTY_SEQUENCE;		Collator collator = getCollator(contextSequence, contextItem, 2);		SequenceIterator iter = arg.unorderedIterator();		Item nextItem;		AtomicValue nextValue;		nextItem = iter.nextItem();		nextValue = nextItem.atomize();		AtomicValue max = nextValue;		if(max.getType() == Type.ATOMIC)			max = max.convertTo(Type.DOUBLE);				while(iter.hasNext()) {			nextItem = iter.nextItem();			nextValue = nextItem.atomize();			if(nextValue.getType() == Type.ATOMIC)				nextValue = nextValue.convertTo(Type.DOUBLE);			if(Type.subTypeOf(nextValue.getType(), Type.NUMBER) &&				((NumericValue)nextValue).isNaN())				return DoubleValue.NaN;							max = max.max(collator, nextValue);		}//		TODO : return a ComputableValue ?		return max;	}