public static synchronized String toDebugString(Object _pojo)
    {
        Class dataClass = _pojo.getClass();
        StringBuffer data = new StringBuffer(100);
        data.append("\n");
        if (!dataClass.getName().equalsIgnoreCase("java.lang.Object"))
            data.append("---------- ").append(dataClass.getSimpleName()).append(" ----------\n");

        while ((dataClass != null) && (dataClass != Object.class))
        {
            Field fieldList[] = dataClass.getDeclaredFields();
            AccessibleObject.setAccessible(fieldList, true);
            StringBuffer fldstr = new StringBuffer(50);
            for (Field fld : fieldList)
            {
//                String typeclass = fld.getType().getName();
//                if (isValidType(fld.getType()))
//                {
                //data += "(" + typeclass + ")";
                fldstr.setLength(0);
                fldstr.append(fld.getName()).append(" = ");
                try
                {
                    if (fld.get(_pojo) != null && fld.get(_pojo).toString() != null && fld.get(_pojo).toString().length() > 0)
                        fldstr.append(fld.get(_pojo));
                }
                catch (IllegalAccessException iae)
                {
                    fldstr.append("????");
                }
                data.append(fldstr).append("\n");
//                }
//                else
//                    if (verbose)
//                        log.debug("(" + typeclass + ") " + fld.getName() + " skipped...");
            }
            dataClass = dataClass.getSuperclass();
        }
        data.append("-----------------------------------\n");
        return data.toString();
    }