LOG.debug("value: " + value.getStringValue());
	public Sequence eval(		StaticContext context,		DocumentSet docs,		Sequence contextSequence,		Item contextItem)		throws XPathException {		if(getArgumentCount() < 1)			throw new XPathException("distinct-values requires an argument");		if(contextItem != null)			contextSequence = contextItem.toSequence();		Sequence values = getArgument(0).eval(context, docs, contextSequence);		TreeSet set = new TreeSet(new Comparator() {			public int compare(Object o1, Object o2) {				try {					return ((AtomicValue)o1).compareTo((AtomicValue)o2);				} catch (XPathException e) {					throw new IllegalArgumentException("cannot compare values");				}			}		});		AtomicValue value;		for(SequenceIterator i = values.iterate(); i.hasNext(); ) {			contextItem = i.nextItem();			value = contextItem.atomize();			if(!set.contains(value))				set.add(value);		}		ValueSequence result = new ValueSequence();		for(Iterator i = set.iterator(); i.hasNext(); ) {			value = (AtomicValue)i.next();			LOG.debug("value: " + value.getStringValue());			result.add(value);		}		return result;	}