public int CompareTo(object o)
            {
                TemplateWithPriority a = this,
                                     b = (TemplateWithPriority)o;

                //Debug.WriteLine (a.Pattern.ToString () + " ? " + b.Pattern.ToString ());
                //Debug.WriteLine (a.Priority + "   " + b.Priority);

                int r0 = a.Priority.CompareTo(b.Priority);

                //Debug.WriteLine (r0);
                if (r0 != 0)
                {
                    return(r0);
                }

                int r1 = a.TemplateID.CompareTo(b.TemplateID);

                //Debug.WriteLine (r1);
                return(r1);
            }
        public XslTemplate FindMatch(XPathNavigator node, XslTransformProcessor p)
        {
            //Debug.WriteLine ("...");
            if (!sorted)
            {
                unnamedTemplates.Sort();
                unnamedTemplates.Reverse();

                sorted = true;
            }

            for (int i = 0; i < unnamedTemplates.Count; i++)
            {
                TemplateWithPriority t = (TemplateWithPriority)unnamedTemplates [i];
                if (t.Matches(node, p))
                {
                    return(t.Template);
                }
            }

            return(null);
        }