@Override
        public void start() throws IOException {
          try {
            Files.createFile(mappingLockFile);
          }
          catch (NoSuchFileException e) {
            //NoSuchFileException usually means 'parent dir doesn't exist'
            Path parent = mappingLockFile.getParent();
            if (!Files.exists(parent)) {
              Path firstExistingParent = firstExistingParent(parent);
              throw new IOException("Parent dir[" + parent.toAbsolutePath() + "] is not exist/was removed -- can't create .lock-file.\n" +
                                    "First existing parent: [" + firstExistingParent + "]", e);
            }
            else {
              throw new IOException("Can't create .lock-file for unknown reasons", e);
            }
          }
          catch (FileAlreadyExistsException e) {
            throw new IOException("lock-file[" + mappingLockFile + "] already created -- concurrent access?", e);
          }
        }
@Override
        public void start()