opendap/src/main/java/opendap/util/Tools.java
public static void probeObject(Object o) {

        Class c = o.getClass();

        Class interfaces[] = c.getInterfaces();
        Class parent = c.getSuperclass();
        Method m[] = c.getMethods();

        System.out.println("********* OBJECT PROBE *********");
        System.out.println("Class Name:  " + c.getName());
        System.out.println("Super Class: " + parent.getName());
        System.out.println("Interfaces: ");
        for (int i = 0; i < interfaces.length; i++) {
            System.out.println("    " + interfaces[i].getName());
        }


        System.out.println("Methods:");
        for (int i = 0; i < m.length; i++) {


            Class params[] = m[i].getParameterTypes();
            Class excepts[] = m[i].getExceptionTypes();
            Class ret = m[i].getReturnType();

            System.out.print("    " + ret.getName() + "  " + m[i].getName() + "(");

            for (int j = 0; j < params.length; j++) {
                if (j > 0)
                    System.out.print(", ");
                System.out.print(params[j].getName());
            }
            System.out.print(")  throws ");
            for (int j = 0; j < excepts.length; j++) {
                if (j > 0)
                    System.out.print(", ");
                System.out.print(excepts[j].getName());
            }
            System.out.println("");
        }
        System.out.println("******************");

    }
public static void probeObject(Object o) {

        Class c = o.getClass();

        Class interfaces[] = c.getInterfaces();
        Class parent = c.getSuperclass();
        Method m[] = c.getMethods();

        System.out.println("********* OBJECT PROBE *********");
        System.out.println("Class Name:  " + c.getName());
        System.out.println("Super Class: " + parent.getName());
        System.out.println("Interfaces: ");
        for (int i = 0; i < interfaces.length; i++) {
            System.out.println("    " + interfaces[i].getName());
        }


        System.out.println("Methods:");
        for (int i = 0; i < m.length; i++) {


            Class params[] = m[i].getParameterTypes();
            Class excepts[] = m[i].getExceptionTypes();
            Class ret = m[i].getReturnType();

            System.out.print("    " + ret.getName() + "  " + m[i].getName() + "(");

            for (int j = 0; j < params.length; j++) {
                if (j > 0)
                    System.out.print(", ");
                System.out.print(params[j].getName());
            }
            System.out.print(")  throws ");
            for (int j = 0; j < excepts.length; j++) {
                if (j > 0)
                    System.out.print(", ");
                System.out.print(excepts[j].getName());
            }
            System.out.println("");
        }
        System.out.println("******************");

    }
Show me lots of stuff about the passed in object