public void enter(InstructionInfo instruction, XPathContext context) {
        int loc = instruction.getConstructType();
        if (loc == StandardNames.XSL_FUNCTION || loc == StandardNames.XSL_TEMPLATE) {
            String tag = "<";
            tag += (loc==StandardNames.XSL_FUNCTION ? "function" : "template");
            String name = null;
            if (instruction.getObjectName() != null) {
                name = instruction.getObjectName().getDisplayName();
            } else if (instruction.getProperty("name") != null) {
                name = instruction.getProperty("name").toString();
            }
            if (name != null) {
                tag += " name=\"" + name + "\"";
            }
            if (instruction.getProperty("match") != null) {
                tag += " match=\"" + instruction.getProperty("match") + "\"";
            }
            String file = instruction.getSystemId();
            if (file != null) {
                if (file.length()>15) {
                    file="*" + file.substring(file.length()-14);
                }
                tag += " file=\"" + file + "\"";
            }
            tag += " line=\"" + instruction.getLineNumber() + "\"";
            tag += " time=\"" + System.currentTimeMillis() + "\"";
            tag += ">";
            out.println(tag);
        }
    }