code: public FunctionInfo[] getFunctions() {
          // TODO: make this a little more useful by showing more function
          // details.
  
          ApplicationInfo[] AppInf = getApplications();
  
          FunctionInfo[] funcArray = null;
  
          try {
              MethodDescriptor[] methods = Introspector
                  .getBeanInfo(HttpContext.class)
                  .getMethodDescriptors();
              List<FunctionInfo> funcList = new Vector<FunctionInfo>(50);
  
              for (int i = 0; i < methods.length; i++) {
                  MethodDescriptor m = methods[i];
                  if (m.getMethod().getDeclaringClass() != Object.class &&
                      !m.getMethod().getName().equals("print") &&
                      !m.getMethod().getName().equals("toString")) {
                      
                      funcList.add(new FunctionInfo(m, null));
                  }
              }
              
              for (int i = 0; i < AppInf.length; i++) {
                  FunctionInfo[] ctxFunctions = AppInf[i].getContextFunctions();
                  for (int j = 0; j < ctxFunctions.length; j++) {
                      funcList.add(ctxFunctions[j]);
                  }
              }
  
              funcArray = funcList.toArray
                  (new FunctionInfo[funcList.size()]);
              Arrays.sort(funcArray);
          }
          catch (Exception ie) {
              ie.printStackTrace();
          }
  
          return funcArray;
      }
docs: Returns information about all functions available to the templates.