uri.equals(Function.XMLDB_FUNCTION_NS)) {
uri.equals(Function.XMLDB_FUNCTION_NS) || uri.equals(Function.REQUEST_FUNCTION_NS)) {
	public Sequence eval(		DocumentSet docs,		Sequence contextSequence,		Item contextItem)		throws XPathException {		String fname = getArgument(0).eval(docs, contextSequence, contextItem).getStringValue();		QName qname = QName.parseFunction(context, fname);		String uri = qname.getNamespaceURI();		FunctionSignature signature;		if(uri.equals(Function.BUILTIN_FUNCTION_NS) || uri.equals(Function.UTIL_FUNCTION_NS) |			uri.equals(Function.XMLDB_FUNCTION_NS)) {			Class clazz = context.getClassForFunction(qname);			if (clazz == null)				throw new XPathException("function " + qname.toString() + " ( namespace-uri = " + 			qname.getNamespaceURI() + ") is not defined");			Function func = Function.createFunction(context, clazz);			signature = func.getSignature();		} else {			UserDefinedFunction func = context.resolveFunction(qname);			signature = func.getSignature();		}		MemTreeBuilder builder = context.getDocumentBuilder();		AttributesImpl attribs = new AttributesImpl();		attribs.addAttribute("", "name", "name", "CDATA", signature.getName().toString());		int nodeNr = builder.startElement("", "function", "function", attribs);		attribs.clear();		builder.startElement("", "signature", "signature", attribs);		builder.characters(signature.toString());		builder.endElement();		builder.endElement();		return ((DocumentImpl)builder.getDocument()).getNode(nodeNr);	}