public synchronized void addDocument(BSONObject document) throws MongoServerException { Integer pos = emptyPositions.poll(); if (pos == null) pos = Integer.valueOf(documents.size()); for (Index index : indexes) { index.checkAdd(document); } for (Index index : indexes) { index.add(document, pos); } dataSize.addAndGet(Utils.calculateSize(document)); if (pos == documents.size()) { documents.add(document); } else { documents.set(pos.intValue(), document); } }