/** * Returns <code>true</code> if object has been already processed during the serialization. * Used to prevent circular dependencies. Objects are matched by identity. */ public boolean pushValue(final Object value) { for (int i = 0; i < bagSize; i++) { JsonValueContext valueContext = bag.get(i); if (valueContext.getValue() == value) { return true; } } if (bagSize == bag.size()) { lastValueContext = new JsonValueContext(value); bag.add(lastValueContext); } else { lastValueContext = bag.get(bagSize); lastValueContext.reuse(value); } bagSize++; return false; }