@Override
        public int compare( Method a, Method b )
        {
            int c0 = a.getName().compareTo( b.getName() );
            
            if (c0 != 0)
            {
                return c0;
            }
            
            Class<?>[] pa = a.getParameterTypes();
            Class<?>[] pb = b.getParameterTypes();
            
            int c1 = pa.length - pb.length;
            
            if (c1 != 0)
            {
                return c1;
            }
            
            for (int i = 0; i < pa.length; i++)
            {
                String pac = pa[i].getCanonicalName();
                String pbc = pb[i].getCanonicalName();
                
                int c2 = pac.compareTo( pbc );
                
                if (c2 != 0)
                {
                    return c2;
                }
            }
            
            return 0;
        }