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) {}      
}