/**
  * Bind a function, given the URI and local parts of the function name, and the list of
  * expressions supplied as arguments. This method is called at compile time.
  *
  * @param functionName
  * @param staticArgs The expressions supplied statically in the function call. The intention is
  *     that the static type of the arguments (obtainable via getItemType() and getCardinality()
  *     may be used as part of the binding algorithm.
  * @param env
  * @return An object representing the extension function to be called, if one is found; null if no
  *     extension function was found matching the required name and arity.
  * @throws net.sf.saxon.trans.XPathException if a function is found with the required name and
  *     arity, but the implementation of the function cannot be loaded or used; or if an error
  *     occurs while searching for the function; or if this function library "owns" the namespace
  *     containing the function call, but no function was found.
  */
 public Expression bind(StructuredQName functionName, Expression[] staticArgs, StaticContext env)
     throws XPathException {
   XSLFunction fn = stylesheet.getStylesheetFunction(functionName, staticArgs.length);
   if (fn == null) {
     return null;
   }
   if (fn.isOverriding() != overriding) {
     return null;
   }
   UserFunctionCall fc = new UserFunctionCall();
   fn.registerReference(fc);
   fc.setFunctionName(functionName);
   fc.setArguments(staticArgs);
   fc.setConfirmed(true);
   return fc;
 }