private SyntaxList <T> Sort <T>(SyntaxList <T> members) where T : SyntaxNode
        {
            List <MethodSortInfo <T> > list = MethodSortInfo <T> .FromSyntaxList(members);

            list.Sort(new MethodSortInfoComparer <T>());
            return(MethodSortInfo <T> .ToSyntaxList(list));
        }
            public int Compare(MethodSortInfo <T> x, MethodSortInfo <T> y)
            {
                //check type
                int xTypePriority = this.GetTypePriority(x.Kind);
                int yTypePriority = this.GetTypePriority(y.Kind);

                if (xTypePriority != yTypePriority)
                {
                    return(xTypePriority - yTypePriority);
                }
                //for known types check name
                if (yTypePriority != UndefinedPriority)
                {
                    int val = _stringComparer.Compare(x.Name, y.Name);
                    if (val != 0)
                    {
                        return(val);
                    }
                }
                //check old index
                return(x.Index - y.Index);
            }