NodeManager(
     GraphDatabaseService graphDb,
     AdaptiveCacheManager cacheManager,
     LockManager lockManager,
     LockReleaser lockReleaser,
     TransactionManager transactionManager,
     PersistenceManager persistenceManager,
     IdGenerator idGenerator,
     boolean useNewCaches) {
   this.graphDbService = graphDb;
   this.cacheManager = cacheManager;
   this.lockManager = lockManager;
   this.transactionManager = transactionManager;
   this.propertyIndexManager =
       new PropertyIndexManager(transactionManager, persistenceManager, idGenerator);
   this.lockReleaser = lockReleaser;
   lockReleaser.setNodeManager(this);
   lockReleaser.setPropertyIndexManager(propertyIndexManager);
   this.persistenceManager = persistenceManager;
   this.idGenerator = idGenerator;
   this.relTypeHolder =
       new RelationshipTypeHolder(transactionManager, persistenceManager, idGenerator);
   if (useNewCaches) {
     nodeCache = new SoftLruCache<Integer, NodeImpl>("NodeCache");
     relCache = new SoftLruCache<Integer, RelationshipImpl>("RelationshipCache");
   } else {
     nodeCache = new LruCache<Integer, NodeImpl>("NodeCache", 1500, this.cacheManager);
     relCache =
         new LruCache<Integer, RelationshipImpl>("RelationshipCache", 3500, this.cacheManager);
   }
   for (int i = 0; i < loadLocks.length; i++) {
     loadLocks[i] = new ReentrantLock();
   }
 }
 void releaseLock(Object resource, LockType lockType) {
   if (lockType == LockType.READ) {
     lockManager.releaseReadLock(resource);
   } else if (lockType == LockType.WRITE) {
     lockReleaser.addLockToTransaction(resource, lockType);
   } else {
     throw new LockException("Unknown lock type: " + lockType);
   }
 }
 public TransactionData getTransactionData() {
   return lockReleaser.getTransactionData();
 }
 public ArrayMap<Integer, PropertyData> getCowPropertyRemoveMap(
     Primitive primitive, boolean create) {
   return lockReleaser.getCowPropertyRemoveMap(primitive, create);
 }
 public ArrayMap<Integer, PropertyData> getCowPropertyAddMap(Primitive primitive) {
   return lockReleaser.getCowPropertyAddMap(primitive);
 }
 private void deletePrimitive(Primitive primitive) {
   lockReleaser.deletePrimitive(primitive);
 }
 public IntArray getCowRelationshipAddMap(NodeImpl node, String string, boolean create) {
   return lockReleaser.getCowRelationshipAddMap(node, string, create);
 }
 public IntArray getCowRelationshipAddMap(NodeImpl node, String string) {
   return lockReleaser.getCowRelationshipAddMap(node, string);
 }
 public ArrayMap<String, IntArray> getCowRelationshipAddMap(NodeImpl node) {
   return lockReleaser.getCowRelationshipAddMap(node);
 }
 public IntArray getCowRelationshipRemoveMap(NodeImpl node, String type, boolean create) {
   return lockReleaser.getCowRelationshipRemoveMap(node, type, create);
 }