void writeValue(Writer w, Object value) { try { if (value == null || value.equals(null)) { w.write("null"); return; } this.bfs(w, value); Class rootClazz = value.getClass(); writeType(w, rootClazz, value); if (isPrimitiveOrWrapper(rootClazz)) { writePrimitives(w, value); } else if (isSpecialObject(value)) { visitSpecialObjects(w, value, true); } else { writeVal(w, value); } endType(w, rootClazz); } catch (IOException e) { } }