Cleanup xcode utils
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt
index 75edc67..10a7385 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeXcodeSimulatorTestsIT.kt
@@ -8,7 +8,7 @@
 import org.gradle.util.GradleVersion
 import org.jetbrains.kotlin.gradle.testbase.*
 import org.jetbrains.kotlin.gradle.util.runProcess
-import org.jetbrains.kotlin.gradle.utils.Xcode
+import org.jetbrains.kotlin.gradle.utils.XcodeUtils
 import org.jetbrains.kotlin.konan.target.KonanTarget
 import org.junit.jupiter.api.AfterAll
 import org.junit.jupiter.api.DisplayName
@@ -21,8 +21,7 @@
 @OsCondition(supportedOn = [OS.MAC], enabledOnCI = [OS.MAC])
 class NativeXcodeSimulatorTestsIT : KGPBaseTest() {
     private val defaultIosSimulator by lazy {
-        val xcode = Xcode ?: error("XCode is expected to be defined")
-        xcode.getDefaultTestDeviceId(KonanTarget.IOS_SIMULATOR_ARM64) ?: error("No simulator found for iOS ARM64")
+        XcodeUtils.getDefaultTestDeviceId(KonanTarget.IOS_SIMULATOR_ARM64) ?: error("No simulator found for iOS ARM64")
     }
 
     @DisplayName("A user-friendly error message is produced when the standalone mode is disabled and no simulator has booted")
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt
index b522a5d..0647754 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt
@@ -47,7 +47,7 @@
 import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
 import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
 import org.jetbrains.kotlin.gradle.testing.testTaskName
-import org.jetbrains.kotlin.gradle.utils.Xcode
+import org.jetbrains.kotlin.gradle.utils.XcodeUtils
 import org.jetbrains.kotlin.gradle.utils.newInstance
 import org.jetbrains.kotlin.konan.target.HostManager
 import org.jetbrains.kotlin.konan.target.KonanTarget
@@ -588,13 +588,11 @@
 
     override fun configureTestTask(target: KotlinNativeTargetWithSimulatorTests, testTask: KotlinNativeSimulatorTest) {
         super.configureTestTask(target, testTask)
-        if (Xcode != null) {
-            val deviceIdProvider = testTask.project.provider {
-                Xcode.getDefaultTestDeviceId(target.konanTarget)
-                    ?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.")
-            }
-            testTask.device.convention(deviceIdProvider).finalizeValueOnRead()
+        val deviceIdProvider = testTask.project.provider {
+            XcodeUtils.getDefaultTestDeviceId(target.konanTarget)
+                ?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.")
         }
+        testTask.device.convention(deviceIdProvider).finalizeValueOnRead()
         testTask.standalone.convention(true).finalizeValueOnRead()
     }
 
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/Xcode.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/XcodeUtils.kt
similarity index 64%
rename from libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/Xcode.kt
rename to libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/XcodeUtils.kt
index d980d4b..27cfbd3 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/Xcode.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/XcodeUtils.kt
@@ -16,41 +16,39 @@
 import org.jetbrains.kotlin.util.capitalizeDecapitalize.toUpperCaseAsciiOnly
 
 @InternalKotlinGradlePluginApi
-val Xcode = XcodeUtils.INSTANCE
+object XcodeUtils {
 
-@InternalKotlinGradlePluginApi
-class XcodeUtils private constructor() {
-
-    companion object {
-        internal val INSTANCE: XcodeUtils? =
-            if (HostManager.hostIsMac) XcodeUtils() else null
-
-        fun bitcodeEmbeddingMode(
-            outputKind: CompilerOutputKind,
-            userMode: BitcodeEmbeddingMode?,
-            xcodeVersion: Provider<RegularFile>,
-            target: KonanTarget,
-            debuggable: Boolean,
-        ): BitcodeEmbeddingMode {
-            return when {
-                outputKind != CompilerOutputKind.FRAMEWORK -> BitcodeEmbeddingMode.DISABLE
-                userMode != null -> userMode
-                bitcodeSupported(xcodeVersion, target) -> when (debuggable) {
-                    true -> BitcodeEmbeddingMode.MARKER
-                    false -> BitcodeEmbeddingMode.BITCODE
-                }
-                else -> BitcodeEmbeddingMode.DISABLE
+    fun bitcodeEmbeddingMode(
+        outputKind: CompilerOutputKind,
+        userMode: BitcodeEmbeddingMode?,
+        xcodeVersion: Provider<RegularFile>,
+        target: KonanTarget,
+        debuggable: Boolean,
+    ): BitcodeEmbeddingMode {
+        return when {
+            outputKind != CompilerOutputKind.FRAMEWORK -> BitcodeEmbeddingMode.DISABLE
+            userMode != null -> userMode
+            bitcodeSupported(xcodeVersion, target) -> when (debuggable) {
+                true -> BitcodeEmbeddingMode.MARKER
+                false -> BitcodeEmbeddingMode.BITCODE
             }
-        }
-
-        private fun bitcodeSupported(xcodeVersion: Provider<RegularFile>, target: KonanTarget): Boolean {
-            return XcodeVersion.parse(xcodeVersion).major < 14
-                    && target.family in listOf(IOS, WATCHOS, TVOS)
-                    && target.architecture in listOf(ARM32, ARM64)
+            else -> BitcodeEmbeddingMode.DISABLE
         }
     }
 
+    private fun bitcodeSupported(xcodeVersion: Provider<RegularFile>, target: KonanTarget): Boolean {
+        return XcodeVersion.parse(xcodeVersion).major < 14
+                && target.family in listOf(IOS, WATCHOS, TVOS)
+                && target.architecture in listOf(ARM32, ARM64)
+    }
+
+    fun getDefaultTestDeviceId(target: KonanTarget): String? = defaultTestDevices[target.family]
+
     private val defaultTestDevices: Map<Family, String> by lazy {
+        if (!HostManager.hostIsMac) {
+            return@lazy emptyMap()
+        }
+
         val osRegex = "-- .* --".toRegex()
         val deviceRegex = """[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}""".toRegex()
 
@@ -81,8 +79,6 @@
         result
     }
 
-    fun getDefaultTestDeviceId(target: KonanTarget): String? = defaultTestDevices[target.family]
-
 }
 
 internal fun XcodeVersion.Companion.parse(file: Provider<RegularFile>): XcodeVersion {