int (VirtualFile one, VirtualFile two) { if (one == null && two == null) return 0; if (one == null) return -1; if (two == null) return 1; if (sortDirectories) { boolean isDirectory = one.isDirectory(); if (isDirectory != two.isDirectory()) return isDirectory ? -1 : 1; if (!isDirectory && sortArchives && descriptor.isChooseJarContents()) { boolean isArchive = FileElement.isArchive(one); if (isArchive != FileElement.isArchive(two)) return isArchive ? -1 : 1; } } return StringUtil.naturalCompare(one.getName(), two.getName()); }