public void store(Object obj) {
		if (obj instanceof IPersistent) {
			((IPersistent) obj).store();
		}
		else {
			synchronized (this) {
				synchronized (objectCache) {
					synchronized (objMap) {
						ObjectMap.Entry e = objMap.put(obj);

						if ((e.state & Persistent.RAW) != 0) {
							throw new StorageError(StorageError.ACCESS_TO_STUB);
						}

						storeObject(obj);
						e.state &= ~Persistent.DIRTY;
					}
				}
			}
		}
	}