NodeSet ancestors = proxy.getAncestors(false, true);
NodeSet ancestors = proxy.getAncestors(contextId, true);
	public Sequence eval(Sequence[] args, Sequence contextSequence)	throws XPathException {        if (context.getProfiler().isEnabled()) {            context.getProfiler().start(this);                   context.getProfiler().message(this, Profiler.DEPENDENCIES, "DEPENDENCIES", Dependency.getDependenciesName(this.getDependencies()));            if (contextSequence != null)                context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT SEQUENCE", contextSequence);        }        		Map prefixes = new HashMap();		NodeValue node = (NodeValue) args[0].itemAt(0);		if (node.getImplementationType() == NodeValue.PERSISTENT_NODE) {			NodeProxy proxy = (NodeProxy) node;			NodeSet ancestors = proxy.getAncestors(false, true);			for (Iterator i = ancestors.iterator(); i.hasNext(); ) {				proxy = (NodeProxy) i.next();				collectNamespacePrefixes((ElementImpl) proxy.getNode(), prefixes);			}		} else {			Node next = (Node) node;			do {				collectNamespacePrefixes((Element) next, prefixes);				next = next.getParentNode();			} while (next != null && next.getNodeType() == Node.ELEMENT_NODE);		}				ValueSequence result = new ValueSequence();		String prefix;		for (Iterator i = prefixes.keySet().iterator(); i.hasNext(); ) {			prefix = (String) i.next();			result.add(new StringValue(prefix));		}		        if (context.getProfiler().isEnabled())             context.getProfiler().end(this, "", result);                 return result;          	}