if (!visits.contains(object))
{
context.setVisits(new ChainedSet(visits));
context.getVisits().add(object);
// traverse object
BeanAnalyzer analyzer= BeanAnalyzer.analyze(resolveClass(object));
TypeContext typeContext= context.writeOpenObject();
context.writeName("@id");
Integer objectId= getObjectId(object, context);
context.getReferences().put(System.identityHashCode(object), objectId);
context.write("" + objectId);
context.writeComma();
for (BeanProperty prop : analyzer.getProperties())
{
String name= prop.getName();
path.enqueue(name);
if (context.isIncluded(prop))
{