private static void printDebugInformation(Object o, int maxDepth, int currentDepth) { String smallIndent = Indenter.indent(currentDepth - 1); String bigIndent = Indenter.indent(currentDepth); Class c = o.getClass(); System.out.println(c.getSimpleName() + "@" + Integer.toHexString(o.hashCode()) + " {"); Field[] fields = c.getDeclaredFields(); try { for (int x = 0; x < fields.length; x++) { Field field = fields[x]; field.setAccessible(true); Class type = field.getType(); System.out.print(bigIndent + type.getSimpleName() + " " + field.getName() + " = "); // primitive checking / output here... if ((currentDepth >= maxDepth) || (type.getName().startsWith("java")) || (type.getName().startsWith("sun."))) System.out.println( StringUtil.getShortClassName(fieldObj.toString())); else StaticDebugger.printDebugInformation(fieldObj, maxDepth, currentDepth); } } catch (Exception e) {} }