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);        }        		String prefix;		if (args[0].getLength() == 0)			prefix = "";		else			prefix = args[0].itemAt(0).getStringValue();                Sequence result;		NodeValue node = (NodeValue) args[1].itemAt(0);				Map prefixes = new HashMap();		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();				FunInScopePrefixes.collectNamespacePrefixes((ElementImpl) proxy.getNode(), prefixes);			}		} else {			Node next = (Node) node;			do {				FunInScopePrefixes.collectNamespacePrefixes((Element) next, prefixes);				next = next.getParentNode();			} while (next != null && next.getNodeType() == Node.ELEMENT_NODE);		}        		String namespace = (String) prefixes.get(prefix);		if (namespace == null)            result = Sequence.EMPTY_SEQUENCE;                    else            result = new AnyURIValue(namespace);                    if (context.getProfiler().isEnabled())             context.getProfiler().end(this, "", result);                 return result;          	}