public/* protected */synchronized void deallocateObject(Object obj) {
		synchronized (objectCache) {
			if (getOid(obj) == 0) {
				return;
			}

			if (useSerializableTransactions) {
				ThreadTransactionContext ctx = getTransactionContext();

				if (ctx.nested != 0) { // serializable transaction
					ctx.deleted.add(obj);
					return;
				}
			}

			deallocateObject0(obj);
		}
	}