@Override protected void tryCommit() { ReadWriteTransaction parent = getRWParent(); NestedCommitRecord lastSeen; NestedCommitRecord newCommit; do { lastSeen = helpCommitAll(parent.nestedCommitQueue); snapshotValidation(lastSeen.commitNumber); Cons<VArrayEntry<?>> varrayReadsToPropagate = validateNestedArrayReads(); newCommit = new NestedCommitRecord(this, this.mergedTxs, parent.mergedTxs, varrayReadsToPropagate, arrayWrites, arrayWritesCount, lastSeen.commitNumber + 1); } while (!lastSeen.next.compareAndSet(null, newCommit)); lastSeen = parent.nestedCommitQueue; while ((lastSeen != null) && (lastSeen.commitNumber <= newCommit.commitNumber)) { if (!lastSeen.recordCommitted) { lastSeen.helpCommit(); parent.nestedCommitQueue = lastSeen; } lastSeen = lastSeen.next.get(); } }