code: public void execute(TransformerImpl transformer) throws TransformerException
    {    
      XPathContext context = transformer.getXPathContext();
  
      // Verify that result has not already been set by another result
      // element. Recursion is allowed: intermediate results are cleared 
      // in the owner ElemExsltFunction execute().
      if (transformer.currentFuncResultSeen()) {
          throw new TransformerException("An EXSLT function cannot set more than one result!");
      }
  
      int sourceNode = context.getCurrentNode();
  
      // Set the return value;
      XObject var = getValue(transformer, sourceNode);
      transformer.popCurrentFuncResult();
      transformer.pushCurrentFuncResult(var);
    }
docs: Generate the EXSLT function return value, and assign it to the variable
  index slot assigned for it in ElemExsltFunction compose().