boolean (List<VFileEvent> events, NewVirtualFileSystem fs, @Nullable NewVirtualFile parent, NewVirtualFile child, FileAttributes childAttributes) { boolean currentIsDirectory = child.isDirectory(), upToDateIsDirectory = childAttributes.isDirectory(); boolean currentIsSymlink = child.is(VFileProperty.SYMLINK), upToDateIsSymlink = childAttributes.isSymLink(); boolean currentIsSpecial = child.is(VFileProperty.SPECIAL), upToDateIsSpecial = childAttributes.isSpecial(); boolean isFileTypeChanged = currentIsSymlink != upToDateIsSymlink || currentIsSpecial != upToDateIsSpecial; if (currentIsDirectory != upToDateIsDirectory || (isFileTypeChanged && !Boolean.getBoolean("refresh.ignore.file.type.changes"))) { scheduleDeletion(events, child); if (parent != null) { var t = System.nanoTime(); String symlinkTarget = upToDateIsSymlink ? fs.resolveSymLink(child) : null; myIoTime.addAndGet(System.nanoTime() - t); scheduleCreation(events, parent, child.getName(), childAttributes, symlinkTarget); } else { LOG.error("transgender orphan: " + child + ' ' + childAttributes); } return true; } return false; }