int (Sdk o1, Sdk o2) { if (!(o1.getSdkType() instanceof PythonSdkType) || !(o2.getSdkType() instanceof PythonSdkType)) { return -Comparing.compare(o1.getName(), o2.getName()); } final boolean isVEnv1 = PythonSdkUtil.isVirtualEnv(o1) || PythonSdkUtil.isCondaVirtualEnv(o1); final boolean isVEnv2 = PythonSdkUtil.isVirtualEnv(o2) || PythonSdkUtil.isCondaVirtualEnv(o2); final boolean isRemote1 = PythonSdkUtil.isRemote(o1); final boolean isRemote2 = PythonSdkUtil.isRemote(o2); if (isVEnv1) { if (isVEnv2) { if (myProject != null && associatedWithCurrent(o1, myProject)) { if (associatedWithCurrent(o2, myProject)) return compareSdk(o1, o2); return -1; } return compareSdk(o1, o2); } return -1; } if (isVEnv2) return 1; if (isRemote1) { if (isRemote2) { return compareSdk(o1, o2); } return 1; } if (isRemote2) return -1; return compareSdk(o1, o2); }