void initFileData(int fileId, @NotNull Object fileData) throws FileAlreadyCreatedException {
      int offset = objectOffsetInSegment(fileId);

      Object existingData = objectFieldsArray.get(offset);
      if (existingData != null) {
        //RC: it seems like concurrency issue, really -- check the locks acquired up the stack in all invocation traces

        FSRecordsImpl vfsPeer = owningVfsData.owningPersistentFS.peer();
        int parentId = vfsPeer.getParent(fileId);
        Segment parentSegment = owningVfsData.getSegment(parentId, false);
        DirectoryData parentData = (DirectoryData)parentSegment.objectFieldsArray.get(objectOffsetInSegment(parentId));

        throw new FileAlreadyCreatedException(
          describeAlreadyCreatedFile(fileId)
          + " data: " + fileData
          + ", alreadyExistingData: " + existingData
          + ", parentData: " + parentData
          + ", synchronized(parentData): " + (parentData != null ? Thread.holdsLock(parentData) : "...")
        );
      }
      objectFieldsArray.set(offset, fileData);
    }
void initFileData(int fileId, @NotNull Object fileData)