@NotNull
  public static ProjectJdkImpl createSdk(
      @NotNull Sdk[] allSdks,
      @NotNull VirtualFile homeDir,
      SdkType sdkType,
      @Nullable SdkAdditionalData additionalData,
      @Nullable String customSdkSuggestedName) {
    final List<Sdk> sdksList = Arrays.asList(allSdks);

    String sdkPath = sdkType.sdkPath(homeDir);

    final String sdkName =
        customSdkSuggestedName == null
            ? createUniqueSdkName(sdkType, sdkPath, sdksList)
            : createUniqueSdkName(customSdkSuggestedName, sdksList);

    ProjectJdkImpl sdk = new ProjectJdkImpl(sdkName, sdkType);

    if (additionalData != null) {
      // additional initialization.
      // E.g. some ruby sdks must be initialized before
      // setupSdkPaths() method invocation
      sdk.setSdkAdditionalData(additionalData);
    }

    sdk.setHomePath(sdkPath);
    return sdk;
  }