void (boolean isCaseSensitive, Object @NotNull ... details) { if (!CHECK || ApplicationManagerEx.isInStressTest()) return; int[] childrenIds = myData.myChildrenIds; if (childrenIds.length == 0) return; VfsData vfsData = getVfsData(); CharSequence prevName = vfsData.getNameByFileId(childrenIds[0]); for (int i = 1; i < childrenIds.length; i++) { int id = childrenIds[i]; int prev = childrenIds[i - 1]; CharSequence name = vfsData.getNameByFileId(id); int cmp = compareNames(name, prevName, isCaseSensitive); prevName = name; if (cmp <= 0) { VirtualFileSystemEntry prevFile = vfsData.getFileById(prev, this, true); VirtualFileSystemEntry child = vfsData.getFileById(id, this, true); String info = "prevFile.isCaseSensitive()=" + (prevFile == null ? "?" : prevFile.isCaseSensitive()) + ';' + "child.isCaseSensitive()=" + (child == null ? "?" : child.isCaseSensitive()) + ';' + "this.isCaseSensitive()=" + this.isCaseSensitive(); String message = info + " but in " + this + " the " + verboseToString(prevFile) + "\n is wrongly placed before " + verboseToString(child) + '\n'; error(message, details); } synchronized (myData) { if (myData.isAdoptedName(name)) { List<String> adoptedNames = myData.getAdoptedNames(); myData.removeAdoptedName(name); String message = "In " + verboseToString(this) + " file '" + name + "' is both `child` and `adopted`"; error(message, "Adopted: " + adoptedNames + ";\n ", details); } } } }