[
  {
    "path": ".editorconfig",
    "content": "# EditorConfig is awesome: https://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\nmax_line_length = 120\n\n[*.swift]\nindent_style = tab\n\n[*.md]\nindent_style = space\nindent_size = 4\n\n[*.json]\nindent_style = tab\n\n[*.yml]\nindent_style = space\nindent_size = 4\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: Bug Report\ndescription: Something isn't working as expected\nlabels: [bug]\nbody:\n- type: markdown\n  attributes:\n    value: |\n      Thank you for contributing to SwiftUI Introspect!\n\n      Before you submit your issue, please complete each text area below with the relevant details for your bug, and complete the steps in the checklist.\n- type: textarea\n  attributes:\n    label: Description\n    description: |\n      A short description of the incorrect behavior.\n\n      If you think this issue has been recently introduced and did not occur in an earlier version, please note that. If possible, include the last version that the behavior was correct in addition to your current version.\n  validations:\n    required: true\n- type: checkboxes\n  attributes:\n    label: Checklist\n    options:\n    - label: I have read the [README](https://github.com/siteline/swiftui-introspect#swiftui-introspect) before submitting this report.\n      required: true\n    - label: This issue hasn't been addressed in an [existing GitHub issue](https://github.com/siteline/swiftui-introspect/issues) or [discussion](https://github.com/siteline/swiftui-introspect/discussions).\n      required: true\n- type: textarea\n  attributes:\n    label: Expected behavior\n    description: Describe what you expected to happen.\n  validations:\n    required: false\n- type: textarea\n  attributes:\n    label: Actual behavior\n    description: Describe or copy/paste the behavior you observe.\n  validations:\n    required: false\n- type: textarea\n  attributes:\n    label: Steps to reproduce\n    description: |\n      Explanation of how to reproduce the incorrect behavior.\n\n      This could include an attached project or link to code that is exhibiting the issue, and/or a screen recording.\n\n      Please make sure the code you are sharing is minimal and can be run independently of your project, otherwise it may be difficult to debug and will take longer to fix.\n    placeholder: |\n      1. ...\n  validations:\n    required: false\n- type: input\n  attributes:\n    label: Version information\n    description: The version of SwiftUIIntrospect used to reproduce this issue.\n    placeholder: \"'0.11.0' for example, or a commit hash\"\n- type: input\n  attributes:\n    label: Destination operating system\n    description: The OS running the SwiftUIIntrospect module.\n    placeholder: \"'iOS 17' for example\"\n- type: input\n  attributes:\n    label: Xcode version information\n    description: The version of Xcode used to reproduce this issue.\n    placeholder: \"The version displayed from 'Xcode 〉About Xcode'\"\n- type: textarea\n  attributes:\n    label: Swift Compiler version information\n    description: The version of Swift used to reproduce this issue.\n    placeholder: Output from 'xcrun swiftc --version'\n    render: shell\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\n\ncontact_links:\n  - name: Project Discussion\n    url: https://github.com/siteline/swiftui-introspect/discussions\n    about: Q&A, ideas, and more\n  - name: Documentation\n    url: https://github.com/siteline/swiftui-introspect#swiftui-introspect\n    about: Read SwiftUI Introspect's documentation\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - \"**\"\n  schedule:\n    - cron: \"3 3 * * 2\" # 3:03 AM, every Tuesday\n\nconcurrency:\n  group: ci-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  # TODO: Re-enable when --ifdef no-indent works as intended\n  # lint:\n  #   name: Lint\n  #   runs-on: macos-latest\n  #   steps:\n  #     - name: Git Checkout\n  #       uses: actions/checkout@v5\n\n  #     - name: Install SwiftFormat\n  #       run: |\n  #         brew unlink swiftformat\n  #         brew install swiftformat --HEAD\n\n  #     - name: SwiftFormat Lint\n  #       run: swiftformat --lint . --reporter github-actions-log\n\n  lint-podspec:\n    if: github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]')\n    name: Lint Podspec\n    runs-on: macos-26\n    steps:\n      - name: Git Checkout\n        uses: actions/checkout@v5\n        with:\n          fetch-depth: 0 # required to be able to find Git tags\n\n      - name: Select Xcode\n        run: sudo xcodes select 26.3\n\n      - name: Install Runtimes\n        uses: nick-fields/retry@v3\n        with:\n          timeout_minutes: 15\n          max_attempts: 3\n          command: xcodebuild -downloadAllPlatforms\n\n      - name: Lint Podspec\n        run: |\n          set -eo pipefail\n          export LIB_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)\n          pod lib lint SwiftUIIntrospect.podspec --allow-warnings --skip-tests\n\n  ci:\n    if: github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]')\n    name: ${{ matrix.name }}\n    runs-on: ${{ matrix.runner || 'macos-26' }}\n    strategy:\n      fail-fast: false\n      matrix:\n        include:\n          # iOS (iPhone)\n          - { name: \"iOS 15.5\",         runtime: \"iOS 15.5\",       device: \"iPhone 13 Pro\" }\n          - { name: \"iOS 16.4\",         runtime: \"iOS 16.4\",       device: \"iPhone 14 Pro\" }\n          - { name: \"iOS 17.5\",         runtime: \"iOS 17.5\",       device: \"iPhone 15 Pro\" }\n          - { name: \"iOS 18.5\",         runtime: \"iOS 18.5\",       device: \"iPhone 16 Pro\",                runner: macos-15 }\n          - { name: \"iOS 26.2\",         runtime: \"iOS 26.2\",       device: \"iPhone 17 Pro\" }\n          # iPadOS\n          - { name: \"iPadOS 15.5\",      runtime: \"iOS 15.5\",       device: \"iPad Pro (11-inch) (3rd generation)\" }\n          - { name: \"iPadOS 16.4\",      runtime: \"iOS 16.4\",       device: \"iPad Pro (11-inch) (4th generation)\" }\n          - { name: \"iPadOS 17.5\",      runtime: \"iOS 17.5\",       device: \"iPad Pro 11-inch (M4)\" }\n          - { name: \"iPadOS 18.5\",      runtime: \"iOS 18.5\",       device: \"iPad Pro 11-inch (M4)\",        runner: macos-15 }\n          - { name: \"iPadOS 26.0\",      runtime: \"iOS 26.0\",       device: \"iPad Pro 11-inch (M4)\" }\n          # macOS / macCatalyst\n          - { name: \"macCatalyst 15\",  destination: \"platform=macOS,variant=Mac Catalyst\",  runner: macos-15 }\n          - { name: \"macCatalyst 26\",  destination: \"platform=macOS,variant=Mac Catalyst\" }\n          - { name: \"macOS 15\",        destination: \"platform=macOS\",                       runner: macos-15 }\n          - { name: \"macOS 26\",        destination: \"platform=macOS\" }\n          # tvOS\n          - { name: \"tvOS 15.4\",        runtime: \"tvOS 15.4\",      device: \"Apple TV\" }\n          - { name: \"tvOS 16.4\",        runtime: \"tvOS 16.4\",      device: \"Apple TV\" }\n          - { name: \"tvOS 17.5\",        runtime: \"tvOS 17.5\",      device: \"Apple TV\" }\n          - { name: \"tvOS 18.5\",        runtime: \"tvOS 18.5\",      device: \"Apple TV\",                     runner: macos-15 }\n          - { name: \"tvOS 26.2\",        runtime: \"tvOS 26.2\",      device: \"Apple TV\" }\n          # visionOS\n          - { name: \"visionOS 1.2\",     runtime: \"visionOS 1.2\",   device: \"Apple Vision Pro (at 2732x2048)\" }\n          - { name: \"visionOS 2.5\",     runtime: \"visionOS 2.5\",   device: \"Apple Vision Pro (at 2732x2048)\", runner: macos-15 }\n          - { name: \"visionOS 26.2\",    runtime: \"visionOS 26.2\",  device: \"Apple Vision Pro\" }\n          # watchOS (build-only, no test support)\n          - { name: \"watchOS 8.5\",      runtime: \"watchOS 8.5\",    device: \"Apple Watch Series 7 (45mm)\",  build_only: true }\n          - { name: \"watchOS 9.4\",      runtime: \"watchOS 9.4\",    device: \"Apple Watch Series 8 (45mm)\",  build_only: true }\n          - { name: \"watchOS 10.5\",     runtime: \"watchOS 10.5\",   device: \"Apple Watch Series 9 (45mm)\",  build_only: true }\n          - { name: \"watchOS 11.5\",     runtime: \"watchOS 11.5\",   device: \"Apple Watch Series 10 (42mm)\", build_only: true, runner: macos-15 }\n          - { name: \"watchOS 26.2\",     runtime: \"watchOS 26.2\",   device: \"Apple Watch Series 11 (42mm)\", build_only: true }\n    steps:\n      - name: Git Checkout\n        uses: actions/checkout@v5\n\n      - name: Select Xcode\n        run: sudo xcodes select 26.3\n\n      - name: Install ${{ matrix.runtime }} Runtime\n        if: matrix.runtime\n        uses: nick-fields/retry@v3\n        with:\n          timeout_minutes: 10\n          max_attempts: 3\n          command: |\n            RUNTIME=\"${{ matrix.runtime }}\"\n            if ! xcodes runtimes 2>/dev/null | grep -qF \"$RUNTIME (Installed)\"; then\n              sudo xcodes runtimes install \"$RUNTIME\" --aria2 $(which aria2c)\n            fi\n\n      - name: Create Simulator\n        if: matrix.device\n        run: |\n          set -eo pipefail\n          xcrun simctl delete all\n\n          # Look up runtime identifier by display name (handles internal names like xrOS for visionOS)\n          RUNTIME=\"${{ matrix.runtime }}\"\n          RUNTIME_ID=$(xcrun simctl list runtimes -j | jq -r --arg name \"$RUNTIME\" '.runtimes[] | select(.isAvailable) | select(.name == $name) | .identifier')\n          if [ -z \"$RUNTIME_ID\" ] || [ \"$RUNTIME_ID\" = \"null\" ]; then\n            echo \"::error::Runtime '$RUNTIME' not found. Available:\"\n            xcrun simctl list runtimes\n            exit 1\n          fi\n          echo \"Runtime: $RUNTIME_ID\"\n\n          # Look up device type by display name, with fallback identifier construction\n          DEVICE_TYPE=$(xcrun simctl list devicetypes -j | jq -r --arg name \"${{ matrix.device }}\" '.devicetypes[] | select(.name == $name) | .identifier')\n          if [ -z \"$DEVICE_TYPE\" ] || [ \"$DEVICE_TYPE\" = \"null\" ]; then\n            DEVICE_TYPE=\"com.apple.CoreSimulator.SimDeviceType.$(echo \"${{ matrix.device }}\" | sed 's/[()]//g; s/  */-/g; s/[^A-Za-z0-9-]//g')\"\n            echo \"Device type not found by name, using fallback: $DEVICE_TYPE\"\n          fi\n\n          UDID=$(xcrun simctl create \"${{ matrix.device }}\" \"$DEVICE_TYPE\" \"$RUNTIME_ID\")\n          echo \"SIM_UDID=$UDID\" >> \"$GITHUB_ENV\"\n          echo \"Created simulator: ${{ matrix.device }} -> $UDID\"\n\n      - name: Build Showcase\n        if: ${{ !matrix.build_only }}\n        run: |\n          set -eo pipefail\n          xcodebuild build \\\n            -scheme Showcase \\\n            -destination \"${{ matrix.destination || format('id={0}', env.SIM_UDID) }}\" \\\n            -configuration Debug \\\n            | xcbeautify\n\n      - name: Build Library\n        if: ${{ matrix.build_only == true }}\n        run: |\n          set -eo pipefail\n          xcodebuild build \\\n            -scheme SwiftUIIntrospect \\\n            -destination \"id=${{ env.SIM_UDID }}\" \\\n            -configuration Debug \\\n            | xcbeautify\n\n      - name: Run Tests\n        if: ${{ !matrix.build_only }}\n        run: |\n          set -eo pipefail\n          xcodebuild test \\\n            -scheme SwiftUIIntrospectTests \\\n            -destination \"${{ matrix.destination || format('id={0}', env.SIM_UDID) }}\" \\\n            -configuration Debug \\\n            | xcbeautify\n\n  framework-archiving:\n    if: github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]')\n    name: Archive Framework (${{ matrix.platform }})\n    runs-on: macos-26\n    strategy:\n      fail-fast: false\n      matrix:\n        include:\n          - { platform: iOS,         destination: \"generic/platform=iOS\" }\n          - { platform: macCatalyst, destination: \"platform=macOS,variant=Mac Catalyst\" }\n          - { platform: macOS,       destination: \"generic/platform=macOS\" }\n          - { platform: tvOS,        destination: \"generic/platform=tvOS\" }\n          - { platform: visionOS,    destination: \"generic/platform=visionOS\" }\n          - { platform: watchOS,     destination: \"generic/platform=watchOS\" }\n    steps:\n      - name: Git Checkout\n        uses: actions/checkout@v5\n\n      - name: Select Xcode\n        run: sudo xcodes select 26.3\n\n      - name: Archive Framework\n        run: |\n          xcodebuild archive \\\n            -scheme SwiftUIIntrospectTestFramework \\\n            -destination \"${{ matrix.destination }}\" \\\n            -archivePath .build/archiving/${{ matrix.platform }} \\\n            SKIP_INSTALL=NO \\\n            BUILD_LIBRARY_FOR_DISTRIBUTION=YES\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n/.build\n/.swiftpm\n/Packages\n/*.xcodeproj\nxcuserdata/\nDerivedData/\n.netrc\n\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots/**/*.png\nfastlane/test_output\n"
  },
  {
    "path": ".spi.yml",
    "content": "version: 1\nbuilder:\n  configs:\n    - documentation_targets: [SwiftUIIntrospect]\n"
  },
  {
    "path": ".swift-version",
    "content": "6.0\n"
  },
  {
    "path": ".swiftformat",
    "content": "# SwiftFormat Configuration File\n# For documentation, see: https://github.com/nicklockwood/SwiftFormat/blob/main/Rules.md\n\n--header ignore\n--indent tab\n--ifdef no-indent\n--ranges preserve\n--extensionacl on-declarations\n--trailing-commas always\n--nil-init insert\n--import-grouping testable-last\n--wrap-conditions before-first\n--guard-else next-line\n\n# Disabled rules\n--disable blankLinesAroundMark\n--disable blankLinesBetweenScopes\n--disable docComments\n--disable redundantBackticks\n--disable redundantLetError\n--disable redundantRawValues\n--disable redundantSelf\n--disable redundantStaticSelf\n--disable redundantType\n--disable redundantTypedThrows\n--disable redundantViewBuilder\n--disable unusedArguments\n--disable wrapFunctionBodies\n--disable wrapPropertyBodies\n"
  },
  {
    "path": "Examples/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Examples/Package.swift",
    "content": "// swift-tools-version:5.4\n\nimport PackageDescription\n\nlet package = Package(\n\tname: \"Examples\",\n\tproducts: [],\n\ttargets: []\n)\n"
  },
  {
    "path": "Examples/Showcase/Showcase/App.swift",
    "content": "import SwiftUI\n\n@main\nstruct App: SwiftUI.App {\n\tvar body: some Scene {\n\t\tWindowGroup {\n\t\t\tAppView()\n\t\t}\n\t}\n}\n\n#Preview {\n\tAppView()\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/AppView.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\n\nstruct AppView: View {\n\tvar body: some View {\n\t\tContentView()\n\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t.introspect(\n\t\t\t\t.window,\n\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t) { window in\n\t\t\t\twindow.backgroundColor = .brown\n\t\t\t}\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.window, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { window in\n\t\t\t\twindow.backgroundColor = .lightGray\n\t\t\t}\n\t\t\t#endif\n\t}\n}\n\nstruct ContentView: View {\n\t@State var selection = 0\n\n\tvar body: some View {\n\t\tTabView(selection: $selection) {\n\t\t\tListShowcase()\n\t\t\t\t.tabItem { Label(\"List\", systemImage: \"1.circle\") }\n\t\t\t\t.tag(0)\n\t\t\tScrollViewShowcase()\n\t\t\t\t.tabItem { Label(\"ScrollView\", systemImage: \"2.circle\") }\n\t\t\t\t.tag(1)\n\t\t\t#if !os(macOS)\n\t\t\tNavigationShowcase()\n\t\t\t\t.tabItem { Label(\"Navigation\", systemImage: \"3.circle\") }\n\t\t\t\t.tag(2)\n\t\t\tPresentationShowcase()\n\t\t\t\t.tabItem { Label(\"Presentation\", systemImage: \"4.circle\") }\n\t\t\t\t.tag(3)\n\t\t\t#endif\n\t\t\tControlsShowcase()\n\t\t\t\t.tabItem { Label(\"Controls\", systemImage: \"5.circle\") }\n\t\t\t\t.tag(4)\n\t\t\tUIViewRepresentableShowcase()\n\t\t\t\t.tabItem { Label(\"UIViewRepresentable\", systemImage: \"6.circle\") }\n\t\t\t\t.tag(5)\n\t\t}\n\t\t#if os(iOS) || os(tvOS)\n\t\t.introspect(.tabView, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26)) { tabBarController in\n\t\t\tif #available(iOS 26, macOS 26, tvOS 26, *) {\n\t\t\t\ttabBarController.tabBar.backgroundColor = .green\n\t\t\t} else {\n\t\t\t\tlet appearance = UITabBarAppearance()\n\t\t\t\tappearance.configureWithOpaqueBackground()\n\t\t\t\tappearance.backgroundColor = .green\n\t\t\t\ttabBarController.tabBar.standardAppearance = appearance\n\t\t\t\ttabBarController.tabBar.scrollEdgeAppearance = appearance\n\t\t\t}\n\t\t}\n\t\t#elseif os(macOS)\n\t\t.introspect(.tabView, on: .macOS(.v12, .v13, .v14)) { splitView in\n\t\t\tsplitView.subviews.first?.layer?.backgroundColor = NSColor.green.cgColor\n\t\t}\n\t\t#endif\n\t}\n}\n\n#Preview {\n\tAppView()\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/Controls.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\n\nstruct ControlsShowcase: View {\n\t@State private var textFieldValue = \"\"\n\t@State private var toggleValue = false\n\t@State private var sliderValue = 0.0\n\t@State private var datePickerValue = Date()\n\t@State private var segmentedControlValue = 0\n\n\tvar body: some View {\n\t\tVStack {\n\t\t\tHStack {\n\t\t\t\tTextField(\"Text Field Red\", text: $textFieldValue)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.textField,\n\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t\t\t) { textField in\n\t\t\t\t\t\ttextField.backgroundColor = .red\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { textField in\n\t\t\t\t\t\ttextField.backgroundColor = .red\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\tTextField(\"Text Field Green\", text: $textFieldValue)\n\t\t\t\t\t.cornerRadius(8)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.textField,\n\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t\t\t) { textField in\n\t\t\t\t\t\ttextField.backgroundColor = .green\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { textField in\n\t\t\t\t\t\ttextField.backgroundColor = .green\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t}\n\n\t\t\t#if !os(tvOS)\n\t\t\t#if !os(visionOS)\n\t\t\tHStack {\n\t\t\t\tToggle(\"Toggle Red\", isOn: $toggleValue)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.toggle,\n\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26)\n\t\t\t\t\t) { toggle in\n\t\t\t\t\t\ttoggle.backgroundColor = .red\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { toggle in\n\t\t\t\t\t\ttoggle.layer?.backgroundColor = NSColor.red.cgColor\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\tToggle(\"Toggle Green\", isOn: $toggleValue)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.toggle,\n\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26)\n\t\t\t\t\t) { toggle in\n\t\t\t\t\t\ttoggle.backgroundColor = .green\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { toggle in\n\t\t\t\t\t\ttoggle.layer?.backgroundColor = NSColor.green.cgColor\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t}\n\n\t\t\t#if !targetEnvironment(macCatalyst)\n\t\t\tHStack {\n\t\t\t\tSlider(value: $sliderValue, in: 0...100)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.slider, on: .iOS(.v15, .v16, .v17, .v18, .v26)) { slider in\n\t\t\t\t\t\tslider.backgroundColor = .red\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.slider, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { slider in\n\t\t\t\t\t\tslider.layer?.backgroundColor = NSColor.red.cgColor\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\tSlider(value: $sliderValue, in: 0...100)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.slider, on: .iOS(.v15, .v16, .v17, .v18, .v26)) { slider in\n\t\t\t\t\t\tslider.backgroundColor = .green\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.slider, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { slider in\n\t\t\t\t\t\tslider.layer?.backgroundColor = NSColor.green.cgColor\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t\t#endif\n\n\t\t\tHStack {\n\t\t\t\tStepper(onIncrement: {}, onDecrement: {}) {\n\t\t\t\t\tText(\"Stepper Red\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS)\n\t\t\t\t.introspect(.stepper, on: .iOS(.v15, .v16, .v17, .v18, .v26)) { stepper in\n\t\t\t\t\tstepper.backgroundColor = .red\n\t\t\t\t}\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.stepper, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { stepper in\n\t\t\t\t\tstepper.layer?.backgroundColor = NSColor.red.cgColor\n\t\t\t\t}\n\t\t\t\t#endif\n\n\t\t\t\tStepper(onIncrement: {}, onDecrement: {}) {\n\t\t\t\t\tText(\"Stepper Green\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS)\n\t\t\t\t.introspect(.stepper, on: .iOS(.v15, .v16, .v17, .v18, .v26)) { stepper in\n\t\t\t\t\tstepper.backgroundColor = .green\n\t\t\t\t}\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.stepper, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { stepper in\n\t\t\t\t\tstepper.layer?.backgroundColor = NSColor.green.cgColor\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t#endif\n\n\t\t\tHStack {\n\t\t\t\tDatePicker(selection: $datePickerValue) {\n\t\t\t\t\tText(\"DatePicker Red\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.introspect(.datePicker, on: .iOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)) { datePicker in\n\t\t\t\t\tdatePicker.backgroundColor = .red\n\t\t\t\t}\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.datePicker, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { datePicker in\n\t\t\t\t\tdatePicker.layer?.backgroundColor = NSColor.red.cgColor\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t#endif\n\n\t\t\tHStack {\n\t\t\t\tPicker(selection: $segmentedControlValue, label: Text(\"Segmented control\")) {\n\t\t\t\t\tText(\"Option 1\").tag(0)\n\t\t\t\t\tText(\"Option 2\").tag(1)\n\t\t\t\t\tText(\"Option 3\").tag(2)\n\t\t\t\t}\n\t\t\t\t.pickerStyle(SegmentedPickerStyle())\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(\n\t\t\t\t\t.picker(style: .segmented),\n\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t\t) { datePicker in\n\t\t\t\t\tdatePicker.backgroundColor = .red\n\t\t\t\t}\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .macOS(.v12, .v13, .v14, .v15, .v26)) { datePicker in\n\t\t\t\t\tdatePicker.layer?.backgroundColor = NSColor.red.cgColor\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/Helpers.swift",
    "content": "import SwiftUI\n\nextension View {\n\t/// Modify a view with a `ViewBuilder` closure.\n\t///\n\t/// This represents a streamlining of the\n\t/// [`modifier`](https://developer.apple.com/documentation/swiftui/view/modifier(_:)) +\n\t/// [`ViewModifier`](https://developer.apple.com/documentation/swiftui/viewmodifier) pattern.\n\t///\n\t/// - Note: Useful only when you don't need to reuse the closure.\n\t/// If you do, turn the closure into a proper modifier.\n\tpublic func modifier<ModifiedContent: View>(\n\t\t@ViewBuilder _ modifier: (Self) -> ModifiedContent\n\t) -> ModifiedContent {\n\t\tmodifier(self)\n\t}\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/List.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\n\nstruct ListShowcase: View {\n\t@State var receiverListFound: Bool = false\n\t@State var ancestorListFound: Bool = false\n\n\tvar body: some View {\n\t\tVStack(spacing: 40) {\n\t\t\tVStack {\n\t\t\t\tText(\"Default\")\n\t\t\t\t\t.lineLimit(1)\n\t\t\t\t\t.minimumScaleFactor(0.5)\n\t\t\t\t\t.padding(.horizontal, 12)\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\tText(\"Item 2\")\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tVStack {\n\t\t\t\tText(\".introspect(.list, ...)\")\n\t\t\t\t\t.lineLimit(1)\n\t\t\t\t\t.minimumScaleFactor(0.5)\n\t\t\t\t\t.padding(.horizontal, 12)\n\t\t\t\t\t.font(.system(.subheadline, design: .monospaced))\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\tText(\"Item 2\")\n\t\t\t\t}\n\t\t\t\t.modifier { list in\n\t\t\t\t\tif #available(iOS 16, macOS 13, *) {\n\t\t\t\t\t\tlist.background {\n\t\t\t\t\t\t\tif receiverListFound {\n\t\t\t\t\t\t\t\tColor(.cyan)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#if !os(tvOS)\n\t\t\t\t\t\t.scrollContentBackground(.hidden)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlist\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.list, on: .iOS(.v15), .tvOS(.v15, .v16, .v17, .v18, .v26)) { tableView in\n\t\t\t\t\ttableView.backgroundView = UIView()\n\t\t\t\t\ttableView.backgroundColor = .cyan\n\t\t\t\t}\n\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)) { collectionView in\n\t\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\t\treceiverListFound = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.list, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { tableView in\n\t\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\t\treceiverListFound = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\n\t\t\tVStack {\n\t\t\t\tText(\".introspect(.list, ..., scope: .ancestor)\")\n\t\t\t\t\t.lineLimit(1)\n\t\t\t\t\t.minimumScaleFactor(0.5)\n\t\t\t\t\t.padding(.horizontal, 12)\n\t\t\t\t\t.font(.system(.subheadline, design: .monospaced))\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\tText(\"Item 2\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.list, on: .iOS(.v15), .tvOS(.v15, .v16, .v17, .v18, .v26), scope: .ancestor) { tableView in\n\t\t\t\t\t\t\ttableView.backgroundView = UIView()\n\t\t\t\t\t\t\ttableView.backgroundColor = .cyan\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor) { collectionView in\n\t\t\t\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\t\t\t\tancestorListFound = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.list, on: .macOS(.v12, .v13, .v14, .v15, .v26), scope: .ancestor) { tableView in\n\t\t\t\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\t\t\t\tancestorListFound = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t\t.modifier { list in\n\t\t\t\t\tif #available(iOS 16, macOS 13, *) {\n\t\t\t\t\t\tlist.background {\n\t\t\t\t\t\t\tif ancestorListFound {\n\t\t\t\t\t\t\t\tColor(.cyan)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#if !os(tvOS)\n\t\t\t\t\t\t.scrollContentBackground(.hidden)\n\t\t\t\t\t\t#endif\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlist\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/Navigation.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\n\nstruct NavigationShowcase: View {\n\tvar body: some View {\n\t\tNavigationView {\n\t\t\tText(\"Content\")\n\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.navigationBarTitle(Text(\"Customized\"), displayMode: .inline)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.navigationTitle(Text(\"Navigation\"))\n\t\t\t\t#endif\n\t\t}\n\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t.introspect(\n\t\t\t.navigationView(style: .stack),\n\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t) { navigationController in\n\t\t\tnavigationController.navigationBar.backgroundColor = .cyan\n\t\t}\n\t\t.introspect(\n\t\t\t.navigationView(style: .columns),\n\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t) { splitViewController in\n\t\t\t#if os(visionOS)\n\t\t\tsplitViewController.preferredDisplayMode = .oneBesideSecondary\n\t\t\t#else\n\t\t\tsplitViewController.preferredDisplayMode = .oneOverSecondary\n\t\t\t#endif\n\t\t}\n\t\t.introspect(.navigationView(style: .columns), on: .tvOS(.v15, .v16, .v17, .v18, .v26)) { navigationController in\n\t\t\tnavigationController.navigationBar.backgroundColor = .cyan\n\t\t}\n\t\t.introspect(\n\t\t\t.searchField,\n\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t) { searchBar in\n\t\t\tsearchBar.backgroundColor = .red\n\t\t\t#if os(iOS)\n\t\t\tsearchBar.searchTextField.backgroundColor = .purple\n\t\t\t#endif\n\t\t}\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/Presentation.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\n\n#if !os(macOS)\nstruct PresentationShowcase: View {\n\t@State var isSheetPresented = false\n\t@State var isFullScreenPresented = false\n\t@State var isPopoverPresented = false\n\n\tvar body: some View {\n\t\tVStack(spacing: 20) {\n\t\t\tButton(\"Sheet\", action: { isSheetPresented = true })\n\t\t\t\t.sheet(isPresented: $isSheetPresented) {\n\t\t\t\t\tButton(\"Dismiss\", action: { isSheetPresented = false })\n\t\t\t\t\t\t#if os(iOS) || os(tvOS)\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.sheet,\n\t\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26)\n\t\t\t\t\t\t) { presentationController in\n\t\t\t\t\t\t\tpresentationController.containerView?.backgroundColor = .red.withAlphaComponent(0.75)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#elseif os(visionOS)\n\t\t\t\t\t\t.introspect(.sheet, on: .visionOS(.v1, .v2, .v26)) { sheetPresentationController in\n\t\t\t\t\t\t\tsheetPresentationController.containerView?.backgroundColor = .red.withAlphaComponent(0.75)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\n\t\t\tButton(\"Full Screen Cover\", action: { isFullScreenPresented = true })\n\t\t\t\t.fullScreenCover(isPresented: $isFullScreenPresented) {\n\t\t\t\t\tButton(\"Dismiss\", action: { isFullScreenPresented = false })\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.fullScreenCover,\n\t\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t\t\t\t) { presentationController in\n\t\t\t\t\t\t\tpresentationController.containerView?.backgroundColor = .red.withAlphaComponent(0.75)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\n\t\t\t#if os(iOS) || os(visionOS)\n\t\t\tButton(\"Popover\", action: { isPopoverPresented = true })\n\t\t\t\t.popover(isPresented: $isPopoverPresented) {\n\t\t\t\t\tButton(\"Dismiss\", action: { isPopoverPresented = false })\n\t\t\t\t\t\t.padding()\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.popover,\n\t\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t\t\t\t) { presentationController in\n\t\t\t\t\t\t\tpresentationController.containerView?.backgroundColor = .red.withAlphaComponent(0.75)\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t#endif\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Examples/Showcase/Showcase/ScrollView.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\n\nstruct ScrollViewShowcase: View {\n\t@State var receiverScrollViewFound: Bool = false\n\t@State var ancestorScrollViewFound: Bool = false\n\n\tvar body: some View {\n\t\tVStack(spacing: 40) {\n\t\t\tScrollView {\n\t\t\t\tText(\"Default\")\n\t\t\t\t\t.frame(maxWidth: .infinity)\n\t\t\t\t\t.lineLimit(1)\n\t\t\t\t\t.minimumScaleFactor(0.5)\n\t\t\t\t\t.padding(.horizontal, 12)\n\t\t\t}\n\n\t\t\tScrollView {\n\t\t\t\tText(\".introspect(.scrollView, ...)\")\n\t\t\t\t\t.frame(maxWidth: .infinity)\n\t\t\t\t\t.lineLimit(1)\n\t\t\t\t\t.minimumScaleFactor(0.5)\n\t\t\t\t\t.padding(.horizontal, 12)\n\t\t\t\t\t.font(.system(.subheadline, design: .monospaced))\n\t\t\t}\n\t\t\t.background {\n\t\t\t\tif receiverScrollViewFound {\n\t\t\t\t\tColor(.cyan)\n\t\t\t\t}\n\t\t\t}\n\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t.introspect(\n\t\t\t\t.scrollView,\n\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t) { _ in\n\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\treceiverScrollViewFound = true\n\t\t\t\t}\n\t\t\t}\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.scrollView, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { scrollView in\n\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\treceiverScrollViewFound = true\n\t\t\t\t}\n\t\t\t}\n\t\t\t#endif\n\n\t\t\tScrollView {\n\t\t\t\tText(\".introspect(.scrollView, ..., scope: .ancestor)\")\n\t\t\t\t\t.frame(maxWidth: .infinity)\n\t\t\t\t\t.lineLimit(1)\n\t\t\t\t\t.minimumScaleFactor(0.5)\n\t\t\t\t\t.padding(.horizontal, 12)\n\t\t\t\t\t.font(.system(.subheadline, design: .monospaced))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.scrollView,\n\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\tscope: .ancestor\n\t\t\t\t\t) { _ in\n\t\t\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\t\t\tancestorScrollViewFound = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.scrollView, on: .macOS(.v12, .v13, .v14, .v15, .v26), scope: .ancestor) { scrollView in\n\t\t\t\t\t\tDispatchQueue.main.async {\n\t\t\t\t\t\t\tancestorScrollViewFound = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t\t.background {\n\t\t\t\tif ancestorScrollViewFound {\n\t\t\t\t\tColor(.cyan)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase/Showcase.entitlements",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
  },
  {
    "path": "Examples/Showcase/Showcase/UIViewRepresentable.swift",
    "content": "import SwiftUI\n@_spi(Internals) import SwiftUIIntrospect\n\nstruct UIViewRepresentableShowcase: View {\n\tlet colors: [Color] = [.red, .green, .blue]\n\n\tvar body: some View {\n\t\tVStack(spacing: 10) {\n\t\t\tForEach(colors, id: \\.self) { color in\n\t\t\t\tGenericViewRepresentable()\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.view,\n\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t\t\t\t) { view in\n\t\t\t\t\t\tview.backgroundColor = UIColor(color)\n\t\t\t\t\t}\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.view, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { view in\n\t\t\t\t\t\tview.layer?.backgroundColor = NSColor(color).cgColor\n\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t.padding()\n\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t.introspect(\n\t\t\t.view,\n\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26)\n\t\t) { view in\n\t\t\tview.backgroundColor = .red\n\t\t}\n\t\t#elseif os(macOS)\n\t\t.introspect(.view, on: .macOS(.v12, .v13, .v14, .v15, .v26)) { view in\n\t\t\tview.layer?.backgroundColor = NSColor.red.cgColor\n\t\t}\n\t\t#endif\n\t}\n}\n\n@MainActor\nstruct GenericViewRepresentable: PlatformViewControllerRepresentable {\n\t#if canImport(UIKit)\n\ttypealias UIViewControllerType = PlatformViewController\n\t#elseif canImport(AppKit)\n\ttypealias NSViewControllerType = PlatformViewController\n\t#endif\n\n\tfunc makePlatformViewController(context: Context) -> PlatformViewController {\n\t\tlet controller = PlatformViewController(nibName: nil, bundle: nil)\n\t\tcontroller.view.translatesAutoresizingMaskIntoConstraints = false\n\n\t\tlet widthConstraint = controller.view.widthAnchor.constraint(greaterThanOrEqualToConstant: .greatestFiniteMagnitude)\n\t\twidthConstraint.priority = .defaultLow\n\n\t\tlet heightConstraint = controller.view.heightAnchor.constraint(greaterThanOrEqualToConstant: .greatestFiniteMagnitude)\n\t\theightConstraint.priority = .defaultLow\n\n\t\tNSLayoutConstraint.activate([widthConstraint, heightConstraint])\n\n\t\treturn controller\n\t}\n\n\tfunc updatePlatformViewController(_ controller: PlatformViewController, context: Context) {\n\t\t// NO-OP\n\t}\n\n\tstatic func dismantlePlatformViewController(_ controller: PlatformViewController, coordinator: Coordinator) {\n\t\t// NO-OP\n\t}\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 55;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tD53071F729983CEF00F1936C /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53071F629983CEF00F1936C /* App.swift */; };\n\t\tD53071F929983CEF00F1936C /* AppView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53071F829983CEF00F1936C /* AppView.swift */; };\n\t\tD5B829752999738200920EBD /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B829742999738200920EBD /* Helpers.swift */; };\n\t\tD5B864E82E72BF0F002F5243 /* ScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864E72E72BF0F002F5243 /* ScrollView.swift */; };\n\t\tD5B864EA2E72CE71002F5243 /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864E92E72CE71002F5243 /* List.swift */; };\n\t\tD5B864EC2E72D9E1002F5243 /* Navigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864EB2E72D9E1002F5243 /* Navigation.swift */; };\n\t\tD5B864EE2E72DB42002F5243 /* Presentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864ED2E72DB42002F5243 /* Presentation.swift */; };\n\t\tD5B864F02E72DC75002F5243 /* Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864EF2E72DC75002F5243 /* Controls.swift */; };\n\t\tD5B864F22E72DCA7002F5243 /* UIViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864F12E72DCA7002F5243 /* UIViewRepresentable.swift */; };\n\t\tD5E3180329C132B6005847DC /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = D5E3180229C132B6005847DC /* SwiftUIIntrospect */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\tD53071F329983CEF00F1936C /* Showcase.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Showcase.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD53071F629983CEF00F1936C /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = \"<group>\"; };\n\t\tD53071F829983CEF00F1936C /* AppView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppView.swift; sourceTree = \"<group>\"; };\n\t\tD530720429983D9300F1936C /* Showcase.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Showcase.entitlements; sourceTree = \"<group>\"; };\n\t\tD5B829742999738200920EBD /* Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = \"<group>\"; };\n\t\tD5B864E72E72BF0F002F5243 /* ScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollView.swift; sourceTree = \"<group>\"; };\n\t\tD5B864E92E72CE71002F5243 /* List.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = List.swift; sourceTree = \"<group>\"; };\n\t\tD5B864EB2E72D9E1002F5243 /* Navigation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Navigation.swift; sourceTree = \"<group>\"; };\n\t\tD5B864ED2E72DB42002F5243 /* Presentation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Presentation.swift; sourceTree = \"<group>\"; };\n\t\tD5B864EF2E72DC75002F5243 /* Controls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Controls.swift; sourceTree = \"<group>\"; };\n\t\tD5B864F12E72DCA7002F5243 /* UIViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewRepresentable.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tD53071F029983CEF00F1936C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD5E3180329C132B6005847DC /* SwiftUIIntrospect in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tD53071EA29983CEF00F1936C = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD53071F529983CEF00F1936C /* Showcase */,\n\t\t\t\tD53071F429983CEF00F1936C /* Products */,\n\t\t\t\tD530720529983DCA00F1936C /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD53071F429983CEF00F1936C /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD53071F329983CEF00F1936C /* Showcase.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD53071F529983CEF00F1936C /* Showcase */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD530720429983D9300F1936C /* Showcase.entitlements */,\n\t\t\t\tD53071F629983CEF00F1936C /* App.swift */,\n\t\t\t\tD53071F829983CEF00F1936C /* AppView.swift */,\n\t\t\t\tD5B864E92E72CE71002F5243 /* List.swift */,\n\t\t\t\tD5B864E72E72BF0F002F5243 /* ScrollView.swift */,\n\t\t\t\tD5B864EB2E72D9E1002F5243 /* Navigation.swift */,\n\t\t\t\tD5B864ED2E72DB42002F5243 /* Presentation.swift */,\n\t\t\t\tD5B864EF2E72DC75002F5243 /* Controls.swift */,\n\t\t\t\tD5B864F12E72DCA7002F5243 /* UIViewRepresentable.swift */,\n\t\t\t\tD5B829742999738200920EBD /* Helpers.swift */,\n\t\t\t);\n\t\t\tpath = Showcase;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD530720529983DCA00F1936C /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tD53071F229983CEF00F1936C /* Showcase */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = D530720129983CF000F1936C /* Build configuration list for PBXNativeTarget \"Showcase\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tD53071EF29983CEF00F1936C /* Sources */,\n\t\t\t\tD53071F029983CEF00F1936C /* Frameworks */,\n\t\t\t\tD53071F129983CEF00F1936C /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Showcase;\n\t\t\tpackageProductDependencies = (\n\t\t\t\tD5E3180229C132B6005847DC /* SwiftUIIntrospect */,\n\t\t\t);\n\t\t\tproductName = Showcase;\n\t\t\tproductReference = D53071F329983CEF00F1936C /* Showcase.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tD53071EB29983CEF00F1936C /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1420;\n\t\t\t\tLastUpgradeCheck = 2600;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tD53071F229983CEF00F1936C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 14.2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = D53071EE29983CEF00F1936C /* Build configuration list for PBXProject \"Showcase\" */;\n\t\t\tcompatibilityVersion = \"Xcode 13.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = D53071EA29983CEF00F1936C;\n\t\t\tproductRefGroup = D53071F429983CEF00F1936C /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tD53071F229983CEF00F1936C /* Showcase */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tD53071F129983CEF00F1936C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tD53071EF29983CEF00F1936C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD53071F929983CEF00F1936C /* AppView.swift in Sources */,\n\t\t\t\tD5B864EE2E72DB42002F5243 /* Presentation.swift in Sources */,\n\t\t\t\tD5B864F22E72DCA7002F5243 /* UIViewRepresentable.swift in Sources */,\n\t\t\t\tD5B864E82E72BF0F002F5243 /* ScrollView.swift in Sources */,\n\t\t\t\tD5B829752999738200920EBD /* Helpers.swift in Sources */,\n\t\t\t\tD5B864EC2E72D9E1002F5243 /* Navigation.swift in Sources */,\n\t\t\t\tD5B864F02E72DC75002F5243 /* Controls.swift in Sources */,\n\t\t\t\tD5B864EA2E72CE71002F5243 /* List.swift in Sources */,\n\t\t\t\tD53071F729983CEF00F1936C /* App.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\tD53071FF29983CF000F1936C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"macosx iphonesimulator iphoneos appletvsimulator appletvos\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_STRICT_CONCURRENCY = complete;\n\t\t\t\tSWIFT_VERSION = 6.0;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD530720029983CF000F1936C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"macosx iphonesimulator iphoneos appletvsimulator appletvos\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tSWIFT_STRICT_CONCURRENCY = complete;\n\t\t\t\tSWIFT_VERSION = 6.0;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tD530720229983CF000F1936C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = Showcase/Showcase.entitlements;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=macosx*]\" = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tENABLE_APP_SANDBOX = YES;\n\t\t\t\tENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = \"\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UIUserInterfaceStyle = Light;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.siteline.Showcase;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;\n\t\t\t\tSUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,6,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD530720329983CF000F1936C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = Showcase/Showcase.entitlements;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=macosx*]\" = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tENABLE_APP_SANDBOX = YES;\n\t\t\t\tENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = \"\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UIUserInterfaceStyle = Light;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.siteline.Showcase;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;\n\t\t\t\tSUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,6,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tD53071EE29983CEF00F1936C /* Build configuration list for PBXProject \"Showcase\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD53071FF29983CF000F1936C /* Debug */,\n\t\t\t\tD530720029983CF000F1936C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tD530720129983CF000F1936C /* Build configuration list for PBXNativeTarget \"Showcase\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD530720229983CF000F1936C /* Debug */,\n\t\t\t\tD530720329983CF000F1936C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\tD5E3180229C132B6005847DC /* SwiftUIIntrospect */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = SwiftUIIntrospect;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = D53071EB29983CEF00F1936C /* Project object */;\n}\n"
  },
  {
    "path": "Examples/Showcase/Showcase.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Examples/Showcase/Showcase.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Examples/Showcase/Showcase.xcodeproj/xcshareddata/xcschemes/Showcase.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"D53071F229983CEF00F1936C\"\n               BuildableName = \"Showcase.app\"\n               BlueprintName = \"Showcase\"\n               ReferencedContainer = \"container:Showcase.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"D53071F229983CEF00F1936C\"\n            BuildableName = \"Showcase.app\"\n            BlueprintName = \"Showcase\"\n            ReferencedContainer = \"container:Showcase.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"D53071F229983CEF00F1936C\"\n            BuildableName = \"Showcase.app\"\n            BlueprintName = \"Showcase\"\n            ReferencedContainer = \"container:Showcase.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright 2019 Timber Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:6.0\n\nimport PackageDescription\n\nlet package = Package(\n\tname: \"swiftui-introspect\",\n\tplatforms: [\n\t\t.iOS(.v13),\n\t\t.macCatalyst(.v13),\n\t\t.macOS(.v10_15),\n\t\t.tvOS(.v13),\n\t\t.visionOS(.v1),\n\t],\n\tproducts: [\n\t\t.library(name: \"SwiftUIIntrospect\", targets: [\"SwiftUIIntrospect\"]),\n\t\t.library(name: \"SwiftUIIntrospect-Static\", type: .static, targets: [\"SwiftUIIntrospect\"]),\n\t\t.library(name: \"SwiftUIIntrospect-Dynamic\", type: .dynamic, targets: [\"SwiftUIIntrospect\"]),\n\t],\n\ttargets: [\n\t\t.target(\n\t\t\tname: \"SwiftUIIntrospect\",\n\t\t\tpath: \"Sources\"\n\t\t),\n\t]\n)\n\nfor target in package.targets {\n\ttarget.swiftSettings = target.swiftSettings ?? []\n\ttarget.swiftSettings? += [\n\t\t.enableUpcomingFeature(\"ExistentialAny\"),\n\t\t.enableUpcomingFeature(\"InternalImportsByDefault\"),\n\t]\n}\n"
  },
  {
    "path": "README.md",
    "content": "SwiftUI Introspect\n=================\n\n[![CI Status Badge](https://github.com/siteline/swiftui-introspect/actions/workflows/ci.yml/badge.svg)](https://github.com/siteline/swiftui-introspect/actions/workflows/ci.yml)\n[![Swift Version Compatibility Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fsiteline%2Fswiftui-introspect%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/siteline/swiftui-introspect)\n[![Platform Compatibility Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fsiteline%2Fswiftui-introspect%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/siteline/swiftui-introspect)\n\nSwiftUI Introspect lets you access the underlying UIKit or AppKit view for a SwiftUI view.\n\n- [How it works](#how-it-works)\n- [Install](#install)\n    - [Swift Package Manager](#swift-package-manager)\n    - [CocoaPods](#cocoapods)\n- [View Types](#view-types)\n- [Examples](#examples)\n- [General Guidelines](#general-guidelines)\n- [Advanced usage](#advanced-usage)\n    - [Implement your own introspectable type](#implement-your-own-introspectable-type)\n    - [Introspect on future platform versions](#introspect-on-future-platform-versions)\n    - [Keep instances outside the customize closure](#keep-instances-outside-the-customize-closure)\n- [Note for library authors](#note-for-library-authors)\n- [Community projects](#community-projects)\n\nHow it works\n------------\n\nSwiftUI Introspect adds an invisible `IntrospectionView` above the selected view and an invisible anchor below it, then searches the UIKit/AppKit view hierarchy between them to find the relevant view.\n\nFor instance, when introspecting a `ScrollView`...\n\n```swift\nScrollView {\n\tText(\"Item 1\")\n}\n.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) { scrollView in\n\t// do something with UIScrollView\n}\n```\n\n... it will:\n\n1. Add marker views before and after `ScrollView`.\n2. Traverse through all subviews between both marker views until a `UIScrollView` instance (if any) is found.\n\n> [!IMPORTANT]\n> Although this method is solid and unlikely to break on its own, future OS releases require explicit opt in for introspection (`.iOS(.vXYZ)`) because underlying UIKit/AppKit types can change between major versions.\n\nBy default, `.introspect` acts on its receiver. Calling `.introspect` from inside the view you want to introspect has no effect. If you need to introspect an ancestor instead, set `scope: .ancestor`:\n\n```swift\nScrollView {\n\tText(\"Item 1\")\n\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor) { scrollView in\n\t\t\t// do something with UIScrollView\n\t\t}\n}\n```\n\n### Usage in production\n\nSwiftUI Introspect is suitable for production. It does not use private APIs. It inspects the view hierarchy using public methods and takes a defensive approach: it makes no hard layout assumptions, performs no forced casts to UIKit/AppKit classes, and ignores `.introspect` when the expected UIKit/AppKit view cannot be found.\n\nInstall\n-------\n\n### Swift Package Manager\n\n#### Xcode\n\n<img width=\"660\" height=\"300\" src=\"https://github.com/user-attachments/assets/ab1c1a62-96d9-417d-ad2b-43012a69cae8\" />\n\n#### Package.swift\n\n```swift\nlet package = Package(\n\tdependencies: [\n\t\t.package(url: \"https://github.com/siteline/swiftui-introspect\", from: \"26.0.0\"),\n\t],\n\ttargets: [\n\t\t.target(name: <#Target Name#>, dependencies: [\n\t\t\t.product(name: \"SwiftUIIntrospect\", package: \"swiftui-introspect\"),\n\t\t]),\n\t]\n)\n```\n\n### CocoaPods\n\n```ruby\npod 'SwiftUIIntrospect', '~> 26.0.0'\n```\n\nView Types\n----------\n\n### Implemented\n\n- [`Button`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/buttontype)\n- [`ColorPicker`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/colorpickertype)\n- [`DatePicker`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/datepickertype)\n- [`DatePicker` with `.compact` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/datepickerwithcompactstyletype)\n- [`DatePicker` with `.field` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/datepickerwithfieldstyletype)\n- [`DatePicker` with `.graphical` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/datepickerwithgraphicalstyletype)\n- [`DatePicker` with `.stepperField` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/datepickerwithstepperfieldstyletype)\n- [`DatePicker` with `.wheel` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/datepickerwithwheelstyletype)\n- [`Form`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/formtype)\n- [`Form` with `.grouped` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/formwithgroupedstyletype)\n- [`.fullScreenCover`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/fullScreenCovertype)\n- [`List`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listtype)\n- [`List` with `.bordered` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listwithborderedstyletype)\n- [`List` with `.grouped` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listwithgroupedstyletype)\n- [`List` with `.insetGrouped` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listwithinsetgroupedstyletype)\n- [`List` with `.inset` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listwithinsetstyletype)\n- [`List` with `.sidebar` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listwithsidebarstyletype)\n- [`ListCell`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/listcelltype)\n- [`Map`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/maptype)\n- [`NavigationSplitView`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/navigationsplitviewtype)\n- [`NavigationStack`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/navigationstacktype)\n- [`NavigationView` with `.columns` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/NavigationViewWithColumnsStyleType)\n- [`NavigationView` with `.stack` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/NavigationViewWithStackStyleType)\n- [`PageControl`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/pagecontroltype)\n- [`Picker` with `.menu` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/pickerwithmenustyletype)\n- [`Picker` with `.segmented` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/pickerwithsegmentedstyletype)\n- [`Picker` with `.wheel` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/pickerwithwheelstyletype)\n- [`.popover`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/popovertype)\n- [`ProgressView` with `.circular` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/progressviewwithcircularstyletype)\n- [`ProgressView` with `.linear` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/progressviewwithlinearstyletype)\n- [`ScrollView`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/scrollviewtype)\n- [`.searchable`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/searchfieldtype)\n- [`SecureField`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/securefieldtype)\n- [`.sheet`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/sheettype)\n- [`Slider`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/slidertype)\n- [`Stepper`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/steppertype)\n- [`Table`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/tabletype)\n- [`TabView`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/tabviewtype)\n- [`TabView` with `.page` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/TabViewWithPageStyleType)\n- [`TextEditor`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/texteditortype)\n- [`TextField`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/textfieldtype)\n- [`TextField` with `.vertical` axis](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/TextFieldWithVerticalAxisType)\n- [`Toggle`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/toggletype)\n- [`Toggle` with `button` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/togglewithbuttonstyletype)\n- [`Toggle` with `checkbox` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/togglewithcheckboxstyletype)\n- [`Toggle` with `switch` style](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/togglewithswitchstyletype)\n- [`VideoPlayer`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/videoplayertype)\n- [`View`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/viewtype)\n- [`ViewController`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/viewcontrollertype)\n- [`WebView`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/webviewtype)\n- [`Window`](https://swiftpackageindex.com/siteline/swiftui-introspect/main/documentation/swiftuiintrospect/windowtype)\n\n**Missing an element?** Please [start a discussion](https://github.com/siteline/swiftui-introspect/discussions/new?category=ideas). As a temporary solution, you can [implement your own introspectable view type](#implement-your-own-introspectable-type).\n\n### Cannot implement\n\nSwiftUI | Affected Frameworks | Why\n--- | --- | ---\nText | UIKit, AppKit | Not a UILabel / NSLabel\nImage | UIKit, AppKit | Not a UIImageView / NSImageView\nButton | UIKit | Not a UIButton\nLink | UIKit, AppKit | Not a UIButton / NSButton\nNavigationLink | UIKit | Not a UIButton\nGroupBox | AppKit | No underlying view\nMenu | UIKit, AppKit | No underlying view\nSpacer | UIKit, AppKit | No underlying view\nDivider | UIKit, AppKit | No underlying view\nHStack, VStack, ZStack | UIKit, AppKit | No underlying view\nLazyVStack, LazyHStack, LazyVGrid, LazyHGrid | UIKit, AppKit | No underlying view\nColor | UIKit, AppKit | No underlying view\nForEach | UIKit, AppKit | No underlying view\nGeometryReader | UIKit, AppKit | No underlying view\nChart | UIKit, AppKit | Native SwiftUI framework\n\nExamples\n--------\n\n### List\n\n```swift\nList {\n\tText(\"Item\")\n}\n.introspect(.list, on: .iOS(.v13, .v14, .v15)) { tableView in\n\ttableView.bounces = false\n}\n.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26)) { collectionView in\n\tcollectionView.bounces = false\n}\n```\n\n### ScrollView\n\n```swift\nScrollView {\n\tText(\"Item\")\n}\n.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) { scrollView in\n\tscrollView.bounces = false\n}\n```\n\n### NavigationView\n\n```swift\nNavigationView {\n\tText(\"Item\")\n}\n.navigationViewStyle(.stack)\n.introspect(.navigationView(style: .stack), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) { navigationController in\n\tnavigationController.navigationBar.backgroundColor = .cyan\n}\n```\n\n### TextField\n\n```swift\nTextField(\"Text Field\", text: <#Binding<String>#>)\n\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) { textField in\n\t\ttextField.backgroundColor = .red\n\t}\n```\n\nGeneral Guidelines\n------------------\n\nHere are some guidelines to keep in mind when using SwiftUI Introspect:\n\n- **Use sparingly**: prefer native SwiftUI modifiers when available. Use introspection only when you need underlying UIKit/AppKit APIs that SwiftUI does not expose.\n- **Program defensively**: the introspection closure may be called multiple times during the view's lifecycle, such as during view updates or re-renders. Ensure that your customization code can handle being executed multiple times without causing unintended side effects.\n- **Avoid direct state changes**: do not change SwiftUI state from inside the introspection closure. If you must update state, wrap it in `DispatchQueue.main.async`.\n- **Test across OS versions**: underlying implementations can differ by OS, which can affect customization.\n- **Avoid retain cycles**: be cautious about capturing `self` or other strong references within the introspection closure, as this can lead to memory leaks. Use `[weak self]` or `[unowned self]` capture lists as appropriate.\n- **Scope**: `.introspect` targets its receiver by default. Use `scope: .ancestor` only when you need to introspect an ancestor. In general, you shouldn't worry about this as each view type has sensible, predictable default scopes.\n\nAdvanced usage\n--------------\n\n> [!NOTE]\n> These features are advanced and unnecessary for most use cases. Use them when you need extra control or flexibility.\n\n> [!IMPORTANT]\n> To access these features, import SwiftUI Introspect using `@_spi(Advanced)` (see examples below).\n\n### Implement your own introspectable type\n\n**Missing an element?** Please [start a discussion](https://github.com/siteline/swiftui-introspect/discussions/new?category=ideas).\n\nIn the unlikely event SwiftUI Introspect does not support the element you need, you can implement your own introspectable type.\n\nFor example, here's how the library implements the introspectable `TextField` type:\n\n```swift\nimport SwiftUI\n@_spi(Advanced) import SwiftUIIntrospect\n\npublic struct TextFieldType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == TextFieldType {\n\tpublic static var textField: Self { .init() }\n}\n\n#if canImport(UIKit)\nextension iOSViewVersion<TextFieldType, UITextField> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<TextFieldType, UITextField> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<TextFieldType, UITextField> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\nextension macOSViewVersion<TextFieldType, NSTextField> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n```\n\n### Introspect on future platform versions\n\nBy default, introspection targets specific platform versions. This is an intentional design decision to maintain maximum predictability in actively maintained apps. However library authors may prefer to cover future versions to limit their commitment to regular maintenance without breaking client apps. For that, SwiftUI Introspect provides range-based version predicates via the Advanced SPI:\n\n```swift\nimport SwiftUI\n@_spi(Advanced) import SwiftUIIntrospect\n\nstruct ContentView: View {\n\tvar body: some View {\n\t\tScrollView {\n\t\t\t// ...\n\t\t}\n\t\t.introspect(.scrollView, on: .iOS(.v13...)) { scrollView in\n\t\t\t// ...\n\t\t}\n\t}\n}\n```\n\nUse this cautiously. Future OS versions may change underlying types, in which case the customization closure will not run unless support is explicitly declared.\n\n### Keep instances outside the customize closure\n\nSometimes you need to keep an introspected instance beyond the customization closure. `@State` is not appropriate for this, as it can create retain cycles. Instead, SwiftUI Introspect offers a `@Weak` property wrapper behind the Advanced SPI:\n\n```swift\nimport SwiftUI\n@_spi(Advanced) import SwiftUIIntrospect\n\nstruct ContentView: View {\n\t@Weak var scrollView: UIScrollView?\n\n\tvar body: some View {\n\t\tScrollView {\n\t\t\t// ...\n\t\t}\n\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) { scrollView in\n\t\t\tself.scrollView = scrollView\n\t\t}\n\t}\n}\n```\n\nNote for library authors\n------------------------\n\nIf your library depends on SwiftUI Introspect, declare a version range that spans at least the **last two major versions** instead of jumping straight to the latest. This avoids conflicts when apps pull the library directly and through multiple dependencies. For example:\n\n```swift\n.package(url: \"https://github.com/siteline/swiftui-introspect\", \"1.3.0\"..<\"27.0.0\"),\n```\n\nA wider range is safe because SwiftUI Introspect is essentially “finished”: no new features will be added, only newer platform versions and view types. Thanks to [`@_spi(Advanced)` imports](https://github.com/siteline/swiftui-introspect#introspect-on-future-platform-versions), it is already future proof without frequent version bumps.\n\nCommunity projects\n------------------\n\nHere are some popular open source libraries powered by SwiftUI Introspect:\n\n- [CustomKeyboardKit](https://github.com/paescebu/CustomKeyboardKit)\n- [swiftui-navigation-transitions](https://github.com/davdroman/swiftui-navigation-transitions)\n- [PopupView](https://github.com/exyte/PopupView)\n\nIf you're working on a library built on SwiftUI Introspect or know of one, feel free to submit a PR adding it to the list.\n"
  },
  {
    "path": "Sources/Introspect.swift",
    "content": "#if !os(watchOS)\npublic import SwiftUI\n\n/// The scope of introspection i.e. where introspect should look to find\n/// the desired target view relative to the applied `.introspect(...)`\n/// modifier.\npublic struct IntrospectionScope: OptionSet, Sendable {\n\t/// Look within the `receiver` of the `.introspect(...)` modifier.\n\tpublic static let receiver = Self(rawValue: 1 << 0)\n\t/// Look for an `ancestor` relative to the `.introspect(...)` modifier.\n\tpublic static let ancestor = Self(rawValue: 1 << 1)\n\n\t@_spi(Internals) public let rawValue: UInt\n\n\t@_spi(Internals) public init(rawValue: UInt) {\n\t\tself.rawValue = rawValue\n\t}\n}\n\nextension View {\n\t/// Introspects a SwiftUI view to find its underlying UIKit/AppKit instance.\n\t///\n\t/// - Parameters:\n\t///   - viewType: The type of view to be introspected.\n\t///   - platforms: A list of version predicates that specify platform-specific entities associated with the view.\n\t///   - scope: Optionally overrides the view's default scope of introspection.\n\t///   - customize: A closure that hands over the underlying UIKit/AppKit instance ready for customization.\n\t///\n\t///     Note there is no guarantee of one-time execution for this closure. As `customize` may fire multiple times,\n\t///     make sure to guard against repeated or heavy work in your closure by keeping track of its completeness.\n\t///\n\t///     Additionally, note mutating SwiftUI state within `customize` will trigger runtime warnings unless that mutation\n\t///     is wrapped in a `DispatchQueue.main.async { ... }` call. This is because introspect attempts to hand you\n\t///     the requested view as soon as possible, and this might mean SwiftUI isn't ready for state mutations at that\n\t///     particular moment.\n\t///\n\t/// Here's an example usage:\n\t///\n\t/// ```swift\n\t/// struct ContentView: View {\n\t///     @State var text = \"\"\n\t///\n\t///     var body: some View {\n\t///         TextField(\"Placeholder\", text: $text)\n\t///             .introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n\t///                 print(type(of: $0)) // UITextField\n\t///             }\n\t///     }\n\t/// }\n\t/// ```\n\t@MainActor\n\tpublic func introspect<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity>(\n\t\t_ viewType: SwiftUIViewType,\n\t\ton platforms: PlatformViewVersionPredicate<SwiftUIViewType, PlatformSpecificEntity>...,\n\t\tscope: IntrospectionScope? = nil,\n\t\tcustomize: @escaping (PlatformSpecificEntity) -> Void\n\t) -> some View {\n\t\tself.modifier(IntrospectModifier(viewType, platforms: platforms, scope: scope, customize: customize))\n\t}\n}\n\nstruct IntrospectModifier<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity>: ViewModifier {\n\tlet id = IntrospectionViewID()\n\tlet scope: IntrospectionScope\n\tlet selector: IntrospectionSelector<PlatformSpecificEntity>?\n\tlet customize: (PlatformSpecificEntity) -> Void\n\n\t@MainActor\n\tinit(\n\t\t_ viewType: SwiftUIViewType,\n\t\tplatforms: [PlatformViewVersionPredicate<SwiftUIViewType, PlatformSpecificEntity>],\n\t\tscope: IntrospectionScope?,\n\t\tcustomize: @escaping (PlatformSpecificEntity) -> Void\n\t) {\n\t\tself.scope = scope ?? viewType.scope\n\t\tself.selector = platforms.lazy.compactMap(\\.selector).first\n\t\tself.customize = customize\n\t}\n\n\tfunc body(content: Content) -> some View {\n\t\tif let selector {\n\t\t\tcontent\n\t\t\t\t.background(\n\t\t\t\t\tGroup {\n\t\t\t\t\t\t// box up content for more accurate `.view` introspection\n\t\t\t\t\t\tif SwiftUIViewType.self == ViewType.self {\n\t\t\t\t\t\t\tColor.white\n\t\t\t\t\t\t\t\t.opacity(0)\n\t\t\t\t\t\t\t\t.accessibility(hidden: true)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t.background(\n\t\t\t\t\tIntrospectionAnchorView(id: id)\n\t\t\t\t\t\t.frame(width: 0, height: 0)\n\t\t\t\t\t\t.accessibility(hidden: true)\n\t\t\t\t)\n\t\t\t\t.overlay(\n\t\t\t\t\tIntrospectionView(id: id, selector: { selector($0, scope) }, customize: customize)\n\t\t\t\t\t\t.frame(width: 0, height: 0)\n\t\t\t\t\t\t.accessibility(hidden: true)\n\t\t\t\t)\n\t\t} else {\n\t\t\tcontent\n\t\t}\n\t}\n}\n\n@MainActor\npublic protocol PlatformEntity: AnyObject {\n\tassociatedtype Base: PlatformEntity\n\n\t@_spi(Internals)\n\tvar ancestor: Base? { get }\n\n\t@_spi(Internals)\n\tvar descendants: [Base] { get }\n\n\t@_spi(Internals)\n\tfunc isDescendant(of other: Base) -> Bool\n}\n\nextension PlatformEntity {\n\t@_spi(Internals)\n\tpublic var ancestor: Base? { nil }\n\n\t@_spi(Internals)\n\tpublic var descendants: [Base] { [] }\n\n\t@_spi(Internals)\n\tpublic func isDescendant(of other: Base) -> Bool { false }\n}\n\nextension PlatformEntity {\n\t@_spi(Internals)\n\tpublic var ancestors: some Sequence<Base> {\n\t\tsequence(first: self~, next: { $0.ancestor~ }).dropFirst()\n\t}\n\n\t@_spi(Internals)\n\tpublic var allDescendants: some Sequence<Base> {\n\t\trecursiveSequence([self~], children: { $0.descendants~ }).dropFirst()\n\t}\n\n\tfunc nearestCommonAncestor(with other: Base) -> Base? {\n\t\tvar nearestAncestor: Base? = self~\n\n\t\twhile let currentEntity = nearestAncestor, !other.isDescendant(of: currentEntity~) {\n\t\t\tnearestAncestor = currentEntity.ancestor~\n\t\t}\n\n\t\treturn nearestAncestor\n\t}\n\n\tfunc allDescendants(between bottomEntity: Base, and topEntity: Base) -> some Sequence<Base> {\n\t\tself.allDescendants\n\t\t\t.lazy\n\t\t\t.drop(while: { $0 !== bottomEntity })\n\t\t\t.prefix(while: { $0 !== topEntity })\n\t}\n\n\tfunc receiver<PlatformSpecificEntity: PlatformEntity>(\n\t\tofType type: PlatformSpecificEntity.Type\n\t) -> PlatformSpecificEntity? {\n\t\tlet frontEntity = self\n\t\tguard\n\t\t\tlet backEntity = frontEntity.introspectionAnchorEntity,\n\t\t\tlet commonAncestor = backEntity.nearestCommonAncestor(with: frontEntity~)\n\t\telse {\n\t\t\treturn nil\n\t\t}\n\n\t\treturn commonAncestor\n\t\t\t.allDescendants(between: backEntity~, and: frontEntity~)\n\t\t\t.filter { !$0.isIntrospectionPlatformEntity }\n\t\t\t.compactMap { $0 as? PlatformSpecificEntity }\n\t\t\t.first\n\t}\n\n\tfunc ancestor<PlatformSpecificEntity: PlatformEntity>(\n\t\tofType type: PlatformSpecificEntity.Type\n\t) -> PlatformSpecificEntity? {\n\t\tself.ancestors\n\t\t\t.lazy\n\t\t\t.filter { !$0.isIntrospectionPlatformEntity }\n\t\t\t.compactMap { $0 as? PlatformSpecificEntity }\n\t\t\t.first\n\t}\n}\n\nextension PlatformView: PlatformEntity {\n\t@_spi(Internals)\n\tpublic var ancestor: PlatformView? {\n\t\tsuperview\n\t}\n\n\t@_spi(Internals)\n\tpublic var descendants: [PlatformView] {\n\t\tsubviews\n\t}\n}\n\nextension PlatformViewController: PlatformEntity {\n\t@_spi(Internals)\n\tpublic var ancestor: PlatformViewController? {\n\t\tparent\n\t}\n\n\t@_spi(Internals)\n\tpublic var descendants: [PlatformViewController] {\n\t\tchildren\n\t}\n\n\t@_spi(Internals)\n\tpublic func isDescendant(of other: PlatformViewController) -> Bool {\n\t\tself.ancestors.contains(other)\n\t}\n}\n\n#if canImport(UIKit)\nextension UIPresentationController: PlatformEntity {\n\tpublic typealias Base = UIPresentationController\n}\n#elseif canImport(AppKit)\nextension NSWindow: PlatformEntity {\n\tpublic typealias Base = NSWindow\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/IntrospectableViewType.swift",
    "content": "#if !os(watchOS)\n@MainActor\npublic protocol IntrospectableViewType {\n\t/// The scope of introspection for this particular view type, i.e. where introspect\n\t/// should look to find the desired target view relative to the applied\n\t/// `.introspect(...)` modifier.\n\t///\n\t/// While the scope can be overridden by the user in their `.introspect(...)` call,\n\t/// most of the time it's preferable to defer to the view type's own scope,\n\t/// as it guarantees introspection is working as intended by the vendor.\n\t///\n\t/// Defaults to `.receiver` if left unimplemented, which is a sensible one in\n\t/// most cases if you're looking to implement your own view type.\n\tvar scope: IntrospectionScope { get }\n}\n\nextension IntrospectableViewType {\n\tpublic var scope: IntrospectionScope { .receiver }\n}\n#endif\n"
  },
  {
    "path": "Sources/IntrospectionSelector.swift",
    "content": "#if !os(watchOS)\n#if os(iOS) || os(tvOS) || os(visionOS)\npublic import UIKit\n#elseif os(macOS)\npublic import AppKit\n#endif\n\n@_spi(Advanced)\n@MainActor\npublic struct IntrospectionSelector<Target: PlatformEntity> {\n\t@_spi(Advanced)\n\tpublic static var `default`: Self { .from(Target.self, selector: { $0 }) }\n\n\t@_spi(Advanced)\n\tpublic static func from<Entry: PlatformEntity>(_ entryType: Entry.Type, selector: @MainActor @escaping (Entry) -> Target?) -> Self {\n\t\t.init(\n\t\t\treceiverSelector: { controller in\n\t\t\t\tcontroller.as(Entry.Base.self)?.receiver(ofType: Entry.self).flatMap(selector)\n\t\t\t},\n\t\t\tancestorSelector: { controller in\n\t\t\t\tcontroller.as(Entry.Base.self)?.ancestor(ofType: Entry.self).flatMap(selector)\n\t\t\t}\n\t\t)\n\t}\n\n\tprivate var receiverSelector: @MainActor (IntrospectionPlatformViewController) -> Target?\n\tprivate var ancestorSelector: @MainActor (IntrospectionPlatformViewController) -> Target?\n\n\tprivate init(\n\t\treceiverSelector: @MainActor @escaping (IntrospectionPlatformViewController) -> Target?,\n\t\tancestorSelector: @MainActor @escaping (IntrospectionPlatformViewController) -> Target?\n\t) {\n\t\tself.receiverSelector = receiverSelector\n\t\tself.ancestorSelector = ancestorSelector\n\t}\n\n\t@_spi(Advanced)\n\tpublic func withReceiverSelector(_ selector: @MainActor @escaping (PlatformViewController) -> Target?) -> Self {\n\t\tvar copy = self\n\t\tcopy.receiverSelector = selector\n\t\treturn copy\n\t}\n\n\t@_spi(Advanced)\n\tpublic func withAncestorSelector(_ selector: @MainActor @escaping (PlatformViewController) -> Target?) -> Self {\n\t\tvar copy = self\n\t\tcopy.ancestorSelector = selector\n\t\treturn copy\n\t}\n\n\tfunc callAsFunction(_ controller: IntrospectionPlatformViewController, _ scope: IntrospectionScope) -> Target? {\n\t\tif\n\t\t\tscope.contains(.receiver),\n\t\t\tlet target = receiverSelector(controller)\n\t\t{\n\t\t\treturn target\n\t\t}\n\t\tif\n\t\t\tscope.contains(.ancestor),\n\t\t\tlet target = ancestorSelector(controller)\n\t\t{\n\t\t\treturn target\n\t\t}\n\t\treturn nil\n\t}\n}\n\nextension PlatformViewController {\n\tfunc `as`<Base: PlatformEntity>(_ baseType: Base.Type) -> (any PlatformEntity)? {\n\t\tif Base.self == PlatformView.self {\n\t\t\t#if canImport(UIKit)\n\t\t\treturn viewIfLoaded\n\t\t\t#elseif canImport(AppKit)\n\t\t\treturn isViewLoaded ? view : nil\n\t\t\t#endif\n\t\t} else if Base.self == PlatformViewController.self {\n\t\t\treturn self\n\t\t}\n\t\treturn nil\n\t}\n}\n#endif\n"
  },
  {
    "path": "Sources/IntrospectionView.swift",
    "content": "#if !os(watchOS)\nimport SwiftUI\n\ntypealias IntrospectionViewID = UUID\n\n@MainActor\nfileprivate enum IntrospectionStore {\n\tstatic var shared: [IntrospectionViewID: Pair] = [:]\n\n\tstruct Pair {\n\t\tweak var controller: IntrospectionPlatformViewController? = nil\n\t\tweak var anchor: IntrospectionAnchorPlatformViewController? = nil\n\t}\n}\n\nextension PlatformEntity {\n\tvar introspectionAnchorEntity: Base? {\n\t\tif let introspectionController = self as? IntrospectionPlatformViewController {\n\t\t\treturn IntrospectionStore.shared[introspectionController.id]?.anchor~\n\t\t}\n\t\tif\n\t\t\tlet view = self as? PlatformView,\n\t\t\tlet introspectionController = view.introspectionController\n\t\t{\n\t\t\treturn IntrospectionStore.shared[introspectionController.id]?.anchor?.view~\n\t\t}\n\t\treturn nil\n\t}\n}\n\n/// ⚓️\nstruct IntrospectionAnchorView: PlatformViewControllerRepresentable {\n\t#if canImport(UIKit)\n\ttypealias UIViewControllerType = IntrospectionAnchorPlatformViewController\n\t#elseif canImport(AppKit)\n\ttypealias NSViewControllerType = IntrospectionAnchorPlatformViewController\n\t#endif\n\n\t@Binding\n\tprivate var observed: Void // workaround for state changes not triggering view updates\n\n\tlet id: IntrospectionViewID\n\n\tinit(id: IntrospectionViewID) {\n\t\tself._observed = .constant(())\n\t\tself.id = id\n\t}\n\n\tfunc makePlatformViewController(context: Context) -> IntrospectionAnchorPlatformViewController {\n\t\tIntrospectionAnchorPlatformViewController(id: id)\n\t}\n\n\tfunc updatePlatformViewController(_ controller: IntrospectionAnchorPlatformViewController, context: Context) {}\n\n\tstatic func dismantlePlatformViewController(_ controller: IntrospectionAnchorPlatformViewController, coordinator: Coordinator) {}\n}\n\nfinal class IntrospectionAnchorPlatformViewController: PlatformViewController {\n\tinit(id: IntrospectionViewID) {\n\t\tsuper.init(nibName: nil, bundle: nil)\n\t\tself.isIntrospectionPlatformEntity = true\n\t\tIntrospectionStore.shared[id, default: .init()].anchor = self\n\t}\n\n\t@available(*, unavailable)\n\trequired init?(coder: NSCoder) {\n\t\tfatalError(\"init(coder:) has not been implemented\")\n\t}\n\n\t#if canImport(UIKit)\n\toverride func viewDidLoad() {\n\t\tsuper.viewDidLoad()\n\t\tview.isIntrospectionPlatformEntity = true\n\t}\n\t#elseif canImport(AppKit)\n\toverride func loadView() {\n\t\tview = NSView()\n\t\tview.isIntrospectionPlatformEntity = true\n\t}\n\t#endif\n}\n\nstruct IntrospectionView<Target: PlatformEntity>: PlatformViewControllerRepresentable {\n\t#if canImport(UIKit)\n\ttypealias UIViewControllerType = IntrospectionPlatformViewController\n\t#elseif canImport(AppKit)\n\ttypealias NSViewControllerType = IntrospectionPlatformViewController\n\t#endif\n\n\tfinal class TargetCache {\n\t\tweak var target: Target? = nil\n\t}\n\n\t@Binding\n\tprivate var observed: Void // workaround for state changes not triggering view updates\n\tprivate let id: IntrospectionViewID\n\tprivate let selector: (IntrospectionPlatformViewController) -> Target?\n\tprivate let customize: (Target) -> Void\n\n\tinit(\n\t\tid: IntrospectionViewID,\n\t\tselector: @escaping (IntrospectionPlatformViewController) -> Target?,\n\t\tcustomize: @escaping (Target) -> Void\n\t) {\n\t\tself._observed = .constant(())\n\t\tself.id = id\n\t\tself.selector = selector\n\t\tself.customize = customize\n\t}\n\n\tfunc makeCoordinator() -> TargetCache {\n\t\tTargetCache()\n\t}\n\n\tfunc makePlatformViewController(context: Context) -> IntrospectionPlatformViewController {\n\t\tIntrospectionPlatformViewController(id: id) { controller in\n\t\t\tguard let target = selector(controller) else {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontext.coordinator.target = target\n\t\t\tcustomize(target)\n\t\t\tcontroller.handler = nil\n\t\t}\n\t}\n\n\tfunc updatePlatformViewController(_ controller: IntrospectionPlatformViewController, context: Context) {\n\t\tguard let target = context.coordinator.target ?? selector(controller) else {\n\t\t\treturn\n\t\t}\n\t\tcustomize(target)\n\t}\n\n\tstatic func dismantlePlatformViewController(_ controller: IntrospectionPlatformViewController, coordinator: Coordinator) {\n\t\tcontroller.handler = nil\n\t\tIntrospectionStore.shared.removeValue(forKey: controller.id)\n\t}\n}\n\nfinal class IntrospectionPlatformViewController: PlatformViewController {\n\tlet id: IntrospectionViewID\n\tvar handler: (() -> Void)? = nil\n\n\tfileprivate init(\n\t\tid: IntrospectionViewID,\n\t\thandler: ((IntrospectionPlatformViewController) -> Void)?\n\t) {\n\t\tself.id = id\n\t\tsuper.init(nibName: nil, bundle: nil)\n\t\tself.handler = { [weak self] in\n\t\t\tguard let self else { return }\n\t\t\thandler?(self)\n\t\t}\n\t\tself.isIntrospectionPlatformEntity = true\n\t\tIntrospectionStore.shared[id, default: .init()].controller = self\n\t}\n\n\t@available(*, unavailable)\n\trequired init?(coder: NSCoder) {\n\t\tfatalError(\"init(coder:) has not been implemented\")\n\t}\n\n\t#if canImport(UIKit)\n\t#if os(iOS)\n\toverride var preferredStatusBarStyle: UIStatusBarStyle {\n\t\tparent?.preferredStatusBarStyle ?? super.preferredStatusBarStyle\n\t}\n\t#endif\n\n\toverride func viewDidLoad() {\n\t\tsuper.viewDidLoad()\n\t\tview.introspectionController = self\n\t\tview.isIntrospectionPlatformEntity = true\n\t\thandler?()\n\t}\n\n\toverride func didMove(toParent parent: UIViewController?) {\n\t\tsuper.didMove(toParent: parent)\n\t\thandler?()\n\t}\n\n\toverride func viewDidLayoutSubviews() {\n\t\tsuper.viewDidLayoutSubviews()\n\t\thandler?()\n\t}\n\n\toverride func viewDidAppear(_ animated: Bool) {\n\t\tsuper.viewDidAppear(animated)\n\t\thandler?()\n\t}\n\t#elseif canImport(AppKit)\n\toverride func loadView() {\n\t\tview = NSView()\n\t\tview.introspectionController = self\n\t\tview.isIntrospectionPlatformEntity = true\n\t}\n\n\toverride func viewDidLoad() {\n\t\tsuper.viewDidLoad()\n\t\thandler?()\n\t}\n\n\toverride func viewDidAppear() {\n\t\tsuper.viewDidAppear()\n\t\thandler?()\n\t}\n\t#endif\n}\n\nimport ObjectiveC\n\nextension PlatformView {\n\tfileprivate var introspectionController: IntrospectionPlatformViewController? {\n\t\tget {\n\t\t\tlet key = unsafeBitCast(Selector(#function), to: UnsafeRawPointer.self)\n\t\t\treturn (objc_getAssociatedObject(self, key) as? Weak<IntrospectionPlatformViewController>)?.wrappedValue\n\t\t}\n\t\tset {\n\t\t\tlet key = unsafeBitCast(Selector(#function), to: UnsafeRawPointer.self)\n\t\t\tobjc_setAssociatedObject(self, key, Weak(wrappedValue: newValue), .OBJC_ASSOCIATION_RETAIN_NONATOMIC)\n\t\t}\n\t}\n}\n\nextension PlatformEntity {\n\tvar isIntrospectionPlatformEntity: Bool {\n\t\tget {\n\t\t\tlet key = unsafeBitCast(Selector(#function), to: UnsafeRawPointer.self)\n\t\t\treturn objc_getAssociatedObject(self, key) as? Bool ?? false\n\t\t}\n\t\tset {\n\t\t\tlet key = unsafeBitCast(Selector(#function), to: UnsafeRawPointer.self)\n\t\t\tobjc_setAssociatedObject(self, key, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Sources/PlatformVersion.swift",
    "content": "#if !os(watchOS)\nimport Foundation\n\n@_spi(Internals)\npublic enum PlatformVersionCondition: Sendable {\n\tcase past\n\tcase current\n\tcase future\n}\n\npublic protocol PlatformVersion: Sendable {\n\t@_spi(Internals)\n\tvar condition: PlatformVersionCondition? { get }\n}\n\nextension PlatformVersion {\n\t@_spi(Internals)\n\tpublic var isCurrent: Bool {\n\t\tcondition == .current\n\t}\n\n\t@_spi(Internals)\n\tpublic var isCurrentOrPast: Bool {\n\t\tcondition == .current || condition == .past\n\t}\n\n\t@_spi(Internals)\n\tpublic var condition: PlatformVersionCondition? { nil }\n}\n\npublic struct iOSVersion: PlatformVersion {\n\t@_spi(Internals)\n\tpublic let condition: PlatformVersionCondition?\n\n\t@_spi(Internals)\n\tpublic init(condition: () -> PlatformVersionCondition?) {\n\t\tself.condition = condition()\n\t}\n}\n\nextension iOSVersion {\n\tpublic static let v13 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 14, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(iOS 13, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v14 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 15, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(iOS 14, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v15 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 16, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(iOS 15, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v16 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 17, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(iOS 16, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v17 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 18, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(iOS 17, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v18 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 19, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(iOS 18, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v26 = iOSVersion {\n\t\t#if os(iOS)\n\t\tif #available(iOS 27, *) {\n\t\t\treturn .past\n\t\t}\n\t\t// Apps built before the iOS 26 SDK get \"19.0\" as the system version from ProcessInfo.\n\t\t// Once built with the iOS 26 SDK, the version then becomes \"26.0\".\n\t\tif #available(iOS 19, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n}\n\npublic struct tvOSVersion: PlatformVersion {\n\t@_spi(Internals)\n\tpublic let condition: PlatformVersionCondition?\n\n\t@_spi(Internals)\n\tpublic init(condition: () -> PlatformVersionCondition?) {\n\t\tself.condition = condition()\n\t}\n}\n\nextension tvOSVersion {\n\tpublic static let v13 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 14, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(tvOS 13, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v14 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 15, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(tvOS 14, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v15 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 16, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(tvOS 15, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v16 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 17, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(tvOS 16, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v17 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 18, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(tvOS 17, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v18 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 19, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(tvOS 18, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v26 = tvOSVersion {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 27, *) {\n\t\t\treturn .past\n\t\t}\n\t\t// Apps built before the tvOS 26 SDK get \"19.0\" as the system version from ProcessInfo.\n\t\t// Once built with the tvOS 26 SDK, the version then becomes \"26.0\".\n\t\tif #available(tvOS 19, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n}\n\npublic struct macOSVersion: PlatformVersion {\n\t@_spi(Internals)\n\tpublic let condition: PlatformVersionCondition?\n\n\t@_spi(Internals)\n\tpublic init(condition: () -> PlatformVersionCondition?) {\n\t\tself.condition = condition()\n\t}\n}\n\nextension macOSVersion {\n\tpublic static let v10_15 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 11, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 10.15, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v10_15_4 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 11, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 10.15.4, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v11 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 12, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 11, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v12 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 13, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 12, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v13 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 14, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 13, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v14 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 15, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 14, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v15 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 16, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(macOS 15, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v26 = macOSVersion {\n\t\t#if os(macOS)\n\t\tif #available(macOS 27, *) {\n\t\t\treturn .past\n\t\t}\n\t\t// Apps built before the macOS 26 SDK get \"16.0\" as the system version from ProcessInfo.\n\t\t// Once built with the macOS 26 SDK, the version then becomes \"26.0\".\n\t\tif #available(macOS 16, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n}\n\npublic struct visionOSVersion: PlatformVersion {\n\t@_spi(Internals)\n\tpublic let condition: PlatformVersionCondition?\n\n\t@_spi(Internals)\n\tpublic init(condition: () -> PlatformVersionCondition?) {\n\t\tself.condition = condition()\n\t}\n}\n\nextension visionOSVersion {\n\tpublic static let v1 = visionOSVersion {\n\t\t#if os(visionOS)\n\t\tif #available(visionOS 2, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(visionOS 1, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v2 = visionOSVersion {\n\t\t#if os(visionOS)\n\t\tif #available(visionOS 3, *) {\n\t\t\treturn .past\n\t\t}\n\t\tif #available(visionOS 2, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n\n\tpublic static let v26 = visionOSVersion {\n\t\t#if os(visionOS)\n\t\tif #available(visionOS 27, *) {\n\t\t\treturn .past\n\t\t}\n\t\t// Apps built before the visionOS 26 SDK get \"3.0\" as the system version from ProcessInfo.\n\t\t// Once built with the visionOS 26 SDK, the version then becomes \"26.0\".\n\t\tif #available(visionOS 3, *) {\n\t\t\treturn .current\n\t\t}\n\t\treturn .future\n\t\t#else\n\t\treturn nil\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Sources/PlatformView.swift",
    "content": "#if !os(watchOS)\npublic import SwiftUI\n\n#if canImport(UIKit)\npublic typealias PlatformView = UIView\n#elseif canImport(AppKit)\npublic typealias PlatformView = NSView\n#endif\n\n#if canImport(UIKit)\npublic typealias PlatformViewController = UIViewController\n#elseif canImport(AppKit)\npublic typealias PlatformViewController = NSViewController\n#endif\n\n#if canImport(UIKit)\n@_spi(Internals)\npublic typealias _PlatformViewControllerRepresentable = UIViewControllerRepresentable\n#elseif canImport(AppKit)\n@_spi(Internals)\npublic typealias _PlatformViewControllerRepresentable = NSViewControllerRepresentable\n#endif\n\n@MainActor\n@_spi(Internals)\npublic protocol PlatformViewControllerRepresentable: _PlatformViewControllerRepresentable {\n\t#if canImport(UIKit)\n\ttypealias ViewController = UIViewControllerType\n\t#elseif canImport(AppKit)\n\ttypealias ViewController = NSViewControllerType\n\t#endif\n\n\tfunc makePlatformViewController(context: Context) -> ViewController\n\tfunc updatePlatformViewController(_ controller: ViewController, context: Context)\n\tstatic func dismantlePlatformViewController(_ controller: ViewController, coordinator: Coordinator)\n}\n\n@_spi(Internals)\nextension PlatformViewControllerRepresentable {\n\t#if canImport(UIKit)\n\tpublic func makeUIViewController(context: Context) -> ViewController {\n\t\tmakePlatformViewController(context: context)\n\t}\n\tpublic func updateUIViewController(_ controller: ViewController, context: Context) {\n\t\tupdatePlatformViewController(controller, context: context)\n\t}\n\tpublic static func dismantleUIViewController(_ controller: ViewController, coordinator: Coordinator) {\n\t\tdismantlePlatformViewController(controller, coordinator: coordinator)\n\t}\n\t#elseif canImport(AppKit)\n\tpublic func makeNSViewController(context: Context) -> ViewController {\n\t\tmakePlatformViewController(context: context)\n\t}\n\tpublic func updateNSViewController(_ controller: ViewController, context: Context) {\n\t\tupdatePlatformViewController(controller, context: context)\n\t}\n\tpublic static func dismantleNSViewController(_ controller: ViewController, coordinator: Coordinator) {\n\t\tdismantlePlatformViewController(controller, coordinator: coordinator)\n\t}\n\t#endif\n}\n#endif\n"
  },
  {
    "path": "Sources/PlatformViewVersion.swift",
    "content": "#if !os(watchOS)\nimport SwiftUI\n\n@MainActor\npublic struct PlatformViewVersionPredicate<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity> {\n\tlet selector: IntrospectionSelector<PlatformSpecificEntity>?\n\n\tprivate init<Version: PlatformVersion>(\n\t\t_ versions: [PlatformViewVersion<Version, SwiftUIViewType, PlatformSpecificEntity>],\n\t\tmatches: (PlatformViewVersion<Version, SwiftUIViewType, PlatformSpecificEntity>) -> Bool\n\t) {\n\t\tif let matchingVersion = versions.first(where: matches) {\n\t\t\tself.selector = matchingVersion.selector ?? .default\n\t\t} else {\n\t\t\tself.selector = nil\n\t\t}\n\t}\n\n\tpublic static func iOS(_ versions: iOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>...) -> Self {\n\t\tSelf(versions, matches: \\.isCurrent)\n\t}\n\n\t@_spi(Advanced)\n\tpublic static func iOS(_ versions: PartialRangeFrom<iOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>>) -> Self {\n\t\tSelf([versions.lowerBound], matches: \\.isCurrentOrPast)\n\t}\n\n\tpublic static func tvOS(_ versions: tvOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>...) -> Self {\n\t\tSelf(versions, matches: \\.isCurrent)\n\t}\n\n\t@_spi(Advanced)\n\tpublic static func tvOS(_ versions: PartialRangeFrom<tvOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>>) -> Self {\n\t\tSelf([versions.lowerBound], matches: \\.isCurrentOrPast)\n\t}\n\n\tpublic static func macOS(_ versions: macOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>...) -> Self {\n\t\tSelf(versions, matches: \\.isCurrent)\n\t}\n\n\t@_spi(Advanced)\n\tpublic static func macOS(_ versions: PartialRangeFrom<macOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>>) -> Self {\n\t\tSelf([versions.lowerBound], matches: \\.isCurrentOrPast)\n\t}\n\n\tpublic static func visionOS(_ versions: visionOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>...) -> Self {\n\t\tSelf(versions, matches: \\.isCurrent)\n\t}\n\n\t@_spi(Advanced)\n\tpublic static func visionOS(_ versions: PartialRangeFrom<visionOSViewVersion<SwiftUIViewType, PlatformSpecificEntity>>) -> Self {\n\t\tSelf([versions.lowerBound], matches: \\.isCurrentOrPast)\n\t}\n}\n\npublic typealias iOSViewVersion<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity> =\n\tPlatformViewVersion<iOSVersion, SwiftUIViewType, PlatformSpecificEntity>\npublic typealias tvOSViewVersion<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity> =\n\tPlatformViewVersion<tvOSVersion, SwiftUIViewType, PlatformSpecificEntity>\npublic typealias macOSViewVersion<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity> =\n\tPlatformViewVersion<macOSVersion, SwiftUIViewType, PlatformSpecificEntity>\npublic typealias visionOSViewVersion<SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity> =\n\tPlatformViewVersion<visionOSVersion, SwiftUIViewType, PlatformSpecificEntity>\n\n@MainActor\npublic enum PlatformViewVersion<Version: PlatformVersion, SwiftUIViewType: IntrospectableViewType, PlatformSpecificEntity: PlatformEntity>: Sendable {\n\t@_spi(Internals) case available(Version, IntrospectionSelector<PlatformSpecificEntity>?)\n\t@_spi(Internals) case unavailable\n\n\t@_spi(Advanced) public init(for version: Version, selector: IntrospectionSelector<PlatformSpecificEntity>? = nil) {\n\t\tself = .available(version, selector)\n\t}\n\n\t@_spi(Advanced) public static func unavailable(file: StaticString = #file, line: UInt = #line) -> Self {\n\t\tlet filePath = file.withUTF8Buffer { String(decoding: $0, as: UTF8.self) }\n\t\tlet fileName = URL(fileURLWithPath: filePath).lastPathComponent\n\t\tprint(\n\t\t\t\"\"\"\n\t\t\tIf you're seeing this, someone forgot to mark \\(fileName):\\(line) as unavailable.\n\n\t\t\tThis won't have any effect, but it should be disallowed altogether.\n\n\t\t\tPlease report it upstream so we can properly fix it by using the following link:\n\n\t\t\thttps://github.com/siteline/swiftui-introspect/issues/new?title=`\\(fileName):\\(line)`+should+be+marked+unavailable\n\t\t\t\"\"\"\n\t\t)\n\t\treturn .unavailable\n\t}\n\n\tprivate var version: Version? {\n\t\tif case let .available(version, _) = self {\n\t\t\tversion\n\t\t} else {\n\t\t\tnil\n\t\t}\n\t}\n\n\t@MainActor\n\tfileprivate var selector: IntrospectionSelector<PlatformSpecificEntity>? {\n\t\tif case let .available(_, selector) = self {\n\t\t\tselector\n\t\t} else {\n\t\t\tnil\n\t\t}\n\t}\n\n\tfileprivate var isCurrent: Bool {\n\t\tversion?.isCurrent ?? false\n\t}\n\n\tfileprivate var isCurrentOrPast: Bool {\n\t\tversion?.isCurrentOrPast ?? false\n\t}\n}\n\n// This conformance isn't meant to be used directly by the user,\n// it's only to satisfy requirements for forming ranges (e.g. `.v15...`).\nextension PlatformViewVersion: Comparable {\n\tpublic nonisolated static func == (lhs: Self, rhs: Self) -> Bool {\n\t\ttrue\n\t}\n\n\tpublic nonisolated static func < (lhs: Self, rhs: Self) -> Bool {\n\t\ttrue\n\t}\n}\n#endif\n"
  },
  {
    "path": "Sources/Utils.swift",
    "content": "postfix operator ~\n\npostfix func ~ <T>(lhs: some Any) -> T {\n\tlhs as! T\n}\n\npostfix func ~ <T>(lhs: (some Any)?) -> T? {\n\tlhs as? T\n}\n\nfunc recursiveSequence<S: Sequence>(_ sequence: S, children: @escaping (S.Element) -> S) -> AnySequence<S.Element> {\n\tAnySequence {\n\t\tvar mainIterator = sequence.makeIterator()\n\t\t// Current iterator, or `nil` if all sequences are exhausted:\n\t\tvar iterator: AnyIterator<S.Element>?\n\n\t\treturn AnyIterator {\n\t\t\tguard let iterator, let element = iterator.next() else {\n\t\t\t\tif let element = mainIterator.next() {\n\t\t\t\t\titerator = recursiveSequence(children(element), children: children).makeIterator()\n\t\t\t\t\treturn element\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn element\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Sources/ViewTypes/Button.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Button` type in SwiftUI.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS 10.15 – 15\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         VStack {\n///             Button(\"Plain Button\", action: {})\n///                 .introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15)) {\n///                     print(type(of: $0)) // NSButton\n///                 }\n///\n///             Button(\"Bordered Button\", action: {})\n///                 .buttonStyle(.bordered)\n///                 .introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15)) {\n///                     print(type(of: $0)) // NSButton\n///                 }\n///\n///             Button(\"Borderless Button\", action: {})\n///                 .buttonStyle(.borderless)\n///                 .introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15)) {\n///                     print(type(of: $0)) // NSButton\n///                 }\n///\n///             Button(\"Link Button\", action: {})\n///                 .buttonStyle(.link)\n///                 .introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15)) {\n///                     print(type(of: $0)) // NSButton\n///                 }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS 26\n///\n/// On macOS 26, only the `.borderless` and `.link` button styles are supported for introspection.\n/// Other styles (e.g., plain or bordered) are not supported on macOS 26.\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         VStack {\n///             Button(\"Borderless Button\", action: {})\n///                 .buttonStyle(.borderless)\n///                 .introspect(.button, on: .macOS(.v26)) {\n///                     print(type(of: $0)) // NSButton\n///                 }\n///\n///             Button(\"Link Button\", action: {})\n///                 .buttonStyle(.link)\n///                 .introspect(.button, on: .macOS(.v26)) {\n///                     print(type(of: $0)) // NSButton\n///                 }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct ButtonType: IntrospectableViewType {}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == ButtonType {\n\tpublic static var button: Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<ButtonType, NSButton> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ColorPicker.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `ColorPicker` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var color = Color.red\n///\n///     var body: some View {\n///         ColorPicker(\"Pick a color\", selection: $color)\n///             .introspect(.colorPicker, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIColorPicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var color = Color.red\n///\n///     var body: some View {\n///         ColorPicker(\"Pick a color\", selection: $color)\n///             .introspect(.colorPicker, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSColorPicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var color = Color.red\n///\n///     var body: some View {\n///         ColorPicker(\"Pick a color\", selection: $color)\n///             .introspect(.colorPicker, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIColorPicker\n///             }\n///     }\n/// }\n/// ```\npublic struct ColorPickerType: IntrospectableViewType {}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == ColorPickerType {\n\tpublic static var colorPicker: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\n@available(iOS 14, *)\nextension iOSViewVersion<ColorPickerType, UIColorWell> {\n\t@available(*, unavailable, message: \"ColorPicker isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\n@available(iOS 14, *)\nextension visionOSViewVersion<ColorPickerType, UIColorWell> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\n@available(macOS 11, *)\nextension macOSViewVersion<ColorPickerType, NSColorWell> {\n\t@available(*, unavailable, message: \"ColorPicker isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/DatePicker.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `DatePicker` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .introspect(.datePicker, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .introspect(.datePicker, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .introspect(.datePicker, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\npublic struct DatePickerType: IntrospectableViewType {}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == DatePickerType {\n\tpublic static var datePicker: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<DatePickerType, UIDatePicker> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<DatePickerType, UIDatePicker> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<DatePickerType, NSDatePicker> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/DatePickerWithCompactStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `DatePicker` type in SwiftUI, with `.compact` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.compact)\n///             .introspect(.datePicker(style: .compact), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.compact)\n///             .introspect(.datePicker(style: .compact), on: .macOS(.v10_15_4, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.compact)\n///             .introspect(.datePicker(style: .compact), on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\npublic struct DatePickerWithCompactStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase compact\n\t}\n}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == DatePickerWithCompactStyleType {\n\tpublic static func datePicker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<DatePickerWithCompactStyleType, UIDatePicker> {\n\t@available(*, unavailable, message: \".datePickerStyle(.compact) isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<DatePickerWithCompactStyleType, UIDatePicker> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<DatePickerWithCompactStyleType, NSDatePicker> {\n\t@available(*, unavailable, message: \".datePickerStyle(.compact) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\tpublic static let v10_15_4 = Self(for: .v10_15_4)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/DatePickerWithFieldStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `DatePicker` type in SwiftUI, with `.field` style.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.field)\n///             .introspect(.datePicker(style: .field), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct DatePickerWithFieldStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase field\n\t}\n}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == DatePickerWithFieldStyleType {\n\tpublic static func datePicker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<DatePickerWithFieldStyleType, NSDatePicker> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/DatePickerWithGraphicalStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `DatePicker` type in SwiftUI, with `.graphical` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.graphical)\n///             .introspect(.datePicker(style: .graphical), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.graphical)\n///             .introspect(.datePicker(style: .graphical), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.graphical)\n///             .introspect(.datePicker(style: .graphical), on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\npublic struct DatePickerWithGraphicalStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase graphical\n\t}\n}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == DatePickerWithGraphicalStyleType {\n\tpublic static func datePicker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<DatePickerWithGraphicalStyleType, UIDatePicker> {\n\t@available(*, unavailable, message: \".datePickerStyle(.graphical) isn't available on iOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<DatePickerWithGraphicalStyleType, UIDatePicker> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<DatePickerWithGraphicalStyleType, NSDatePicker> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/DatePickerWithStepperFieldStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `DatePicker` type in SwiftUI, with `.stepperField` style.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.stepperField)\n///             .introspect(.datePicker(style: .stepperField), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct DatePickerWithStepperFieldStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase stepperField\n\t}\n}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == DatePickerWithStepperFieldStyleType {\n\tpublic static func datePicker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<DatePickerWithStepperFieldStyleType, NSDatePicker> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/DatePickerWithWheelStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `DatePicker` type in SwiftUI, with `.wheel` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.wheel)\n///             .introspect(.datePicker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var date = Date()\n///\n///     var body: some View {\n///         DatePicker(\"Pick a date\", selection: $date)\n///             .datePickerStyle(.wheel)\n///             .introspect(.datePicker(style: .wheel), on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIDatePicker\n///             }\n///     }\n/// }\n/// ```\npublic struct DatePickerWithWheelStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase wheel\n\t}\n}\n\n#if !os(tvOS) && !os(macOS)\nextension IntrospectableViewType where Self == DatePickerWithWheelStyleType {\n\tpublic static func datePicker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<DatePickerWithWheelStyleType, UIDatePicker> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<DatePickerWithWheelStyleType, UIDatePicker> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Form.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Form` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.form, on: .iOS(.v13, .v14, .v15)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///         .introspect(.form, on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.form, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.form, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct FormType: IntrospectableViewType {}\n\n#if !os(macOS)\nextension IntrospectableViewType where Self == FormType {\n\tpublic static var form: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<FormType, UITableView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<FormType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<FormType, UITableView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<FormType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/FormWithGroupedStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Form` type in SwiftUI, with `.grouped` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .formStyle(.grouped)\n///         .introspect(.form(style: .grouped), on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .formStyle(.grouped)\n///         .introspect(.form(style: .grouped), on: .tvOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .formStyle(.grouped)\n///         .introspect(.form(style: .grouped), on: .macOS(.v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSScrollView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Form {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .formStyle(.grouped)\n///         .introspect(.form(style: .grouped), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct FormWithGroupedStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase grouped\n\t}\n}\n\nextension IntrospectableViewType where Self == FormWithGroupedStyleType {\n\tpublic static func form(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<FormWithGroupedStyleType, UITableView> {\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on iOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on iOS 15\")\n\tpublic static let v15 = Self.unavailable()\n}\n\nextension iOSViewVersion<FormWithGroupedStyleType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<FormWithGroupedStyleType, UITableView> {\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on tvOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on tvOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<FormWithGroupedStyleType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<FormWithGroupedStyleType, NSScrollView> {\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on macOS 11\")\n\tpublic static let v11 = Self.unavailable()\n\t@available(*, unavailable, message: \".formStyle(.grouped) isn't available on macOS 12\")\n\tpublic static let v12 = Self.unavailable()\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/FullScreenCover.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of `.fullScreenCover` in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .fullScreenCover(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.fullScreenCover, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UIPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .fullScreenCover(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.fullScreenCover, on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UIPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .fullScreenCover(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.fullScreenCover, on: .visionOS(.v1, .v2, .v26)) {\n///                         print(type(of: $0)) // UIPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\npublic struct FullScreenCoverType: IntrospectableViewType {\n\tpublic var scope: IntrospectionScope { .ancestor }\n}\n\n#if !os(macOS)\nextension IntrospectableViewType where Self == FullScreenCoverType {\n\tpublic static var fullScreenCover: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<FullScreenCoverType, UIPresentationController> {\n\t@available(*, unavailable, message: \".fullScreenCover isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.presentationController })\n\t}\n}\n\nextension tvOSViewVersion<FullScreenCoverType, UIPresentationController> {\n\t@available(*, unavailable, message: \".fullScreenCover isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.presentationController })\n\t}\n}\n\nextension visionOSViewVersion<FullScreenCoverType, UIPresentationController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.presentationController })\n\t}\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/List.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `List` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.list, on: .iOS(.v13, .v14, .v15)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///         .introspect(.list, on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.list, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.list, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSTableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .introspect(.list, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct ListType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase plain\n\t}\n}\n\nextension IntrospectableViewType where Self == ListType {\n\tpublic static var list: Self { .init() }\n\tpublic static func list(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ListType, UITableView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<ListType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ListType, UITableView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ListType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ListType, NSTableView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ListCell.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of a `List` cell type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             ForEach(1...3, id: \\.self) { int in\n///                 Text(\"Item \\(int)\")\n///                     .introspect(.listCell, on: .iOS(.v13, .v14, .v15)) {\n///                         print(type(of: $0)) // UITableViewCell\n///                     }\n///                     .introspect(.listCell, on: .iOS(.v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UICollectionViewCell\n///                     }\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             ForEach(1...3, id: \\.self) { int in\n///                 Text(\"Item \\(int)\")\n///                     .introspect(.listCell, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UITableViewCell\n///                     }\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             ForEach(1...3, id: \\.self) { int in\n///                 Text(\"Item \\(int)\")\n///                     .introspect(.listCell, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                         print(type(of: $0)) // NSTableCellView\n///                     }\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             ForEach(1...3, id: \\.self) { int in\n///                 Text(\"Item \\(int)\")\n///                     .introspect(.listCell, on: .visionOS(.v1, .v2, .v26)) {\n///                         print(type(of: $0)) // UICollectionViewCell\n///                     }\n///             }\n///         }\n///     }\n/// }\n/// ```\npublic struct ListCellType: IntrospectableViewType {\n\tpublic var scope: IntrospectionScope { .ancestor }\n}\n\nextension IntrospectableViewType where Self == ListCellType {\n\tpublic static var listCell: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ListCellType, UITableViewCell> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<ListCellType, UICollectionViewCell> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ListCellType, UITableViewCell> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ListCellType, UICollectionViewCell> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ListCellType, NSTableCellView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ListWithBorderedStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `List` type in SwiftUI, with `.bordered` style.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.bordered)\n///         .introspect(.list(style: .bordered), on: .macOS(.v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSTableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct ListWithBorderedStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase bordered\n\t}\n}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == ListWithBorderedStyleType {\n\tpublic static func list(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<ListWithBorderedStyleType, NSTableView> {\n\t@available(*, unavailable, message: \".listStyle(.insetGrouped) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\t@available(*, unavailable, message: \".listStyle(.insetGrouped) isn't available on macOS 11\")\n\tpublic static let v11 = Self.unavailable()\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ListWithGroupedStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `List` type in SwiftUI, with `.grouped` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.grouped)\n///         .introspect(.list(style: .grouped), on: .iOS(.v13, .v14, .v15)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///         .introspect(.list(style: .grouped), on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.grouped)\n///         .introspect(.list(style: .grouped), on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.grouped)\n///         .introspect(.list(style: .grouped), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct ListWithGroupedStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase grouped\n\t}\n}\n\n#if !os(macOS)\nextension IntrospectableViewType where Self == ListWithGroupedStyleType {\n\tpublic static func list(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ListWithGroupedStyleType, UITableView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<ListWithGroupedStyleType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ListWithGroupedStyleType, UITableView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ListWithGroupedStyleType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ListWithInsetGroupedStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `List` type in SwiftUI, with `.insetGrouped` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.insetGrouped)\n///         .introspect(.list(style: .insetGrouped), on: .iOS(.v14, .v15)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///         .introspect(.list(style: .insetGrouped), on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.insetGrouped)\n///         .introspect(.list(style: .insetGrouped), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct ListWithInsetGroupedStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase insetGrouped\n\t}\n}\n\n#if !os(tvOS) && !os(macOS)\nextension IntrospectableViewType where Self == ListWithInsetGroupedStyleType {\n\tpublic static func list(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ListWithInsetGroupedStyleType, UITableView> {\n\t@available(*, unavailable, message: \".listStyle(.insetGrouped) isn't available on iOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<ListWithInsetGroupedStyleType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ListWithInsetGroupedStyleType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ListWithInsetStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `List` type in SwiftUI, with `.inset` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.inset)\n///         .introspect(.list(style: .inset), on: .iOS(.v14, .v15)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///         .introspect(.list(style: .inset), on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.inset)\n///         .introspect(.list(style: .inset), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSTableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.inset)\n///         .introspect(.list(style: .inset), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct ListWithInsetStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase inset\n\t}\n}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == ListWithInsetStyleType {\n\tpublic static func list(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ListWithInsetStyleType, UITableView> {\n\t@available(*, unavailable, message: \".listStyle(.inset) isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<ListWithInsetStyleType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ListWithInsetStyleType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ListWithInsetStyleType, NSTableView> {\n\t@available(*, unavailable, message: \".listStyle(.inset) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ListWithSidebarStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `List` type in SwiftUI, with `.sidebar` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.sidebar)\n///         .introspect(.list(style: .sidebar), on: .iOS(.v14, .v15)) {\n///             print(type(of: $0)) // UITableView\n///         }\n///         .introspect(.list(style: .sidebar), on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.sidebar)\n///         .introspect(.list(style: .sidebar), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSTableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         List {\n///             Text(\"Item 1\")\n///             Text(\"Item 2\")\n///             Text(\"Item 3\")\n///         }\n///         .listStyle(.sidebar)\n///         .introspect(.list(style: .sidebar), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct ListWithSidebarStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase sidebar\n\t}\n}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == ListWithSidebarStyleType {\n\tpublic static func list(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ListWithSidebarStyleType, UITableView> {\n\t@available(*, unavailable, message: \".listStyle(.sidebar) isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n}\n\nextension iOSViewVersion<ListWithSidebarStyleType, UICollectionView> {\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ListWithSidebarStyleType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ListWithSidebarStyleType, NSTableView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Map.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Map` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))\n///\n///     var body: some View {\n///         Map(coordinateRegion: $region)\n///             .introspect(.map, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // MKMapView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))\n///\n///     var body: some View {\n///         Map(coordinateRegion: $region)\n///             .introspect(.map, on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // MKMapView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))\n///\n///     var body: some View {\n///         Map(coordinateRegion: $region)\n///             .introspect(.map, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // MKMapView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))\n///\n///     var body: some View {\n///         Map(coordinateRegion: $region)\n///             .introspect(.map, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // MKMapView\n///             }\n///     }\n/// }\n/// ```\npublic struct MapType: IntrospectableViewType {}\n\n#if canImport(MapKit)\npublic import MapKit\n\nextension IntrospectableViewType where Self == MapType {\n\tpublic static var map: Self { .init() }\n}\n\nextension iOSViewVersion<MapType, MKMapView> {\n\t@available(*, unavailable, message: \"Map isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<MapType, MKMapView> {\n\t@available(*, unavailable, message: \"Map isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension macOSViewVersion<MapType, MKMapView> {\n\t@available(*, unavailable, message: \"Map isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<MapType, MKMapView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/NavigationSplitView.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `NavigationSplitView` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationSplitView {\n///             Text(\"Root\")\n///         } detail: {\n///             Text(\"Detail\")\n///         }\n///         .introspect(.navigationSplitView, on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UISplitViewController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationSplitView {\n///             Text(\"Root\")\n///         } detail: {\n///             Text(\"Detail\")\n///         }\n///         .introspect(.navigationSplitView, on: .tvOS(.v16, .v17)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationSplitView {\n///             Text(\"Root\")\n///         } detail: {\n///             Text(\"Detail\")\n///         }\n///         .introspect(.navigationSplitView, on: .macOS(.v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSSplitView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationSplitView {\n///             Text(\"Root\")\n///         } detail: {\n///             Text(\"Detail\")\n///         }\n///         .introspect(.navigationSplitView, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UISplitViewController\n///         }\n///     }\n/// }\n/// ```\npublic struct NavigationSplitViewType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == NavigationSplitViewType {\n\tpublic static var navigationSplitView: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<NavigationSplitViewType, UISplitViewController> {\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on iOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on iOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISplitViewController> {\n\t\t.default.withAncestorSelector { $0.splitViewController }\n\t}\n}\n\nextension tvOSViewVersion<NavigationSplitViewType, UINavigationController> {\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on tvOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on tvOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\t@available(*, unavailable, message: \"NavigationSplitView isn't backed by UIKit since tvOS 18\")\n\tpublic static let v18 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't backed by UIKit since tvOS 18\")\n\tpublic static let v26 = Self.unavailable()\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n\nextension visionOSViewVersion<NavigationSplitViewType, UISplitViewController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISplitViewController> {\n\t\t.default.withAncestorSelector { $0.splitViewController }\n\t}\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<NavigationSplitViewType, NSSplitView> {\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on macOS 11\")\n\tpublic static let v11 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationSplitView isn't available on macOS 12\")\n\tpublic static let v12 = Self.unavailable()\n\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/NavigationStack.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `NavigationStack` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationStack {\n///             Text(\"Root\")\n///         }\n///         .introspect(.navigationStack, on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationStack {\n///             Text(\"Root\")\n///         }\n///         .introspect(.navigationStack, on: .tvOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationStack {\n///             Text(\"Root\")\n///         }\n///         .introspect(.navigationStack, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\npublic struct NavigationStackType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == NavigationStackType {\n\tpublic static var navigationStack: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<NavigationStackType, UINavigationController> {\n\t@available(*, unavailable, message: \"NavigationStack isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationStack isn't available on iOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationStack isn't available on iOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n\nextension tvOSViewVersion<NavigationStackType, UINavigationController> {\n\t@available(*, unavailable, message: \"NavigationStack isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationStack isn't available on tvOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"NavigationStack isn't available on tvOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n\nextension visionOSViewVersion<NavigationStackType, UINavigationController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/NavigationViewWithColumnsStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `NavigationView` type in SwiftUI, with `.columns` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(DoubleColumnNavigationViewStyle())\n///         .introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UISplitViewController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(DoubleColumnNavigationViewStyle())\n///         .introspect(.navigationView(style: .columns), on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(DoubleColumnNavigationViewStyle())\n///         .introspect(.navigationView(style: .columns), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSSplitView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(DoubleColumnNavigationViewStyle())\n///         .introspect(.navigationView(style: .columns), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UISplitViewController\n///         }\n///     }\n/// }\n/// ```\npublic struct NavigationViewWithColumnsStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase columns\n\t}\n}\n\nextension IntrospectableViewType where Self == NavigationViewWithColumnsStyleType {\n\tpublic static func navigationView(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<NavigationViewWithColumnsStyleType, UISplitViewController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISplitViewController> {\n\t\t.default.withAncestorSelector { $0.splitViewController }\n\t}\n}\n\nextension tvOSViewVersion<NavigationViewWithColumnsStyleType, UINavigationController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n\nextension visionOSViewVersion<NavigationViewWithColumnsStyleType, UISplitViewController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISplitViewController> {\n\t\t.default.withAncestorSelector { $0.splitViewController }\n\t}\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<NavigationViewWithColumnsStyleType, NSSplitView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/NavigationViewWithStackStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `NavigationView` type in SwiftUI, with `.stack` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.navigationView(style: .stack), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.navigationView(style: .stack), on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.navigationView(style: .stack), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\npublic struct NavigationViewWithStackStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase stack\n\t}\n}\n\nextension IntrospectableViewType where Self == NavigationViewWithStackStyleType {\n\tpublic static func navigationView(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<NavigationViewWithStackStyleType, UINavigationController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n\nextension tvOSViewVersion<NavigationViewWithStackStyleType, UINavigationController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n\nextension visionOSViewVersion<NavigationViewWithStackStyleType, UINavigationController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UINavigationController> {\n\t\t.default.withAncestorSelector { $0.navigationController }\n\t}\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/PageControl.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the page control type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///             Text(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n///         }\n///         .tabViewStyle(.page(indexDisplayMode: .always))\n///         .introspect(.pageControl, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UIPageControl\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///             Text(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n///         }\n///         .tabViewStyle(.page(indexDisplayMode: .always))\n///         .introspect(.pageControl, on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UIPageControl\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///             Text(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n///         }\n///         .tabViewStyle(.page(indexDisplayMode: .always))\n///         .introspect(.pageControl, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UIPageControl\n///         }\n///     }\n/// }\n/// ```\npublic struct PageControlType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == PageControlType {\n\tpublic static var pageControl: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<PageControlType, UIPageControl> {\n\t@available(*, unavailable, message: \".tabViewStyle(.page) isn't available on iOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<PageControlType, UIPageControl> {\n\t@available(*, unavailable, message: \".tabViewStyle(.page) isn't available on tvOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<PageControlType, UIPageControl> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/PickerWithMenuStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Picker` type in SwiftUI, with `.menu` style.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.menu)\n///         .introspect(.picker(style: .menu), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSPopUpButton\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct PickerWithMenuStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase menu\n\t}\n}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == PickerWithMenuStyleType {\n\tpublic static func picker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<PickerWithMenuStyleType, NSPopUpButton> {\n\t@available(*, unavailable, message: \".pickerStyle(.menu) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/PickerWithSegmentedStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Picker` type in SwiftUI, with `.segmented` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.segmented)\n///         .introspect(.picker(style: .segmented), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UISegmentedControl\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.segmented)\n///         .introspect(.picker(style: .segmented), on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UISegmentedControl\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.segmented)\n///         .introspect(.picker(style: .segmented), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSSegmentedControl\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.segmented)\n///         .introspect(.picker(style: .segmented), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UISegmentedControl\n///         }\n///     }\n/// }\n/// ```\npublic struct PickerWithSegmentedStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase segmented\n\t}\n}\n\nextension IntrospectableViewType where Self == PickerWithSegmentedStyleType {\n\tpublic static func picker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<PickerWithSegmentedStyleType, UISegmentedControl> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<PickerWithSegmentedStyleType, UISegmentedControl> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<PickerWithSegmentedStyleType, UISegmentedControl> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<PickerWithSegmentedStyleType, NSSegmentedControl> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/PickerWithWheelStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Picker` type in SwiftUI, with `.wheel` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.wheel)\n///         .introspect(.picker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UIPickerView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = \"1\"\n///\n///     var body: some View {\n///         Picker(\"Pick a number\", selection: $selection) {\n///             Text(\"1\").tag(\"1\")\n///             Text(\"2\").tag(\"2\")\n///             Text(\"3\").tag(\"3\")\n///         }\n///         .pickerStyle(.wheel)\n///         .introspect(.picker(style: .wheel), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UIPickerView\n///         }\n///     }\n/// }\n/// ```\npublic struct PickerWithWheelStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase wheel\n\t}\n}\n\n#if !os(tvOS) && !os(macOS)\nextension IntrospectableViewType where Self == PickerWithWheelStyleType {\n\tpublic static func picker(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<PickerWithWheelStyleType, UIPickerView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<PickerWithWheelStyleType, UIPickerView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Popover.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of `.popover` in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .popover(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.popover, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UIPopoverPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .popover(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.popover, on: .visionOS(.v1, .v2, .v26)) {\n///                         print(type(of: $0)) // UIPopoverPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\npublic struct PopoverType: IntrospectableViewType {\n\tpublic var scope: IntrospectionScope { .ancestor }\n}\n\n#if !os(tvOS) && !os(macOS)\nextension IntrospectableViewType where Self == PopoverType {\n\tpublic static var popover: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<PopoverType, UIPopoverPresentationController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPopoverPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.popoverPresentationController })\n\t}\n}\n\nextension visionOSViewVersion<PopoverType, UIPopoverPresentationController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPopoverPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.popoverPresentationController })\n\t}\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ProgressViewWithCircularStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `ProgressView` type in SwiftUI, with `.circular` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.circular)\n///             .introspect(.progressView(style: .circular), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIActivityIndicatorView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.circular)\n///             .introspect(.progressView(style: .circular), on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIActivityIndicatorView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.circular)\n///             .introspect(.progressView(style: .circular), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSProgressIndicator\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.circular)\n///             .introspect(.progressView(style: .circular), on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIActivityIndicatorView\n///             }\n///     }\n/// }\n/// ```\npublic struct ProgressViewWithCircularStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase circular\n\t}\n}\n\nextension IntrospectableViewType where Self == ProgressViewWithCircularStyleType {\n\tpublic static func progressView(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ProgressViewWithCircularStyleType, UIActivityIndicatorView> {\n\t@available(*, unavailable, message: \".progressViewStyle(.circular) isn't available on iOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ProgressViewWithCircularStyleType, UIActivityIndicatorView> {\n\t@available(*, unavailable, message: \".progressViewStyle(.circular) isn't available on tvOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ProgressViewWithCircularStyleType, UIActivityIndicatorView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ProgressViewWithCircularStyleType, NSProgressIndicator> {\n\t@available(*, unavailable, message: \".progressViewStyle(.circular) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ProgressViewWithLinearStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `ProgressView` type in SwiftUI, with `.linear` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.linear)\n///             .introspect(.progressView(style: .linear), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIProgressView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.linear)\n///             .introspect(.progressView(style: .linear), on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIProgressView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.linear)\n///             .introspect(.progressView(style: .linear), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSProgressIndicator\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ProgressView(value: 0.5)\n///             .progressViewStyle(.linear)\n///             .introspect(.progressView(style: .linear), on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIProgressView\n///             }\n///     }\n/// }\n/// ```\npublic struct ProgressViewWithLinearStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase linear\n\t}\n}\n\nextension IntrospectableViewType where Self == ProgressViewWithLinearStyleType {\n\tpublic static func progressView(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ProgressViewWithLinearStyleType, UIProgressView> {\n\t@available(*, unavailable, message: \".progressViewStyle(.linear) isn't available on iOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ProgressViewWithLinearStyleType, UIProgressView> {\n\t@available(*, unavailable, message: \".progressViewStyle(.linear) isn't available on tvOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ProgressViewWithLinearStyleType, UIProgressView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ProgressViewWithLinearStyleType, NSProgressIndicator> {\n\t@available(*, unavailable, message: \".progressViewStyle(.linear) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ScrollView.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `ScrollView` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ScrollView {\n///             Text(\"Item\")\n///         }\n///         .introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UIScrollView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ScrollView {\n///             Text(\"Item\")\n///         }\n///         .introspect(.scrollView, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UIScrollView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ScrollView {\n///             Text(\"Item\")\n///         }\n///         .introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSScrollView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ScrollView {\n///             Text(\"Item\")\n///         }\n///         .introspect(.scrollView, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UIScrollView\n///         }\n///     }\n/// }\n/// ```\npublic struct ScrollViewType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == ScrollViewType {\n\tpublic static var scrollView: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ScrollViewType, UIScrollView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ScrollViewType, UIScrollView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ScrollViewType, UIScrollView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ScrollViewType, NSScrollView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/SearchField.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the search field displayed via the `.searchable` modifier in SwiftUI.\n///\n/// ### iOS 15 - 18\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var searchTerm = \"\"\n///\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///                 .searchable(text: $searchTerm)\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18)) {\n///             print(type(of: $0)) // UISearchBar\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### iOS 26+\n///\n/// From iOS 26 onward, search bar is only backed by UIKit when `.searchable` is used within a\n/// `NavigationView` or `NavigationStack` contained inside a `TabView`.\n///\n/// If `.searchable` is used outside of these containers, it is backed by SwiftUI's own implementation,\n/// and there is no UIKit view to introspect.\n///\n/// The only exception to this is on iPad, where double column `NavigationView` and `NavigationSplitView`\n/// still use `UISearchBar` even outside of a `TabView` (for now...).\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var searchTerm = \"\"\n///\n///     var body: some View {\n///         TabView {\n///             NavigationView {\n///                 Text(\"Root\")\n///                     .searchable(text: $searchTerm)\n///             }\n///             .navigationViewStyle(.stack)\n///             .tabItem {\n///                 Label(\"Home\", systemImage: \"house\")\n///             }\n///         }\n///         .introspect(.searchField, on: .iOS(.v26)) {\n///             print(type(of: $0)) // UISearchBar\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var searchTerm = \"\"\n///\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///                 .searchable(text: $searchTerm)\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.searchField, on: .tvOS(.v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UISearchBar\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var searchTerm = \"\"\n///\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\")\n///                 .searchable(text: $searchTerm)\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.searchField, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UISearchBar\n///         }\n///     }\n/// }\n/// ```\npublic struct SearchFieldType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == SearchFieldType {\n\tpublic static var searchField: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<SearchFieldType, UISearchBar> {\n\t@available(*, unavailable, message: \".searchable isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \".searchable isn't available on iOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISearchBar> {\n\t\t.from(UINavigationController.self) {\n\t\t\t$0.viewIfLoaded?.allDescendants.lazy.compactMap { $0 as? UISearchBar }.first\n\t\t}\n\t}\n}\n\nextension tvOSViewVersion<SearchFieldType, UISearchBar> {\n\t@available(*, unavailable, message: \".searchable isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \".searchable isn't available on tvOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISearchBar> {\n\t\t.from(UINavigationController.self) {\n\t\t\t$0.viewIfLoaded?.allDescendants.lazy.compactMap { $0 as? UISearchBar }.first\n\t\t}\n\t}\n}\n\nextension visionOSViewVersion<SearchFieldType, UISearchBar> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISearchBar> {\n\t\t.from(UINavigationController.self) {\n\t\t\t$0.viewIfLoaded?.allDescendants.lazy.compactMap { $0 as? UISearchBar }.first\n\t\t}\n\t}\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/SecureField.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `SecureField` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         SecureField(\"Secure Field\", text: $text)\n///             .introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UISecureField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         SecureField(\"Secure Field\", text: $text)\n///             .introspect(.secureField, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UISecureField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         SecureField(\"Secure Field\", text: $text)\n///             .introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSSecureField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         SecureField(\"Secure Field\", text: $text)\n///             .introspect(.secureField, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UISecureField\n///             }\n///     }\n/// }\n/// ```\npublic struct SecureFieldType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == SecureFieldType {\n\tpublic static var secureField: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<SecureFieldType, UITextField> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<SecureFieldType, UITextField> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<SecureFieldType, UITextField> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<SecureFieldType, NSTextField> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Sheet.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of `.sheet` in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .sheet(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.sheet, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UIPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .sheet(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.sheet, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                         print(type(of: $0)) // UIPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isPresented = false\n///\n///     var body: some View {\n///         Button(\"Present\", action: { isPresented = true })\n///             .sheet(isPresented: $isPresented) {\n///                 Button(\"Dismiss\", action: { isPresented = false })\n///                     .introspect(.sheet, on: .visionOS(.v1, .v2, .v26)) {\n///                         print(type(of: $0)) // UISheetPresentationController\n///                     }\n///             }\n///     }\n/// }\n/// ```\npublic struct SheetType: IntrospectableViewType {\n\tpublic var scope: IntrospectionScope { .ancestor }\n}\n\n#if !os(macOS)\nextension IntrospectableViewType where Self == SheetType {\n\tpublic static var sheet: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<SheetType, UIPresentationController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.presentationController })\n\t}\n}\n\n#if !os(tvOS)\n@available(iOS 15, *)\nextension iOSViewVersion<SheetType, UISheetPresentationController> {\n\t@_disfavoredOverload\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\t@_disfavoredOverload\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\t@_disfavoredOverload\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\t@_disfavoredOverload\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\t@_disfavoredOverload\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISheetPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.sheetPresentationController })\n\t}\n}\n\n@available(iOS 15, *)\nextension visionOSViewVersion<SheetType, UISheetPresentationController> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UISheetPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.sheetPresentationController })\n\t}\n}\n#endif\n\nextension tvOSViewVersion<SheetType, UIPresentationController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIPresentationController> {\n\t\t.from(UIViewController.self, selector: { $0.presentationController })\n\t}\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/SignInWithAppleButton.swift",
    "content": "#if !os(watchOS)\nimport SwiftUI\n\n/// An abstract representation of the `SignInWithAppleButton` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         SignInWithAppleButton(.signIn) { request in\n///             request.requestedScopes = [.fullName, .email]\n///         } onCompletion: { result in\n///             // do something with result\n///         }\n///         .introspect(.signInWithAppleButton, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // ASAuthorizationAppleIDButton\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         SignInWithAppleButton(.signIn) { request in\n///             request.requestedScopes = [.fullName, .email]\n///         } onCompletion: { result in\n///             // do something with result\n///         }\n///         .introspect(.signInWithAppleButton, on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // ASAuthorizationAppleIDButton\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         SignInWithAppleButton(.signIn) { request in\n///             request.requestedScopes = [.fullName, .email]\n///         } onCompletion: { result in\n///             // do something with result\n///         }\n///         .introspect(.signInWithAppleButton, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26),) {\n///             print(type(of: $0)) // ASAuthorizationAppleIDButton\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         SignInWithAppleButton(.signIn) { request in\n///             request.requestedScopes = [.fullName, .email]\n///         } onCompletion: { result in\n///             // do something with result\n///         }\n///         .introspect(.signInWithAppleButton, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // ASAuthorizationAppleIDButton\n///         }\n///     }\n/// }\n/// ```\npublic struct SignInWithAppleButtonType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == SignInWithAppleButtonType {\n\t@available(\n\t\t*,\n\t\tunavailable,\n\t\tmessage: \"\"\"\n\t\tDue to a mysterious bug on Apple's part that may cause a complete\n\t\tapp hang, the unfortunate decision has been made to remove support\n\t\tfor `SignInWithAppleButton` introspection.\n\n\t\tWe apologize for this inconvenience.\n\n\t\tMore details can be found at https://github.com/siteline/swiftui-introspect/issues/400\n\t\t\"\"\"\n\t)\n\tpublic static var signInWithAppleButton: Self { .init() }\n}\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Slider.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Slider` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = 0.5\n///\n///     var body: some View {\n///         Slider(value: $selection, in: 0...1)\n///             .introspect(.slider, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UISlider\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = 0.5\n///\n///     var body: some View {\n///         Slider(value: $selection, in: 0...1)\n///             .introspect(.slider, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSSlider\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct SliderType: IntrospectableViewType {}\n\n#if !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == SliderType {\n\tpublic static var slider: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<SliderType, UISlider> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<SliderType, NSSlider> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Stepper.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Stepper` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = 5\n///\n///     var body: some View {\n///         Stepper(\"Select a number\", value: $selection, in: 0...10)\n///             .introspect(.stepper, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIStepper\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var selection = 5\n///\n///     var body: some View {\n///         Stepper(\"Select a number\", value: $selection, in: 0...10)\n///             .introspect(.stepper, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSStepper\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct StepperType: IntrospectableViewType {}\n\n#if !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == StepperType {\n\tpublic static var stepper: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<StepperType, UIStepper> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<StepperType, NSStepper> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/TabView.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `TabView` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Tab 1\").tabItem { Text(\"Tab 1\") }\n///             Text(\"Tab 2\").tabItem { Text(\"Tab 2\") }\n///         }\n///         .introspect(.tabView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UITabBarController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Tab 1\").tabItem { Text(\"Tab 1\") }\n///             Text(\"Tab 2\").tabItem { Text(\"Tab 2\") }\n///         }\n///         .introspect(.tabView, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UITabBarController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS 10.15 - 14\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Tab 1\").tabItem { Text(\"Tab 1\") }\n///             Text(\"Tab 2\").tabItem { Text(\"Tab 2\") }\n///         }\n///         .introspect(.tabView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14)) {\n///             print(type(of: $0)) // NSTabView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS 15+ (non-root placement only)\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         GroupBox {\n///             TabView {\n///                 Text(\"Tab 1\").tabItem { Text(\"Tab 1\") }\n///                 Text(\"Tab 2\").tabItem { Text(\"Tab 2\") }\n///             }\n///             .introspect(.tabView, on: .macOS(.v15, .v26)) {\n///                 print(type(of: $0)) // NSTabView\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct TabViewType: IntrospectableViewType {}\n\n#if !os(visionOS)\nextension IntrospectableViewType where Self == TabViewType {\n\tpublic static var tabView: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<TabViewType, UITabBarController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\t@MainActor\n\tprivate static var selector: IntrospectionSelector<UITabBarController> {\n\t\t.default.withAncestorSelector { $0.tabBarController }\n\t}\n}\n\nextension tvOSViewVersion<TabViewType, UITabBarController> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\t@MainActor\n\tprivate static var selector: IntrospectionSelector<UITabBarController> {\n\t\t.default.withAncestorSelector { $0.tabBarController }\n\t}\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<TabViewType, NSTabView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/TabViewWithPageStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `TabView` type in SwiftUI, with `.page` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///             Text(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n///         }\n///         .tabViewStyle(.page(indexDisplayMode: .always))\n///         .introspect(.tabView(style: .page), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///             Text(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n///         }\n///         .tabViewStyle(.page(indexDisplayMode: .always))\n///         .introspect(.tabView(style: .page), on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         TabView {\n///             Text(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///             Text(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n///         }\n///         .tabViewStyle(.page(indexDisplayMode: .always))\n///         .introspect(.tabView(style: .page), on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct TabViewWithPageStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase page\n\t}\n}\n\n#if !os(macOS)\nextension IntrospectableViewType where Self == TabViewWithPageStyleType {\n\tpublic static func tabView(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<TabViewWithPageStyleType, UICollectionView> {\n\t@available(*, unavailable, message: \".tabViewStyle(.page) isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<TabViewWithPageStyleType, UICollectionView> {\n\t@available(*, unavailable, message: \".tabViewStyle(.page) isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<TabViewWithPageStyleType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Table.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Table` type in SwiftUI, with any style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     struct Purchase: Identifiable {\n///         let id = UUID()\n///         let price: Decimal\n///     }\n///\n///     var body: some View {\n///         Table(of: Purchase.self) {\n///             TableColumn(\"Base price\") { purchase in\n///                 Text(purchase.price, format: .currency(code: \"USD\"))\n///             }\n///             TableColumn(\"With 15% tip\") { purchase in\n///                 Text(purchase.price * 1.15, format: .currency(code: \"USD\"))\n///             }\n///             TableColumn(\"With 20% tip\") { purchase in\n///                 Text(purchase.price * 1.2, format: .currency(code: \"USD\"))\n///             }\n///         } rows: {\n///             TableRow(Purchase(price: 20))\n///             TableRow(Purchase(price: 50))\n///             TableRow(Purchase(price: 75))\n///         }\n///         .introspect(.table, on: .iOS(.v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     struct Purchase: Identifiable {\n///         let id = UUID()\n///         let price: Decimal\n///     }\n///\n///     var body: some View {\n///         Table(of: Purchase.self) {\n///             TableColumn(\"Base price\") { purchase in\n///                 Text(purchase.price, format: .currency(code: \"USD\"))\n///             }\n///             TableColumn(\"With 15% tip\") { purchase in\n///                 Text(purchase.price * 1.15, format: .currency(code: \"USD\"))\n///             }\n///             TableColumn(\"With 20% tip\") { purchase in\n///                 Text(purchase.price * 1.2, format: .currency(code: \"USD\"))\n///             }\n///         } rows: {\n///             TableRow(Purchase(price: 20))\n///             TableRow(Purchase(price: 50))\n///             TableRow(Purchase(price: 75))\n///         }\n///         .introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26)) {\n///             print(type(of: $0)) // NSTableView\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     struct Purchase: Identifiable {\n///         let id = UUID()\n///         let price: Decimal\n///     }\n///\n///     var body: some View {\n///         Table(of: Purchase.self) {\n///             TableColumn(\"Base price\") { purchase in\n///                 Text(purchase.price, format: .currency(code: \"USD\"))\n///             }\n///             TableColumn(\"With 15% tip\") { purchase in\n///                 Text(purchase.price * 1.15, format: .currency(code: \"USD\"))\n///             }\n///             TableColumn(\"With 20% tip\") { purchase in\n///                 Text(purchase.price * 1.2, format: .currency(code: \"USD\"))\n///             }\n///         } rows: {\n///             TableRow(Purchase(price: 20))\n///             TableRow(Purchase(price: 50))\n///             TableRow(Purchase(price: 75))\n///         }\n///         .introspect(.table, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UICollectionView\n///         }\n///     }\n/// }\n/// ```\npublic struct TableType: IntrospectableViewType {}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == TableType {\n\tpublic static var table: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<TableType, UICollectionView> {\n\t@available(*, unavailable, message: \"Table isn't available on iOS 13\")\n\tpublic static let v13 = Self(for: .v13)\n\t@available(*, unavailable, message: \"Table isn't available on iOS 14\")\n\tpublic static let v14 = Self(for: .v14)\n\t@available(*, unavailable, message: \"Table isn't available on iOS 15\")\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<TableType, UICollectionView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<TableType, NSTableView> {\n\t@available(*, unavailable, message: \"Table isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self(for: .v10_15)\n\t@available(*, unavailable, message: \"Table isn't available on macOS 11\")\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/TextEditor.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `TextEditor` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextEditor(text: $text)\n///             .introspect(.textEditor, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UITextView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextEditor(text: $text)\n///             .introspect(.textEditor, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSTextView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextEditor(text: $text)\n///             .introspect(.textEditor, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UITextView\n///             }\n///     }\n/// }\n/// ```\npublic struct TextEditorType: IntrospectableViewType {}\n\n#if !os(tvOS)\nextension IntrospectableViewType where Self == TextEditorType {\n\tpublic static var textEditor: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<TextEditorType, UITextView> {\n\t@available(*, unavailable, message: \"TextEditor isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<TextEditorType, UITextView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<TextEditorType, NSTextView> {\n\t@available(*, unavailable, message: \"TextEditor isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/TextField.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `TextField` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text)\n///             .introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UITextField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text)\n///             .introspect(.textField, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UITextField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text)\n///             .introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSTextField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text)\n///             .introspect(.textField, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UITextField\n///             }\n///     }\n/// }\n/// ```\npublic struct TextFieldType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == TextFieldType {\n\tpublic static var textField: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<TextFieldType, UITextField> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<TextFieldType, UITextField> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<TextFieldType, UITextField> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<TextFieldType, NSTextField> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/TextFieldWithVerticalAxis.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `TextField` type in SwiftUI, with `.vertical` axis.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text, axis: .vertical)\n///             .introspect(.textField(axis: .vertical), on: .iOS(.v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UITextView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text, axis: .vertical)\n///             .introspect(.textField(axis: .vertical), on: .tvOS(.v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UITextField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text, axis: .vertical)\n///             .introspect(.textField(axis: .vertical), on: .macOS(.v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSTextField\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var text = \"Lorem ipsum\"\n///\n///     var body: some View {\n///         TextField(\"Text Field\", text: $text, axis: .vertical)\n///             .introspect(.textField(axis: .vertical), on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UITextView\n///             }\n///     }\n/// }\n/// ```\npublic struct TextFieldWithVerticalAxisType: IntrospectableViewType {\n\tpublic enum Axis: Sendable {\n\t\tcase vertical\n\t}\n}\n\nextension IntrospectableViewType where Self == TextFieldWithVerticalAxisType {\n\tpublic static func textField(axis: Self.Axis) -> Self { .init() }\n}\n\n// MARK: SwiftUI.TextField(..., axis: .vertical) - iOS\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<TextFieldWithVerticalAxisType, UITextView> {\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on iOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on iOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<TextFieldWithVerticalAxisType, UITextField> {\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on tvOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on tvOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<TextFieldWithVerticalAxisType, UITextView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<TextFieldWithVerticalAxisType, NSTextField> {\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on macOS 11\")\n\tpublic static let v11 = Self.unavailable()\n\t@available(*, unavailable, message: \"TextField(..., axis: .vertical) isn't available on macOS 12\")\n\tpublic static let v12 = Self.unavailable()\n\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Toggle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Toggle` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isOn = false\n///\n///     var body: some View {\n///         Toggle(\"Toggle\", isOn: $isOn)\n///             .introspect(.toggle, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UISwitch\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isOn = false\n///\n///     var body: some View {\n///         Toggle(\"Toggle\", isOn: $isOn)\n///             .introspect(.toggle, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSButton\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct ToggleType: IntrospectableViewType {}\n\n#if !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == ToggleType {\n\tpublic static var toggle: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ToggleType, UISwitch> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ToggleType, NSButton> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ToggleWithButtonStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Toggle` type in SwiftUI, with `.button` style.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS 10.15 - 15\n///\n/// Note: On macOS 26 and later, toggles with button style are no longer backed by `NSButton`, so introspection is\n/// not possible.\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isOn = false\n///\n///     var body: some View {\n///         Toggle(\"Toggle\", isOn: $isOn)\n///             .toggleStyle(.button)\n///             .introspect(.toggle(style: .button), on: .macOS(.v12, .v13, .v14, .v15)) {\n///                 print(type(of: $0)) // NSButton\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct ToggleWithButtonStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase button\n\t}\n}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == ToggleWithButtonStyleType {\n\tpublic static func toggle(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<ToggleWithButtonStyleType, NSButton> {\n\t@available(*, unavailable, message: \".toggleStyle(.button) isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\t@available(*, unavailable, message: \".toggleStyle(.button) isn't available on macOS 11\")\n\tpublic static let v11 = Self.unavailable()\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\t@available(*, unavailable, message: \".toggleStyle(.button) isn't available on macOS 26\")\n\tpublic static let v26 = Self.unavailable\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ToggleWithCheckboxStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Toggle` type in SwiftUI, with `.checkbox` style.\n///\n/// ### iOS\n///\n/// Not available.\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isOn = false\n///\n///     var body: some View {\n///         Toggle(\"Checkbox\", isOn: $isOn)\n///             .toggleStyle(.checkbox)\n///             .introspect(.toggle(style: .checkbox), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSButton\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct ToggleWithCheckboxStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase checkbox\n\t}\n}\n\n#if !os(iOS) && !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == ToggleWithCheckboxStyleType {\n\tpublic static func toggle(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(AppKit) && !targetEnvironment(macCatalyst)\npublic import AppKit\n\nextension macOSViewVersion<ToggleWithCheckboxStyleType, NSButton> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ToggleWithSwitchStyle.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `Toggle` type in SwiftUI, with `.switch` style.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isOn = false\n///\n///     var body: some View {\n///         Toggle(\"Switch\", isOn: $isOn)\n///             .toggleStyle(.switch)\n///             .introspect(.toggle(style: .switch), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UISwitch\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// Not available.\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var isOn = false\n///\n///     var body: some View {\n///         Toggle(\"Switch\", isOn: $isOn)\n///             .toggleStyle(.switch)\n///             .introspect(.toggle(style: .switch), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSSwitch\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// Not available.\npublic struct ToggleWithSwitchStyleType: IntrospectableViewType {\n\tpublic enum Style: Sendable {\n\t\tcase `switch`\n\t}\n}\n\n#if !os(tvOS) && !os(visionOS)\nextension IntrospectableViewType where Self == ToggleWithSwitchStyleType {\n\tpublic static func toggle(style: Self.Style) -> Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ToggleWithSwitchStyleType, UISwitch> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ToggleWithSwitchStyleType, NSSwitch> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/VideoPlayer.swift",
    "content": "#if !os(watchOS)\nimport SwiftUI\n\n/// An abstract representation of the `VideoPlayer` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         VideoPlayer(player: AVPlayer(url: URL(string: \"https://bit.ly/swswift\")!))\n///             .introspect(.videoPlayer, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // AVPlayerViewController\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         VideoPlayer(player: AVPlayer(url: URL(string: \"https://bit.ly/swswift\")!))\n///             .introspect(.videoPlayer, on: .tvOS(.v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // AVPlayerViewController\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         VideoPlayer(player: AVPlayer(url: URL(string: \"https://bit.ly/swswift\")!))\n///             .introspect(.videoPlayer, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // AVPlayerView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         VideoPlayer(player: AVPlayer(url: URL(string: \"https://bit.ly/swswift\")!))\n///             .introspect(.videoPlayer, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // AVPlayerViewController\n///             }\n///     }\n/// }\n/// ```\npublic struct VideoPlayerType: IntrospectableViewType {}\n\n#if canImport(AVKit)\npublic import AVKit\n\nextension IntrospectableViewType where Self == VideoPlayerType {\n\tpublic static var videoPlayer: Self { .init() }\n}\n\n#if canImport(UIKit)\nextension iOSViewVersion<VideoPlayerType, AVPlayerViewController> {\n\t@available(*, unavailable, message: \"VideoPlayer isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<VideoPlayerType, AVPlayerViewController> {\n\t@available(*, unavailable, message: \"VideoPlayer isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<VideoPlayerType, AVPlayerViewController> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\nextension macOSViewVersion<VideoPlayerType, AVPlayerView> {\n\t@available(*, unavailable, message: \"VideoPlayer isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/View.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of a generic SwiftUI view type.\n///\n/// Note: prior to iOS 26, primitive views like `Text`, `Image`, `Button`, and layout\n/// stacks were drawn inside a subclass of `UIView` called `_UIGraphicsView` which was\n/// introspectable via `.introspect(.view)`, however starting iOS 26 this is no longer the\n/// case and all SwiftUI primitives seem to somehow be drawn without an underlying\n/// `UIView` vessel.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ExampleUIViewRepresentable()\n///             .introspect(.view, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // some subclass of UIView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ExampleUIViewRepresentable()\n///             .introspect(.view, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // some subclass of UIView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ExampleUIViewRepresentable()\n///             .introspect(.view, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // some subclass of NSView\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         ExampleUIViewRepresentable()\n///             .introspect(.view, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // some subclass of UIView\n///             }\n///     }\n/// }\n/// ```\npublic struct ViewType: IntrospectableViewType {}\n\n// TODO: I think if Swift ever gets parameterized extensions we could introduce subtypes like:\n//\n// public struct ViewType<PlatformViewType: PlatformView>: IntrospectableViewType {}\n//\n// extension <V: PlatformView> IntrospectableViewType where Self == ViewType<V> {\n//     public static func view<V>(ofType: V.Type) -> Self { ... }\n// }\n\nextension IntrospectableViewType where Self == ViewType {\n\tpublic static var view: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ViewType, UIView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ViewType, UIView> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ViewType, UIView> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<ViewType, NSView> {\n\tpublic static let v10_15 = Self(for: .v10_15)\n\tpublic static let v11 = Self(for: .v11)\n\tpublic static let v12 = Self(for: .v12)\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/ViewController.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the receiving SwiftUI view's view controller,\n/// or the closest ancestor view controller if missing.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///                 .introspect(.viewController, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                     print(type(of: $0)) // some subclass of UIHostingController\n///                 }\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.viewController, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///                 .introspect(.viewController, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                     print(type(of: $0)) // some subclass of UIHostingController\n///                 }\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.viewController, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// Not available.\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         NavigationView {\n///             Text(\"Root\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n///                 .introspect(.viewController, on: .visionOS(.v1, .v2, .v26)) {\n///                     print(type(of: $0)) // some subclass of UIHostingController\n///                 }\n///         }\n///         .navigationViewStyle(.stack)\n///         .introspect(.viewController, on: .visionOS(.v1, .v2, .v26)) {\n///             print(type(of: $0)) // UINavigationController\n///         }\n///     }\n/// }\n/// ```\npublic struct ViewControllerType: IntrospectableViewType {\n\tpublic var scope: IntrospectionScope { [.receiver, .ancestor] }\n}\n\nextension IntrospectableViewType where Self == ViewControllerType {\n\tpublic static var viewController: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<ViewControllerType, UIViewController> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<ViewControllerType, UIViewController> {\n\tpublic static let v13 = Self(for: .v13)\n\tpublic static let v14 = Self(for: .v14)\n\tpublic static let v15 = Self(for: .v15)\n\tpublic static let v16 = Self(for: .v16)\n\tpublic static let v17 = Self(for: .v17)\n\tpublic static let v18 = Self(for: .v18)\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<ViewControllerType, UIViewController> {\n\tpublic static let v1 = Self(for: .v1)\n\tpublic static let v2 = Self(for: .v2)\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/WebView.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of the `WebView` type in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var url = URL(string: \"https://example.com\")!\n///\n///     var body: some View {\n///         WebView(url: url)\n///             .introspect(.webView, on: .iOS(.v26)) {\n///                 print(type(of: $0)) // WKWebView\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var url = URL(string: \"https://example.com\")!\n///\n///     var body: some View {\n///         WebView(url: url)\n///             .introspect(.webView, on: .tvOS(.v26)) {\n///                 print(type(of: $0)) // WKWebView\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var url = URL(string: \"https://example.com\")!\n///\n///     var body: some View {\n///         WebView(url: url)\n///             .introspect(.webView, on: .macOS(.v26)) {\n///                 print(type(of: $0)) // WKWebView\n///             }\n///         }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     @State var url = URL(string: \"https://example.com\")!\n///\n///     var body: some View {\n///         WebView(url: url)\n///             .introspect(.webView, on: .visionOS(.v26)) {\n///                 print(type(of: $0)) // WKWebView\n///             }\n///         }\n///     }\n/// }\n/// ```\npublic struct WebViewType: IntrospectableViewType {}\n\n#if canImport(WebKit)\npublic import WebKit\n\nextension IntrospectableViewType where Self == WebViewType {\n\tpublic static var webView: Self { .init() }\n}\n\nextension iOSViewVersion<WebViewType, WKWebView> {\n\t@available(*, unavailable, message: \"WebView isn't available on iOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on iOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on iOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on iOS 16\")\n\tpublic static let v16 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on iOS 17\")\n\tpublic static let v17 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on iOS 18\")\n\tpublic static let v18 = Self.unavailable()\n\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension tvOSViewVersion<WebViewType, WKWebView> {\n\t@available(*, unavailable, message: \"WebView isn't available on tvOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on tvOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on tvOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on tvOS 16\")\n\tpublic static let v16 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on tvOS 17\")\n\tpublic static let v17 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on tvOS 18\")\n\tpublic static let v18 = Self.unavailable()\n\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension macOSViewVersion<WebViewType, WKWebView> {\n\t@available(*, unavailable, message: \"WebView isn't available on macOS 10.15\")\n\tpublic static let v10_15 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on macOS 11\")\n\tpublic static let v11 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on macOS 12\")\n\tpublic static let v12 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on macOS 13\")\n\tpublic static let v13 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on macOS 14\")\n\tpublic static let v14 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on macOS 15\")\n\tpublic static let v15 = Self.unavailable()\n\n\tpublic static let v26 = Self(for: .v26)\n}\n\nextension visionOSViewVersion<WebViewType, WKWebView> {\n\t@available(*, unavailable, message: \"WebView isn't available on visionOS 1\")\n\tpublic static let v1 = Self.unavailable()\n\t@available(*, unavailable, message: \"WebView isn't available on visionOS 2\")\n\tpublic static let v2 = Self.unavailable()\n\n\tpublic static let v26 = Self(for: .v26)\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/ViewTypes/Window.swift",
    "content": "#if !os(watchOS)\n/// An abstract representation of a view's window in SwiftUI.\n///\n/// ### iOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Text(\"Content\")\n///             .introspect(.window, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIWindow\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### tvOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Text(\"Content\")\n///             .introspect(.window, on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n///                 print(type(of: $0)) // UIWindow\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### macOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Text(\"Content\")\n///             .introspect(.window, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26)) {\n///                 print(type(of: $0)) // NSWindow\n///             }\n///     }\n/// }\n/// ```\n///\n/// ### visionOS\n///\n/// ```swift\n/// struct ContentView: View {\n///     var body: some View {\n///         Text(\"Content\")\n///             .introspect(.window, on: .visionOS(.v1, .v2, .v26)) {\n///                 print(type(of: $0)) // UIWindow\n///             }\n///     }\n/// }\n/// ```\npublic struct WindowType: IntrospectableViewType {}\n\nextension IntrospectableViewType where Self == WindowType {\n\tpublic static var window: Self { .init() }\n}\n\n#if canImport(UIKit)\npublic import UIKit\n\nextension iOSViewVersion<WindowType, UIWindow> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIWindow> {\n\t\t.from(UIView.self, selector: { $0.window })\n\t}\n}\n\nextension tvOSViewVersion<WindowType, UIWindow> {\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v16 = Self(for: .v16, selector: selector)\n\tpublic static let v17 = Self(for: .v17, selector: selector)\n\tpublic static let v18 = Self(for: .v18, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIWindow> {\n\t\t.from(UIView.self, selector: { $0.window })\n\t}\n}\n\nextension visionOSViewVersion<WindowType, UIWindow> {\n\tpublic static let v1 = Self(for: .v1, selector: selector)\n\tpublic static let v2 = Self(for: .v2, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<UIWindow> {\n\t\t.from(UIView.self, selector: { $0.window })\n\t}\n}\n#elseif canImport(AppKit)\npublic import AppKit\n\nextension macOSViewVersion<WindowType, NSWindow> {\n\tpublic static let v10_15 = Self(for: .v10_15, selector: selector)\n\tpublic static let v11 = Self(for: .v11, selector: selector)\n\tpublic static let v12 = Self(for: .v12, selector: selector)\n\tpublic static let v13 = Self(for: .v13, selector: selector)\n\tpublic static let v14 = Self(for: .v14, selector: selector)\n\tpublic static let v15 = Self(for: .v15, selector: selector)\n\tpublic static let v26 = Self(for: .v26, selector: selector)\n\n\tprivate static var selector: IntrospectionSelector<NSWindow> {\n\t\t.from(NSView.self, selector: { $0.window })\n\t}\n}\n#endif\n#endif\n"
  },
  {
    "path": "Sources/Weak.swift",
    "content": "@_spi(Advanced)\n@propertyWrapper\npublic final class Weak<T: AnyObject> {\n\tprivate weak var _wrappedValue: T? = nil\n\n\tpublic var wrappedValue: T? {\n\t\tget { _wrappedValue }\n\t\tset { _wrappedValue = newValue }\n\t}\n\n\tpublic init(wrappedValue: T? = nil) {\n\t\tself._wrappedValue = wrappedValue\n\t}\n}\n"
  },
  {
    "path": "SwiftUIIntrospect.podspec",
    "content": "Pod::Spec.new do |spec|\n\tspec.name = 'SwiftUIIntrospect'\n\tspec.version = ENV['LIB_VERSION']\n\tspec.license = { type: 'MIT' }\n\tspec.homepage = 'https://github.com/siteline/swiftui-introspect'\n\tspec.author = 'David Roman'\n\tspec.summary = 'Introspect underlying UIKit/AppKit components from SwiftUI.'\n\tspec.source = {\n\t\tgit: 'https://github.com/siteline/swiftui-introspect.git',\n\t\ttag: spec.version\n\t}\n\n\tspec.source_files = 'Sources/**/*.swift'\n\n\tspec.swift_version = '6.0'\n\tspec.ios.deployment_target = '13.0'\n\tspec.tvos.deployment_target = '13.0'\n\tspec.osx.deployment_target = '10.15'\n\tspec.visionos.deployment_target = '1.0'\nend\n"
  },
  {
    "path": "SwiftUIIntrospect.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Examples/Showcase/Showcase.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Tests/Tests.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "SwiftUIIntrospect.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "SwiftUIIntrospect.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "SwiftUIIntrospect.xcworkspace/xcshareddata/xcschemes/SwiftUIIntrospect.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   version = \"1.7\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\"\n      buildArchitectures = \"Automatic\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"SwiftUIIntrospect\"\n               BuildableName = \"SwiftUIIntrospect\"\n               BlueprintName = \"SwiftUIIntrospect\"\n               ReferencedContainer = \"container:\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      shouldAutocreateTestPlan = \"YES\">\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"SwiftUIIntrospect\"\n            BuildableName = \"SwiftUIIntrospect\"\n            BlueprintName = \"SwiftUIIntrospect\"\n            ReferencedContainer = \"container:\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Tests/TestFramework/TestFramework.swift",
    "content": "internal import SwiftUI\ninternal import SwiftUIIntrospect\n\nstruct TestView: View {\n\tvar body: some View {\n\t\tText(\"Hello, World!\")\n\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t.introspect(.view, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: { _ in })\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.view, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: { _ in })\n\t\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/PlatformVersionTests.swift",
    "content": "@_spi(Internals) import SwiftUIIntrospect\nimport Testing\n\n@Suite\nstruct PlatformVersionTests {\n\t@Test func iOS_isCurrent() {\n\t\t#if os(iOS)\n\t\tif #available(iOS 26, *) {\n\t\t\t#expect(iOSVersion.v26.isCurrent == true)\n\t\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t} else if #available(iOS 18, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrent == true)\n\t\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t} else if #available(iOS 17, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t\t#expect(iOSVersion.v17.isCurrent == true)\n\t\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t} else if #available(iOS 16, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t\t#expect(iOSVersion.v16.isCurrent == true)\n\t\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t} else if #available(iOS 15, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t\t#expect(iOSVersion.v15.isCurrent == true)\n\t\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t} else if #available(iOS 14, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t\t#expect(iOSVersion.v14.isCurrent == true)\n\t\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t} else if #available(iOS 13, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t\t#expect(iOSVersion.v13.isCurrent == true)\n\t\t}\n\t\t#else\n\t\t#expect(iOSVersion.v26.isCurrent == false)\n\t\t#expect(iOSVersion.v18.isCurrent == false)\n\t\t#expect(iOSVersion.v17.isCurrent == false)\n\t\t#expect(iOSVersion.v16.isCurrent == false)\n\t\t#expect(iOSVersion.v15.isCurrent == false)\n\t\t#expect(iOSVersion.v14.isCurrent == false)\n\t\t#expect(iOSVersion.v13.isCurrent == false)\n\t\t#endif\n\t}\n\n\t@Test func iOS_isCurrentOrPast() {\n\t\t#if os(iOS)\n\t\tif #available(iOS 26, *) {\n\t\t\t#expect(iOSVersion.v26.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(iOS 18, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(iOS 17, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(iOS 16, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(iOS 15, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(iOS 14, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(iOS 13, *) {\n\t\t\t#expect(iOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v16.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v14.isCurrentOrPast == false)\n\t\t\t#expect(iOSVersion.v13.isCurrentOrPast == true)\n\t\t}\n\t\t#else\n\t\t#expect(iOSVersion.v26.isCurrentOrPast == false)\n\t\t#expect(iOSVersion.v18.isCurrentOrPast == false)\n\t\t#expect(iOSVersion.v17.isCurrentOrPast == false)\n\t\t#expect(iOSVersion.v16.isCurrentOrPast == false)\n\t\t#expect(iOSVersion.v15.isCurrentOrPast == false)\n\t\t#expect(iOSVersion.v14.isCurrentOrPast == false)\n\t\t#expect(iOSVersion.v13.isCurrentOrPast == false)\n\t\t#endif\n\t}\n\n\t@Test func macOS_isCurrent() {\n\t\t#if os(macOS)\n\t\tif #available(macOS 26, *) {\n\t\t\t#expect(macOSVersion.v26.isCurrent == true)\n\t\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t} else if #available(macOS 15, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrent == true)\n\t\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t} else if #available(macOS 14, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t\t#expect(macOSVersion.v14.isCurrent == true)\n\t\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t} else if #available(macOS 13, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t\t#expect(macOSVersion.v13.isCurrent == true)\n\t\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t} else if #available(macOS 12, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t\t#expect(macOSVersion.v12.isCurrent == true)\n\t\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t} else if #available(macOS 11, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t\t#expect(macOSVersion.v11.isCurrent == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t} else if #available(macOS 10.15, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrent == true)\n\t\t}\n\t\t#else\n\t\t#expect(macOSVersion.v26.isCurrent == false)\n\t\t#expect(macOSVersion.v15.isCurrent == false)\n\t\t#expect(macOSVersion.v14.isCurrent == false)\n\t\t#expect(macOSVersion.v13.isCurrent == false)\n\t\t#expect(macOSVersion.v12.isCurrent == false)\n\t\t#expect(macOSVersion.v11.isCurrent == false)\n\t\t#expect(macOSVersion.v10_15.isCurrent == false)\n\t\t#endif\n\t}\n\n\t@Test func macOS_isCurrentOrPast() {\n\t\t#if os(macOS)\n\t\tif #available(macOS 26, *) {\n\t\t\t#expect(macOSVersion.v26.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t} else if #available(macOS 15, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t} else if #available(macOS 14, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t} else if #available(macOS 13, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t} else if #available(macOS 12, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t} else if #available(macOS 11, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == true)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t} else if #available(macOS 10.15, *) {\n\t\t\t#expect(macOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v14.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v13.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v12.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v11.isCurrentOrPast == false)\n\t\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == true)\n\t\t}\n\t\t#else\n\t\t#expect(macOSVersion.v26.isCurrentOrPast == false)\n\t\t#expect(macOSVersion.v15.isCurrentOrPast == false)\n\t\t#expect(macOSVersion.v14.isCurrentOrPast == false)\n\t\t#expect(macOSVersion.v13.isCurrentOrPast == false)\n\t\t#expect(macOSVersion.v12.isCurrentOrPast == false)\n\t\t#expect(macOSVersion.v11.isCurrentOrPast == false)\n\t\t#expect(macOSVersion.v10_15.isCurrentOrPast == false)\n\t\t#endif\n\t}\n\n\t@Test func tvOS_isCurrent() {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 26, *) {\n\t\t\t#expect(tvOSVersion.v26.isCurrent == true)\n\t\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t} else if #available(tvOS 18, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrent == true)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t} else if #available(tvOS 17, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == true)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t} else if #available(tvOS 16, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == true)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t} else if #available(tvOS 15, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == true)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t} else if #available(tvOS 14, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t} else if #available(tvOS 13, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrent == true)\n\t\t}\n\t\t#else\n\t\t#expect(tvOSVersion.v26.isCurrent == false)\n\t\t#expect(tvOSVersion.v18.isCurrent == false)\n\t\t#expect(tvOSVersion.v17.isCurrent == false)\n\t\t#expect(tvOSVersion.v16.isCurrent == false)\n\t\t#expect(tvOSVersion.v15.isCurrent == false)\n\t\t#expect(tvOSVersion.v14.isCurrent == false)\n\t\t#expect(tvOSVersion.v13.isCurrent == false)\n\t\t#endif\n\t}\n\n\t@Test func tvOS_isCurrentOrPast() {\n\t\t#if os(tvOS)\n\t\tif #available(tvOS 26, *) {\n\t\t\t#expect(tvOSVersion.v26.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(tvOS 18, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(tvOS 17, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(tvOS 16, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(tvOS 15, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(tvOS 14, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == true)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t} else if #available(tvOS 13, *) {\n\t\t\t#expect(tvOSVersion.v18.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v17.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v16.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v15.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v14.isCurrentOrPast == false)\n\t\t\t#expect(tvOSVersion.v13.isCurrentOrPast == true)\n\t\t}\n\t\t#else\n\t\t#expect(tvOSVersion.v26.isCurrentOrPast == false)\n\t\t#expect(tvOSVersion.v18.isCurrentOrPast == false)\n\t\t#expect(tvOSVersion.v17.isCurrentOrPast == false)\n\t\t#expect(tvOSVersion.v16.isCurrentOrPast == false)\n\t\t#expect(tvOSVersion.v15.isCurrentOrPast == false)\n\t\t#expect(tvOSVersion.v14.isCurrentOrPast == false)\n\t\t#expect(tvOSVersion.v13.isCurrentOrPast == false)\n\t\t#endif\n\t}\n\n\t@Test func visionOS_isCurrent() {\n\t\t#if os(visionOS)\n\t\tif #available(visionOS 26, *) {\n\t\t\t#expect(visionOSVersion.v26.isCurrent == true)\n\t\t\t#expect(visionOSVersion.v2.isCurrent == false)\n\t\t\t#expect(visionOSVersion.v1.isCurrent == false)\n\t\t} else if #available(visionOS 2, *) {\n\t\t\t#expect(visionOSVersion.v26.isCurrent == false)\n\t\t\t#expect(visionOSVersion.v2.isCurrent == true)\n\t\t\t#expect(visionOSVersion.v1.isCurrent == false)\n\t\t} else if #available(visionOS 1, *) {\n\t\t\t#expect(visionOSVersion.v26.isCurrent == false)\n\t\t\t#expect(visionOSVersion.v2.isCurrent == false)\n\t\t\t#expect(visionOSVersion.v1.isCurrent == true)\n\t\t}\n\t\t#else\n\t\t#expect(visionOSVersion.v26.isCurrent == false)\n\t\t#expect(visionOSVersion.v2.isCurrent == false)\n\t\t#expect(visionOSVersion.v1.isCurrent == false)\n\t\t#endif\n\t}\n\n\t@Test func visionOS_isCurrentOrPast() {\n\t\t#if os(visionOS)\n\t\tif #available(visionOS 26, *) {\n\t\t\t#expect(visionOSVersion.v26.isCurrentOrPast == true)\n\t\t\t#expect(visionOSVersion.v2.isCurrentOrPast == true)\n\t\t\t#expect(visionOSVersion.v1.isCurrentOrPast == true)\n\t\t} else if #available(visionOS 2, *) {\n\t\t\t#expect(visionOSVersion.v26.isCurrentOrPast == false)\n\t\t\t#expect(visionOSVersion.v2.isCurrentOrPast == true)\n\t\t\t#expect(visionOSVersion.v1.isCurrentOrPast == true)\n\t\t} else if #available(visionOS 1, *) {\n\t\t\t#expect(visionOSVersion.v26.isCurrentOrPast == false)\n\t\t\t#expect(visionOSVersion.v2.isCurrentOrPast == false)\n\t\t\t#expect(visionOSVersion.v1.isCurrentOrPast == true)\n\t\t}\n\t\t#else\n\t\t#expect(visionOSVersion.v26.isCurrentOrPast == false)\n\t\t#expect(visionOSVersion.v2.isCurrentOrPast == false)\n\t\t#expect(visionOSVersion.v1.isCurrentOrPast == false)\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/TestUtils.swift",
    "content": "import SwiftUI\nimport Testing\n\n#if canImport(UIKit)\n@MainActor\nenum TestUtils {\n\t#if targetEnvironment(macCatalyst) || os(visionOS)\n\tstatic let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 480, height: 300))\n\t#else\n\tstatic let window = UIWindow(frame: UIScreen.main.bounds)\n\t#endif\n\n\tstatic func present(view: some View, file: StaticString = #file, line: UInt = #line) {\n\t\tif\n\t\t\tlet window = UIApplication.shared.connectedScenes.compactMap({ $0 as? UIWindowScene }).first?.windows.first\n\t\t\t??\n\t\t\tUIApplication.shared.windows.first\n\t\t{\n\t\t\twindow.rootViewController = UIHostingController(rootView: view)\n\t\t} else {\n\t\t\twindow.rootViewController = UIHostingController(rootView: view)\n\t\t\twindow.makeKeyAndVisible()\n\t\t\twindow.layoutIfNeeded()\n\t\t}\n\t}\n}\n#elseif canImport(AppKit)\n@MainActor\nenum TestUtils {\n\tprivate static let window = NSWindow(\n\t\tcontentRect: NSRect(x: 0, y: 0, width: 480, height: 300),\n\t\tstyleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],\n\t\tbacking: .buffered,\n\t\tdefer: true\n\t)\n\n\tstatic func present(view: some View) {\n\t\twindow.contentView = NSHostingView(rootView: view)\n\t\twindow.makeKeyAndOrderFront(nil)\n\t\twindow.layoutIfNeeded()\n\t}\n}\n#endif\n\n@MainActor\n@discardableResult\nfunc introspection<Entity: AnyObject & Sendable>(\n\tof type: Entity.Type,\n\ttimeout: TimeInterval = 3,\n\tsourceLocation: SourceLocation = #_sourceLocation,\n\t@ViewBuilder view: (\n\t\t_ spy1: @escaping (Entity) -> Void\n\t) -> some View\n) async throws -> Entity {\n\tvar entity1: Entity?\n\treturn try await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation1 in\n\t\tlet view = view(\n\t\t\t{\n\t\t\t\tconfirmation1()\n\t\t\t\tentity1 = $0\n\t\t\t}\n\t\t)\n\n\t\tTestUtils.present(view: view)\n\n\t\tlet startInstant = Date()\n\t\twhile\n\t\t\tDate().timeIntervalSince(startInstant) < timeout,\n\t\t\tentity1 == nil\n\t\t{\n\t\t\tawait Task.yield()\n\t\t}\n\n\t\treturn try #require(entity1, sourceLocation: sourceLocation)\n\t}\n}\n\n@MainActor\n@discardableResult\nfunc introspection<Entity: AnyObject & Sendable>(\n\tof type: Entity.Type,\n\ttimeout: TimeInterval = 3,\n\tsourceLocation: SourceLocation = #_sourceLocation,\n\t@ViewBuilder view: (\n\t\t_ spy1: @escaping (Entity) -> Void,\n\t\t_ spy2: @escaping (Entity) -> Void\n\t) -> some View\n) async throws -> (Entity, Entity) {\n\tvar entity1: Entity?\n\tvar entity2: Entity?\n\treturn try await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation1 in\n\t\ttry await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation2 in\n\t\t\tlet view = view(\n\t\t\t\t{\n\t\t\t\t\tconfirmation1()\n\t\t\t\t\tentity1 = $0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tconfirmation2()\n\t\t\t\t\tentity2 = $0\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tTestUtils.present(view: view)\n\n\t\t\tlet startInstant = Date()\n\t\t\twhile\n\t\t\t\tDate().timeIntervalSince(startInstant) < timeout,\n\t\t\t\tentity1 == nil ||\n\t\t\t\tentity2 == nil\n\t\t\t{\n\t\t\t\tawait Task.yield()\n\t\t\t}\n\n\t\t\treturn try (\n\t\t\t\t#require(entity1, sourceLocation: sourceLocation),\n\t\t\t\t#require(entity2, sourceLocation: sourceLocation)\n\t\t\t)\n\t\t}\n\t}\n}\n\n@MainActor\n@discardableResult\nfunc introspection<Entity: AnyObject & Sendable>(\n\tof type: Entity.Type,\n\ttimeout: TimeInterval = 3,\n\tsourceLocation: SourceLocation = #_sourceLocation,\n\t@ViewBuilder view: (\n\t\t_ spy1: @escaping (Entity) -> Void,\n\t\t_ spy2: @escaping (Entity) -> Void,\n\t\t_ spy3: @escaping (Entity) -> Void\n\t) -> some View\n) async throws -> (Entity, Entity, Entity) {\n\tvar entity1: Entity?\n\tvar entity2: Entity?\n\tvar entity3: Entity?\n\treturn try await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation1 in\n\t\ttry await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation2 in\n\t\t\ttry await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation3 in\n\t\t\t\tlet view = view(\n\t\t\t\t\t{\n\t\t\t\t\t\tconfirmation1()\n\t\t\t\t\t\tentity1 = $0\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tconfirmation2()\n\t\t\t\t\t\tentity2 = $0\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tconfirmation3()\n\t\t\t\t\t\tentity3 = $0\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\tTestUtils.present(view: view)\n\n\t\t\t\tlet startInstant = Date()\n\t\t\t\twhile\n\t\t\t\t\tDate().timeIntervalSince(startInstant) < timeout,\n\t\t\t\t\tentity1 == nil ||\n\t\t\t\t\tentity2 == nil ||\n\t\t\t\t\tentity3 == nil\n\t\t\t\t{\n\t\t\t\t\tawait Task.yield()\n\t\t\t\t}\n\n\t\t\t\treturn try (\n\t\t\t\t\t#require(entity1, sourceLocation: sourceLocation),\n\t\t\t\t\t#require(entity2, sourceLocation: sourceLocation),\n\t\t\t\t\t#require(entity3, sourceLocation: sourceLocation)\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n\n@MainActor\n@discardableResult\nfunc introspection<Entity: AnyObject & Sendable>(\n\tof type: Entity.Type,\n\ttimeout: TimeInterval = 3,\n\tsourceLocation: SourceLocation = #_sourceLocation,\n\t@ViewBuilder view: (\n\t\t_ spy1: @escaping (Entity) -> Void,\n\t\t_ spy2: @escaping (Entity) -> Void,\n\t\t_ spy3: @escaping (Entity) -> Void,\n\t\t_ spy4: @escaping (Entity) -> Void\n\t) -> some View\n) async throws -> (Entity, Entity, Entity, Entity) {\n\tvar entity1: Entity?\n\tvar entity2: Entity?\n\tvar entity3: Entity?\n\tvar entity4: Entity?\n\treturn try await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation1 in\n\t\ttry await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation2 in\n\t\t\ttry await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation3 in\n\t\t\t\ttry await confirmation(expectedCount: 1..., sourceLocation: sourceLocation) { confirmation4 in\n\t\t\t\t\tlet view = view(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfirmation1()\n\t\t\t\t\t\t\tentity1 = $0\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfirmation2()\n\t\t\t\t\t\t\tentity2 = $0\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfirmation3()\n\t\t\t\t\t\t\tentity3 = $0\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfirmation4()\n\t\t\t\t\t\t\tentity4 = $0\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\n\t\t\t\t\tTestUtils.present(view: view)\n\n\t\t\t\t\tlet startInstant = Date()\n\t\t\t\t\twhile\n\t\t\t\t\t\tDate().timeIntervalSince(startInstant) < timeout,\n\t\t\t\t\t\tentity1 == nil ||\n\t\t\t\t\t\tentity2 == nil ||\n\t\t\t\t\t\tentity3 == nil ||\n\t\t\t\t\t\tentity4 == nil\n\t\t\t\t\t{\n\t\t\t\t\t\tawait Task.yield()\n\t\t\t\t\t}\n\n\t\t\t\t\treturn try (\n\t\t\t\t\t\t#require(entity1, sourceLocation: sourceLocation),\n\t\t\t\t\t\t#require(entity2, sourceLocation: sourceLocation),\n\t\t\t\t\t\t#require(entity3, sourceLocation: sourceLocation),\n\t\t\t\t\t\t#require(entity4, sourceLocation: sourceLocation)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ButtonTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ButtonTests {\n\ttypealias PlatformButton = NSButton\n\n\t@available(macOS, introduced: 10.15, obsoleted: 26.0)\n\t@Test func introspectButtonsBeforeMacOS26() async throws {\n\t\tlet (entity1, entity2, entity3, entity4) = try await introspection(of: PlatformButton.self) { spy1, spy2, spy3, spy4 in\n\t\t\tVStack {\n\t\t\t\tButton(\"Plain Button\", action: {})\n\t\t\t\t\t.introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15), customize: spy1)\n\n\t\t\t\tButton(\"Bordered Button\", action: {})\n\t\t\t\t\t.buttonStyle(.bordered)\n\t\t\t\t\t.introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15), customize: spy2)\n\n\t\t\t\tButton(\"Borderless Button\", action: {})\n\t\t\t\t\t.buttonStyle(.borderless)\n\t\t\t\t\t.introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15), customize: spy3)\n\n\t\t\t\tButton(\"Link Button\", action: {})\n\t\t\t\t\t.buttonStyle(.link)\n\t\t\t\t\t.introspect(.button, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15), customize: spy4)\n\t\t\t}\n\t\t}\n\t\t#expect(Set([entity1, entity2, entity3, entity4].map(ObjectIdentifier.init)).count == 4)\n\t}\n\n\t@available(macOS 26, *)\n\t@Test func introspectButtonsOnMacOS26() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: NSButton.self) { spy1, spy2 in\n\t\t\tVStack {\n\t\t\t\tButton(\"Borderless Button\", action: {})\n\t\t\t\t\t.buttonStyle(.borderless)\n\t\t\t\t\t.introspect(.button, on: .macOS(.v26), customize: spy1)\n\n\t\t\t\tButton(\"Link Button\", action: {})\n\t\t\t\t\t.buttonStyle(.link)\n\t\t\t\t\t.introspect(.button, on: .macOS(.v26), customize: spy2)\n\t\t\t}\n\t\t}\n\t\t#expect(Set([entity1, entity2].map(ObjectIdentifier.init)).count == 2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ColorPickerTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ColorPickerTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformColor = UIColor\n\ttypealias PlatformColorPicker = UIColorWell\n\t#elseif canImport(AppKit)\n\ttypealias PlatformColor = NSColor\n\ttypealias PlatformColorPicker = NSColorWell\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformColorPicker.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tColorPicker(\"\", selection: .constant(PlatformColor.red.cgColor))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.colorPicker, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.colorPicker, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tColorPicker(\"\", selection: .constant(PlatformColor.green.cgColor))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.colorPicker, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.colorPicker, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tColorPicker(\"\", selection: .constant(PlatformColor.blue.cgColor))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.colorPicker, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.colorPicker, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.selectedColor == .red)\n\t\t#expect(entity2.selectedColor == .green)\n\t\t#expect(entity3.selectedColor == .blue)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.color == .red)\n\t\t#expect(entity2.color == .green)\n\t\t#expect(entity3.color == .blue)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/DatePickerTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct DatePickerTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformDatePicker = UIDatePicker\n\t#elseif canImport(AppKit)\n\ttypealias PlatformDatePicker = NSDatePicker\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet date1 = Date(timeIntervalSince1970: 0)\n\t\tlet date2 = Date(timeIntervalSince1970: 5)\n\t\tlet date3 = Date(timeIntervalSince1970: 10)\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformDatePicker.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tDatePicker(\"\", selection: .constant(date1))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date2))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date3))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.date == date1)\n\t\t#expect(entity2.date == date2)\n\t\t#expect(entity3.date == date3)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.dateValue == date1)\n\t\t#expect(entity2.dateValue == date2)\n\t\t#expect(entity3.dateValue == date3)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/DatePickerWithCompactFieldStyleTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct DatePickerWithCompactStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformDatePickerWithCompactStyle = UIDatePicker\n\t#elseif canImport(AppKit)\n\ttypealias PlatformDatePickerWithCompactStyle = NSDatePicker\n\t#endif\n\n\tfunc introspect() async throws {\n\t\tlet date1 = Date(timeIntervalSince1970: 0)\n\t\tlet date2 = Date(timeIntervalSince1970: 5)\n\t\tlet date3 = Date(timeIntervalSince1970: 10)\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformDatePickerWithCompactStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tDatePicker(\"\", selection: .constant(date1))\n\t\t\t\t\t.datePickerStyle(.compact)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker(style: .compact), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker(style: .compact), on: .macOS(.v10_15_4, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date2))\n\t\t\t\t\t.datePickerStyle(.compact)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker(style: .compact), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker(style: .compact), on: .macOS(.v10_15_4, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date3))\n\t\t\t\t\t.datePickerStyle(.compact)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker(style: .compact), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker(style: .compact), on: .macOS(.v10_15_4, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.date == date1)\n\t\t#expect(entity2.date == date2)\n\t\t#expect(entity3.date == date3)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.dateValue == date1)\n\t\t#expect(entity2.dateValue == date2)\n\t\t#expect(entity3.dateValue == date3)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/DatePickerWithFieldStyleTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct DatePickerWithFieldStyleTests {\n\ttypealias PlatformDatePickerWithFieldStyle = NSDatePicker\n\n\t@Test func introspect() async throws {\n\t\tlet date1 = Date(timeIntervalSince1970: 0)\n\t\tlet date2 = Date(timeIntervalSince1970: 5)\n\t\tlet date3 = Date(timeIntervalSince1970: 10)\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformDatePickerWithFieldStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tDatePicker(\"\", selection: .constant(date1))\n\t\t\t\t\t.datePickerStyle(.field)\n\t\t\t\t\t.introspect(.datePicker(style: .field), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date2))\n\t\t\t\t\t.datePickerStyle(.field)\n\t\t\t\t\t.introspect(.datePicker(style: .field), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date3))\n\t\t\t\t\t.datePickerStyle(.field)\n\t\t\t\t\t.introspect(.datePicker(style: .field), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1.dateValue == date1)\n\t\t#expect(entity2.dateValue == date2)\n\t\t#expect(entity3.dateValue == date3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/DatePickerWithGraphicalStyleTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct DatePickerWithGraphicalStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformDatePickerWithGraphicalStyle = UIDatePicker\n\t#elseif canImport(AppKit)\n\ttypealias PlatformDatePickerWithGraphicalStyle = NSDatePicker\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet date1 = Date(timeIntervalSince1970: 0)\n\t\tlet date2 = Date(timeIntervalSince1970: 3600 * 24 * 1)\n\t\tlet date3 = Date(timeIntervalSince1970: 3600 * 24 * 2)\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformDatePickerWithGraphicalStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tDatePicker(\"\", selection: .constant(date1))\n\t\t\t\t\t.datePickerStyle(.graphical)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker(style: .graphical), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker(style: .graphical), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date2))\n\t\t\t\t\t.datePickerStyle(.graphical)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker(style: .graphical), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker(style: .graphical), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date3))\n\t\t\t\t\t.datePickerStyle(.graphical)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.datePicker(style: .graphical), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.datePicker(style: .graphical), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.date == date1)\n\t\t#expect(entity2.date == date2)\n\t\t#expect(entity3.date == date3)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.dateValue == date1)\n\t\t#expect(entity2.dateValue == date2)\n\t\t#expect(entity3.dateValue == date3)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/DatePickerWithStepperFieldStyleTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite struct DatePickerWithStepperFieldStyleTests {\n\ttypealias PlatformDatePickerWithStepperFieldStyle = NSDatePicker\n\n\t@Test func introspect() async throws {\n\t\tlet date1 = Date(timeIntervalSince1970: 0)\n\t\tlet date2 = Date(timeIntervalSince1970: 5)\n\t\tlet date3 = Date(timeIntervalSince1970: 10)\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformDatePickerWithStepperFieldStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tDatePicker(\"\", selection: .constant(date1))\n\t\t\t\t\t.datePickerStyle(.stepperField)\n\t\t\t\t\t.introspect(.datePicker(style: .stepperField), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date2))\n\t\t\t\t\t.datePickerStyle(.stepperField)\n\t\t\t\t\t.introspect(.datePicker(style: .stepperField), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date3))\n\t\t\t\t\t.datePickerStyle(.stepperField)\n\t\t\t\t\t.introspect(.datePicker(style: .stepperField), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1.dateValue == date1)\n\t\t#expect(entity2.dateValue == date2)\n\t\t#expect(entity3.dateValue == date3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/DatePickerWithWheelStyleTests.swift",
    "content": "#if !os(tvOS) && !os(macOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct DatePickerWithWheelStyleTests {\n\ttypealias PlatformDatePickerWithWheelStyle = UIDatePicker\n\n\t@Test func introspect() async throws {\n\t\tlet date1 = Date(timeIntervalSince1970: 0)\n\t\tlet date2 = Date(timeIntervalSince1970: 5)\n\t\tlet date3 = Date(timeIntervalSince1970: 10)\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformDatePickerWithWheelStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tDatePicker(\"\", selection: .constant(date1))\n\t\t\t\t\t.datePickerStyle(.wheel)\n\t\t\t\t\t.introspect(.datePicker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date2))\n\t\t\t\t\t.datePickerStyle(.wheel)\n\t\t\t\t\t.introspect(.datePicker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tDatePicker(\"\", selection: .constant(date3))\n\t\t\t\t\t.datePickerStyle(.wheel)\n\t\t\t\t\t.introspect(.datePicker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1.date == date1)\n\t\t#expect(entity2.date == date2)\n\t\t#expect(entity3.date == date3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/FormTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct FormTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformForm = UIScrollView // covers both UITableView and UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformForm = NSScrollView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformForm.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tForm {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.form, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t.introspect(.form, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tForm {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.form, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.form, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/FormWithGroupedStyleTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct FormWithGroupedStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformFormWithGroupedStyle = UIScrollView // covers both UITableView and UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformFormWithGroupedStyle = NSScrollView\n\t#endif\n\n\t@available(iOS 16, tvOS 16, macOS 13, *)\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformFormWithGroupedStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tForm {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.formStyle(.grouped)\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.form(style: .grouped), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t.introspect(.form(style: .grouped), on: .tvOS(.v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.form(style: .grouped), on: .macOS(.v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tForm {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.form(style: .grouped), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.form(style: .grouped), on: .tvOS(.v16, .v17, .v18, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.form(style: .grouped), on: .macOS(.v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t\t.formStyle(.grouped)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/FullScreenCoverTests.swift",
    "content": "#if !os(macOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct FullScreenCoverTests {\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: UIPresentationController.self) { spy in\n\t\t\tText(\"Root\")\n\t\t\t\t.fullScreenCover(isPresented: .constant(true)) {\n\t\t\t\t\tText(\"Content\")\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.fullScreenCover,\n\t\t\t\t\t\t\ton: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\t\tcustomize: spy\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListCellTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListCellTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformListCell = UIView // covers both UITableViewCell and UICollectionViewCell\n\t#elseif canImport(AppKit)\n\ttypealias PlatformListCell = NSTableCellView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformListCell.self) { spy in\n\t\t\tList {\n\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.listCell, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy)\n\t\t\t\t\t.introspect(.listCell, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.listCell, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\n\t@Test func introspectMasked() async throws {\n\t\ttry await introspection(of: PlatformListCell.self) { spy in\n\t\t\tList {\n\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.listCell, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy)\n\t\t\t\t\t.introspect(.listCell, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.listCell, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy)\n\t\t\t\t\t#endif\n\t\t\t\t\t.clipped()\n\t\t\t\t\t.clipShape(RoundedRectangle(cornerRadius: 20.0))\n\t\t\t\t\t.cornerRadius(2.0)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformList = UIScrollView // covers both UITableView and UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformList = NSTableView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformList.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.list, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.list, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.list, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.list, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n\n\t#if !os(macOS)\n\t@Test func introspectNested() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformList.self) { spy1, spy2 in\n\t\t\tList {\n\t\t\t\tText(\"Item 1\")\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.list, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy2)\n\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t.introspect(.list, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t#endif\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n\t#endif\n\n\t@Test func introspectMasked() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformList.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.list, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.list, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\t\t\t\t.clipped()\n\t\t\t\t.clipShape(RoundedRectangle(cornerRadius: 20.0))\n\t\t\t\t.cornerRadius(2.0)\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.list, on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.list, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListWithBorderedStyleTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListWithBorderedStyleTests {\n\ttypealias PlatformListWithBorderedStyle = NSTableView\n\n\t@available(macOS 12, *)\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformListWithBorderedStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.listStyle(.bordered)\n\t\t\t\t.introspect(.list(style: .bordered), on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy1)\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t.introspect(.list(style: .bordered), on: .macOS(.v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t}\n\t\t\t\t.listStyle(.bordered)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListWithGroupedStyleTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListWithGroupedStyleTests {\n\ttypealias PlatformListWithGroupedStyle = UIScrollView // covers both UITableView and UICollectionView\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformListWithGroupedStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.listStyle(.grouped)\n\t\t\t\t.introspect(.list(style: .grouped), on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t.introspect(.list(style: .grouped), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t.introspect(.list(style: .grouped), on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list(style: .grouped), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t}\n\t\t\t\t.listStyle(.grouped)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListWithInsetGroupedStyleTests.swift",
    "content": "#if !os(tvOS) && !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListWithInsetGroupedStyleTests {\n\ttypealias PlatformListWithInsetGroupedStyle = UIScrollView // covers both UITableView and UICollectionView\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformListWithInsetGroupedStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.listStyle(.insetGrouped)\n\t\t\t\t.introspect(.list(style: .insetGrouped), on: .iOS(.v14, .v15), customize: spy1)\n\t\t\t\t.introspect(.list(style: .insetGrouped), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t.introspect(.list(style: .insetGrouped), on: .iOS(.v14, .v15), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list(style: .insetGrouped), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t}\n\t\t\t\t.listStyle(.insetGrouped)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListWithInsetStyleTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListWithInsetStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformListWithInsetStyle = UIScrollView // covers both UITableView and UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformListWithInsetStyle = NSTableView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformListWithInsetStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.listStyle(.inset)\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.introspect(.list(style: .inset), on: .iOS(.v14, .v15), customize: spy1)\n\t\t\t\t.introspect(.list(style: .inset), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.list(style: .inset), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.list(style: .inset), on: .iOS(.v14, .v15), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list(style: .inset), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.list(style: .inset), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t\t.listStyle(.inset)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListWithPlainStyleTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListWithPlainStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformListWithPlainStyle = UIScrollView // covers both UITableView and UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformListWithPlainStyle = NSTableView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformListWithPlainStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.listStyle(.plain)\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.list(style: .plain), on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t.introspect(.list(style: .plain), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.list(style: .plain), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.list(style: .plain), on: .iOS(.v13, .v14, .v15), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list(style: .plain), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.list(style: .plain), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t\t.listStyle(.plain)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ListWithSidebarStyleTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ListWithSidebarStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformListWithSidebarStyle = UIScrollView // covers both UITableView and UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformListWithSidebarStyle = NSTableView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformListWithSidebarStyle.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t.listStyle(.sidebar)\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.introspect(.list(style: .sidebar), on: .iOS(.v14, .v15), customize: spy1)\n\t\t\t\t.introspect(.list(style: .sidebar), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.list(style: .sidebar), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tList {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.list(style: .sidebar), on: .iOS(.v14, .v15), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t.introspect(.list(style: .sidebar), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.list(style: .sidebar), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t\t.listStyle(.sidebar)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/MapTests.swift",
    "content": "#if canImport(MapKit)\nimport MapKit\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct MapTests {\n\ttypealias PlatformMap = MKMapView\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformMap.self) { spy1, spy2, spy3 in\n\t\t\tlet region = Binding.constant(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5)))\n\n\t\t\tVStack {\n\t\t\t\tMap(coordinateRegion: region)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.map,\n\t\t\t\t\t\ton: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .macOS(.v11, .v12, .v13, .v14, .v15, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\tcustomize: spy1\n\t\t\t\t\t)\n\n\t\t\t\tMap(coordinateRegion: region)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.map,\n\t\t\t\t\t\ton: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .macOS(.v11, .v12, .v13, .v14, .v15, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\tcustomize: spy2\n\t\t\t\t\t)\n\n\t\t\t\tMap(coordinateRegion: region)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.map,\n\t\t\t\t\t\ton: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .macOS(.v11, .v12, .v13, .v14, .v15, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\tcustomize: spy3\n\t\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t\t#expect(entity1 !== entity3)\n\t\t#expect(entity2 !== entity3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/NavigationSplitViewTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct NavigationSplitViewTests {\n\t#if canImport(UIKit) && (os(iOS) || os(visionOS))\n\ttypealias PlatformNavigationSplitView = UISplitViewController\n\t#elseif canImport(UIKit) && os(tvOS)\n\ttypealias PlatformNavigationSplitView = UINavigationController\n\t#elseif canImport(AppKit)\n\ttypealias PlatformNavigationSplitView = NSSplitView\n\t#endif\n\n\t@available(iOS 16, macOS 13, *)\n\t@available(tvOS, introduced: 16, obsoleted: 18)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformNavigationSplitView.self) { spy in\n\t\t\tNavigationSplitView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Root\")\n\t\t\t\t}\n\t\t\t} detail: {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.blue\n\t\t\t\t\tText(\"Detail\")\n\t\t\t\t}\n\t\t\t}\n\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t.introspect(.navigationSplitView, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t\t#elseif os(tvOS)\n\t\t\t.introspect(.navigationSplitView, on: .tvOS(.v16, .v17), customize: spy)\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.navigationSplitView, on: .macOS(.v13, .v14, .v15, .v26), customize: spy)\n\t\t\t#endif\n\t\t}\n\t}\n\n\t@available(iOS 16, macOS 13, *)\n\t@available(tvOS, introduced: 16, obsoleted: 18)\n\t@Test func introspectAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformNavigationSplitView.self) { spy in\n\t\t\t// NB: columnVisibility is explicitly set here for ancestor introspection to work, because initially on iPad the sidebar is hidden, so the introspection modifier isn't triggered until the user makes the sidebar appear. This is why ancestor introspection is discouraged for most situations and it's opt-in.\n\t\t\tNavigationSplitView(columnVisibility: .constant(.all)) {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Sidebar\")\n\t\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.navigationSplitView, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#elseif os(tvOS)\n\t\t\t\t\t\t.introspect(.navigationSplitView, on: .tvOS(.v16, .v17), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.navigationSplitView, on: .macOS(.v13, .v14, .v15, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t} detail: {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.blue\n\t\t\t\t\tText(\"Detail\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/NavigationStackTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct NavigationStackTests {\n\ttypealias PlatformNavigationStack = UINavigationController\n\n\t@available(iOS 16, tvOS 16, *)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformNavigationStack.self) { spy in\n\t\t\tNavigationStack {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t}\n\t\t\t}\n\t\t\t.introspect(.navigationStack, on: .iOS(.v16, .v17, .v18, .v26), .tvOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t}\n\t}\n\n\t@available(iOS 16, tvOS 16, *)\n\t@Test func introspectAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformNavigationStack.self) { spy in\n\t\t\tNavigationStack {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t\t\t.introspect(.navigationStack, on: .iOS(.v16, .v17, .v18, .v26), .tvOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/NavigationViewWithColumnsStyleTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct NavigationViewWithColumnsStyleTests {\n\t#if canImport(UIKit) && (os(iOS) || os(visionOS))\n\ttypealias PlatformNavigationViewWithColumnsStyle = UISplitViewController\n\t#elseif canImport(UIKit) && os(tvOS)\n\ttypealias PlatformNavigationViewWithColumnsStyle = UINavigationController\n\t#elseif canImport(AppKit)\n\ttypealias PlatformNavigationViewWithColumnsStyle = NSSplitView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformNavigationViewWithColumnsStyle.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t}\n\t\t\t}\n\t\t\t.navigationViewStyle(DoubleColumnNavigationViewStyle())\n\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t\t#elseif os(tvOS)\n\t\t\t.introspect(.navigationView(style: .columns), on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy)\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.navigationView(style: .columns), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy)\n\t\t\t#endif\n\t\t}\n\t}\n\n\t#if !targetEnvironment(macCatalyst)\n\t@Test func introspectAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformNavigationViewWithColumnsStyle.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#elseif os(tvOS)\n\t\t\t\t\t\t.introspect(.navigationView(style: .columns), on: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.navigationView(style: .columns), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t\t.navigationViewStyle(DoubleColumnNavigationViewStyle())\n\t\t\t#if os(iOS)\n\t\t\t// NB: this is necessary for ancestor introspection to work, because initially on iPad the \"Customized\" text isn't shown as it's hidden in the sidebar. This is why ancestor introspection is discouraged for most situations and it's opt-in.\n\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n\t\t\t\t$0.preferredDisplayMode = .oneOverSecondary\n\t\t\t}\n\t\t\t#endif\n\t\t}\n\t}\n\t#endif\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/NavigationViewWithStackStyleTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct NavigationViewWithStackStyleTests {\n\ttypealias PlatformNavigationViewWithStackStyle = UINavigationController\n\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformNavigationViewWithStackStyle.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t}\n\t\t\t}\n\t\t\t.navigationViewStyle(.stack)\n\t\t\t.introspect(.navigationView(style: .stack), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t}\n\t}\n\n\t@Test func introspectAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformNavigationViewWithStackStyle.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t\t\t.introspect(.navigationView(style: .stack), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t}\n\t\t\t}\n\t\t\t.navigationViewStyle(.stack)\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/PageControlTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct PageControlTests {\n\ttypealias PlatformPageControl = UIPageControl\n\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformPageControl.self) { spy in\n\t\t\tTabView {\n\t\t\t\tText(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n\t\t\t\tText(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n\t\t\t}\n\t\t\t.tabViewStyle(.page(indexDisplayMode: .always))\n\t\t\t.introspect(.pageControl, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/PickerWithMenuStyleTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct PickerWithMenuStyleTests {\n\ttypealias PlatformPickerWithMenuStyle = NSPopUpButton\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformPickerWithMenuStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.menu)\n\t\t\t\t.introspect(.picker(style: .menu), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t\tText(\"2\").tag(\"2\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.menu)\n\t\t\t\t.introspect(.picker(style: .menu), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t\tText(\"2\").tag(\"2\")\n\t\t\t\t\tText(\"3\").tag(\"3\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.menu)\n\t\t\t\t.introspect(.picker(style: .menu), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1.numberOfItems == 1)\n\t\t#expect(entity2.numberOfItems == 2)\n\t\t#expect(entity3.numberOfItems == 3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/PickerWithSegmentedStyleTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct PickerWithSegmentedStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformPickerWithSegmentedStyle = UISegmentedControl\n\t#elseif canImport(AppKit)\n\ttypealias PlatformPickerWithSegmentedStyle = NSSegmentedControl\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformPickerWithSegmentedStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.segmented)\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t\tText(\"2\").tag(\"2\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.segmented)\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t#endif\n\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t\tText(\"2\").tag(\"2\")\n\t\t\t\t\tText(\"3\").tag(\"3\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.segmented)\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.picker(style: .segmented), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.numberOfSegments == 1)\n\t\t#expect(entity2.numberOfSegments == 2)\n\t\t#expect(entity3.numberOfSegments == 3)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.segmentCount == 1)\n\t\t#expect(entity2.segmentCount == 2)\n\t\t#expect(entity3.segmentCount == 3)\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/PickerWithWheelStyleTests.swift",
    "content": "#if !os(tvOS) && !os(macOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct PickerWithWheelStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformPickerWithWheelStyle = UIPickerView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformPickerWithWheelStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.wheel)\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.introspect(.picker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#endif\n\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t\tText(\"2\").tag(\"2\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.wheel)\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.introspect(.picker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t#endif\n\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tPicker(\"Pick\", selection: .constant(\"1\")) {\n\t\t\t\t\tText(\"1\").tag(\"1\")\n\t\t\t\t\tText(\"2\").tag(\"2\")\n\t\t\t\t\tText(\"3\").tag(\"3\")\n\t\t\t\t}\n\t\t\t\t.pickerStyle(.wheel)\n\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t.introspect(.picker(style: .wheel), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.numberOfRows(inComponent: 0) == 1)\n\t\t#expect(entity2.numberOfRows(inComponent: 0) == 2)\n\t\t#expect(entity3.numberOfRows(inComponent: 0) == 3)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/PopoverTests.swift",
    "content": "#if !os(tvOS) && !os(macOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct PopoverTests {\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: UIPopoverPresentationController.self) { spy in\n\t\t\tText(\"Root\")\n\t\t\t\t.popover(isPresented: .constant(true)) {\n\t\t\t\t\tText(\"Popover\")\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.popover,\n\t\t\t\t\t\t\ton: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\t\tcustomize: spy\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ProgressViewWithCircularStyleTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ProgressViewWithCircularStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformProgressViewWithCircularStyle = UIActivityIndicatorView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformProgressViewWithCircularStyle = NSProgressIndicator\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformProgressViewWithCircularStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tProgressView(value: 0.25)\n\t\t\t\t\t.progressViewStyle(.circular)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.progressView(style: .circular), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.progressView(style: .circular), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tProgressView(value: 0.5)\n\t\t\t\t\t.progressViewStyle(.circular)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.progressView(style: .circular), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.progressView(style: .circular), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tProgressView(value: 0.75)\n\t\t\t\t\t.progressViewStyle(.circular)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.progressView(style: .circular), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.progressView(style: .circular), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(AppKit) && !targetEnvironment(macCatalyst)\n\t\t#expect(entity1.doubleValue == 0.25)\n\t\t#expect(entity2.doubleValue == 0.5)\n\t\t#expect(entity3.doubleValue == 0.75)\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ProgressViewWithLinearStyleTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ProgressViewWithLinearStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformProgressViewWithLinearStyle = UIProgressView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformProgressViewWithLinearStyle = NSProgressIndicator\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformProgressViewWithLinearStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tProgressView(value: 0.25)\n\t\t\t\t\t.progressViewStyle(.linear)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.progressView(style: .linear), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.progressView(style: .linear), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tProgressView(value: 0.5)\n\t\t\t\t\t.progressViewStyle(.linear)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.progressView(style: .linear), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.progressView(style: .linear), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tProgressView(value: 0.75)\n\t\t\t\t\t.progressViewStyle(.linear)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.progressView(style: .linear), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.progressView(style: .linear), on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.progress == 0.25)\n\t\t#expect(entity2.progress == 0.5)\n\t\t#expect(entity3.progress == 0.75)\n\t\t#elseif canImport(AppKit) && !targetEnvironment(macCatalyst)\n\t\t#expect(entity1.doubleValue == 0.25)\n\t\t#expect(entity2.doubleValue == 0.5)\n\t\t#expect(entity3.doubleValue == 0.75)\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ScrollViewTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ScrollViewTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformScrollView = UIScrollView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformScrollView = NSScrollView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformScrollView.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tScrollView(showsIndicators: false) {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\n\t\t\t\tScrollView(showsIndicators: true) {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.showsVerticalScrollIndicator == false)\n\t\t#expect(entity2.showsVerticalScrollIndicator == true)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.verticalScroller == nil)\n\t\t#expect(entity2.verticalScroller != nil)\n\t\t#endif\n\n\t\t#expect(entity1 !== entity2)\n\t}\n\n\t@Test func introspectNested() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformScrollView.self) { spy1, spy2 in\n\t\t\tScrollView(showsIndicators: true) {\n\t\t\t\tText(\"Item 1\")\n\n\t\t\t\tScrollView(showsIndicators: false) {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t#endif\n\t\t\t}\n\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t#endif\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.showsVerticalScrollIndicator == true)\n\t\t#expect(entity2.showsVerticalScrollIndicator == false)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.verticalScroller != nil)\n\t\t#expect(entity2.verticalScroller == nil)\n\t\t#endif\n\n\t\t#expect(entity1 !== entity2)\n\t}\n\n\t@Test func introspectMasked() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformScrollView.self) { spy1, spy2 in\n\t\t\tHStack {\n\t\t\t\tScrollView(showsIndicators: false) {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t#endif\n\t\t\t\t.clipped()\n\t\t\t\t.clipShape(RoundedRectangle(cornerRadius: 20.0))\n\t\t\t\t.cornerRadius(2.0)\n\n\t\t\t\tScrollView(showsIndicators: true) {\n\t\t\t\t\tText(\"Item 1\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t\t.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.scrollView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy2)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.showsVerticalScrollIndicator == false)\n\t\t#expect(entity2.showsVerticalScrollIndicator == true)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.verticalScroller == nil)\n\t\t#expect(entity2.verticalScroller != nil)\n\t\t#endif\n\n\t\t#expect(entity1 !== entity2)\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/SearchFieldTests.swift",
    "content": "#if !os(macOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct SearchFieldTests {\n\ttypealias PlatformSearchField = UISearchBar\n\n\t@available(iOS 15, tvOS 15, *)\n\t@Test(.`disabled on iOS 26+ except for iPad`())\n\tfunc introspectInNavigationStack() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tText(\"Customized\")\n\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t}\n\t\t\t.navigationViewStyle(.stack)\n\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t}\n\t}\n\n\t@available(iOS 26, tvOS 15, *)\n\t@Test func introspectInNavigationStackInTabView() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tTabView {\n\t\t\t\tNavigationView {\n\t\t\t\t\tText(\"Customized\")\n\t\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t}\n\t\t\t\t.navigationViewStyle(.stack)\n\t\t\t}\n\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t}\n\t}\n\n\t@available(iOS 15, tvOS 15, *)\n\t@Test(.`disabled on iOS 26+ except for iPad`())\n\tfunc introspectInNavigationStackAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tText(\"Customized\")\n\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t}\n\t\t\t.navigationViewStyle(.stack)\n\t\t}\n\t}\n\n\t@available(iOS 26, tvOS 15, *)\n\t@Test func introspectInNavigationStackInTabViewAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tTabView {\n\t\t\t\tNavigationView {\n\t\t\t\t\tText(\"Customized\")\n\t\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t}\n\t\t\t\t.navigationViewStyle(.stack)\n\t\t\t}\n\t\t}\n\t}\n\n\t@available(iOS 15, tvOS 15, *)\n\t@Test(.`disabled on iOS 26+ except for iPad`())\n\tfunc introspectInNavigationSplitView() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tText(\"Customized\")\n\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t}\n\t\t\t.navigationViewStyle(DoubleColumnNavigationViewStyle())\n\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t\t#if os(iOS)\n\t\t\t// NB: this is necessary for introspection to work, because on iPad the search field is in the sidebar, which is initially hidden.\n\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n\t\t\t\t$0.preferredDisplayMode = .oneOverSecondary\n\t\t\t}\n\t\t\t#endif\n\t\t}\n\t}\n\n\t@available(iOS 26, tvOS 15, *)\n\t@Test func introspectInNavigationSplitViewInTabView() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tTabView {\n\t\t\t\tNavigationView {\n\t\t\t\t\tText(\"Customized\")\n\t\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t}\n\t\t\t\t.navigationViewStyle(DoubleColumnNavigationViewStyle())\n\t\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t\t\t#if os(iOS)\n\t\t\t\t// NB: this is necessary for introspection to work, because on iPad the search field is in the sidebar, which is initially hidden.\n\t\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n\t\t\t\t\t$0.preferredDisplayMode = .oneOverSecondary\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\n\t@available(iOS 15, tvOS 15, *)\n\t@Test(.`disabled on iOS 26+ except for iPad`())\n\tfunc introspectInNavigationSplitViewAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tNavigationView {\n\t\t\t\tText(\"Customized\")\n\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t}\n\t\t\t.navigationViewStyle(DoubleColumnNavigationViewStyle())\n\t\t\t#if os(iOS)\n\t\t\t// NB: this is necessary for introspection to work, because on iPad the search field is in the sidebar, which is initially hidden.\n\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n\t\t\t\t$0.preferredDisplayMode = .oneOverSecondary\n\t\t\t}\n\t\t\t#endif\n\t\t}\n\t}\n\n\t@available(iOS 26, tvOS 15, *)\n\t@Test func introspectInNavigationSplitViewInTabViewAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformSearchField.self) { spy in\n\t\t\tTabView {\n\t\t\t\tNavigationView {\n\t\t\t\t\tText(\"Customized\")\n\t\t\t\t\t\t.searchable(text: .constant(\"\"))\n\t\t\t\t\t\t.introspect(.searchField, on: .iOS(.v15, .v16, .v17, .v18, .v26), .tvOS(.v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t}\n\t\t\t\t.navigationViewStyle(DoubleColumnNavigationViewStyle())\n\t\t\t\t#if os(iOS)\n\t\t\t\t// NB: this is necessary for introspection to work, because on iPad the search field is in the sidebar, which is initially hidden.\n\t\t\t\t.introspect(.navigationView(style: .columns), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26)) {\n\t\t\t\t\t$0.preferredDisplayMode = .oneOverSecondary\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n}\n\n@MainActor\nextension Trait where Self == ConditionTrait {\n\tstatic func `disabled on iOS 26+ except for iPad`(sourceLocation: SourceLocation = #_sourceLocation) -> Self {\n\t\tlet disabled = if #available(iOS 26, *) {\n\t\t\tUIDevice.current.userInterfaceIdiom != .pad\n\t\t} else {\n\t\t\tfalse\n\t\t}\n\t\treturn .disabled(if: disabled, \"Disabled on iOS 26+ except for iPad\", sourceLocation: sourceLocation)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/SecureFieldTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct SecureFieldTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformSecureField = UITextField\n\t#elseif canImport(AppKit)\n\ttypealias PlatformSecureField = NSTextField\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformSecureField.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tSecureField(\"\", text: .constant(\"Secure Field 1\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tSecureField(\"\", text: .constant(\"Secure Field 2\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tSecureField(\"\", text: .constant(\"Secure Field 3\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.text == \"Secure Field 1\")\n\t\t#expect(entity2.text == \"Secure Field 2\")\n\t\t#expect(entity3.text == \"Secure Field 3\")\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.stringValue == \"Secure Field 1\")\n\t\t#expect(entity2.stringValue == \"Secure Field 2\")\n\t\t#expect(entity3.stringValue == \"Secure Field 3\")\n\t\t#endif\n\t}\n\n\t@Test func introspectEmbeddedInList() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformSecureField.self) { spy1, spy2, spy3 in\n\t\t\tList {\n\t\t\t\tSecureField(\"\", text: .constant(\"Secure Field 1\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tSecureField(\"\", text: .constant(\"Secure Field 2\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tSecureField(\"\", text: .constant(\"Secure Field 3\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.secureField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.secureField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.text == \"Secure Field 1\")\n\t\t#expect(entity2.text == \"Secure Field 2\")\n\t\t#expect(entity3.text == \"Secure Field 3\")\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.stringValue == \"Secure Field 1\")\n\t\t#expect(entity2.stringValue == \"Secure Field 2\")\n\t\t#expect(entity3.stringValue == \"Secure Field 3\")\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/SheetTests.swift",
    "content": "#if !os(macOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct SheetTests {\n\t#if os(iOS)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: UIPresentationController.self) { spy in\n\t\t\tText(\"Root\")\n\t\t\t\t.sheet(isPresented: .constant(true)) {\n\t\t\t\t\tText(\"Sheet\")\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.sheet,\n\t\t\t\t\t\t\ton: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26),\n\t\t\t\t\t\t\tcustomize: spy\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t}\n\t}\n\n\t@available(iOS 15, tvOS 15, *)\n\t@Test func introspectAsSheetPresentationController() async throws {\n\t\ttry await introspection(of: UISheetPresentationController.self) { spy in\n\t\t\tText(\"Root\")\n\t\t\t\t.sheet(isPresented: .constant(true)) {\n\t\t\t\t\tText(\"Sheet\")\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.sheet,\n\t\t\t\t\t\t\ton: .iOS(.v15, .v16, .v17, .v18, .v26),\n\t\t\t\t\t\t\tcustomize: spy\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t}\n\t}\n\t#elseif os(tvOS)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: UIPresentationController.self) { spy in\n\t\t\tText(\"Root\")\n\t\t\t\t.sheet(isPresented: .constant(true)) {\n\t\t\t\t\tText(\"Content\")\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.sheet,\n\t\t\t\t\t\t\ton: .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26),\n\t\t\t\t\t\t\tcustomize: spy\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t}\n\t}\n\t#elseif os(visionOS)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: UIPresentationController.self) { spy in\n\t\t\tText(\"Root\")\n\t\t\t\t.sheet(isPresented: .constant(true)) {\n\t\t\t\t\tText(\"Sheet\")\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.sheet,\n\t\t\t\t\t\t\ton: .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\t\tcustomize: spy\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t}\n\t}\n\t#endif\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/SliderTests.swift",
    "content": "#if !os(tvOS) && !os(visionOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct SliderTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformSlider = UISlider\n\t#elseif canImport(AppKit)\n\ttypealias PlatformSlider = NSSlider\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformSlider.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tSlider(value: .constant(0.2), in: 0...1)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.slider, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.slider, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tSlider(value: .constant(0.5), in: 0...1)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.slider, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.slider, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tSlider(value: .constant(0.8), in: 0...1)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.slider, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.slider, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.value == 0.2)\n\t\t#expect(entity2.value == 0.5)\n\t\t#expect(entity3.value == 0.8)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.floatValue == 0.2)\n\t\t#expect(entity2.floatValue == 0.5)\n\t\t#expect(entity3.floatValue == 0.8)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/StepperTests.swift",
    "content": "#if !os(tvOS) && !os(visionOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct StepperTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformStepper = UIStepper\n\t#elseif canImport(AppKit)\n\ttypealias PlatformStepper = NSStepper\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformStepper.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tStepper(\"\", value: .constant(0), in: 0...10)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.stepper, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.stepper, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tStepper(\"\", value: .constant(0), in: 0...10)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.stepper, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.stepper, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tStepper(\"\", value: .constant(0), in: 0...10)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.stepper, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.stepper, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#expect(Set([entity1, entity2, entity3].map(ObjectIdentifier.init)).count == 3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/TabViewTests.swift",
    "content": "#if !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct TabViewTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformTabView = UITabBarController\n\t#elseif canImport(AppKit)\n\ttypealias PlatformTabView = NSTabView\n\t#endif\n\n\t@available(macOS, introduced: 10.15, obsoleted: 15)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformTabView.self) { spy in\n\t\t\tTabView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t}\n\t\t\t}\n\t\t\t#if os(iOS) || os(tvOS)\n\t\t\t.introspect(.tabView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy)\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.tabView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14), customize: spy)\n\t\t\t#endif\n\t\t}\n\t}\n\n\t@available(macOS, introduced: 10.15, obsoleted: 15)\n\t@Test func introspectAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformTabView.self) { spy in\n\t\t\tTabView {\n\t\t\t\tZStack {\n\t\t\t\t\tColor.red\n\t\t\t\t\tText(\"Something\")\n\t\t\t\t\t\t#if os(iOS) || os(tvOS)\n\t\t\t\t\t\t.introspect(.tabView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t.introspect(.tabView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t#endif\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@available(tvOS, unavailable)\n\t@Test func introspectWithNonRootPlacement() async throws {\n\t\ttry await introspection(of: PlatformTabView.self) { spy in\n\t\t\tGroupBox {\n\t\t\t\tTabView {\n\t\t\t\t\tZStack {\n\t\t\t\t\t\tColor.red\n\t\t\t\t\t\tText(\"Something\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#if os(iOS) || os(tvOS)\n\t\t\t\t.introspect(.tabView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy)\n\t\t\t\t#elseif os(macOS)\n\t\t\t\t.introspect(.tabView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy)\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\n\t@available(tvOS, unavailable)\n\t@Test func introspectWithNonRootPlacementAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformTabView.self) { spy in\n\t\t\tGroupBox {\n\t\t\t\tTabView {\n\t\t\t\t\tZStack {\n\t\t\t\t\t\tColor.red\n\t\t\t\t\t\tText(\"Something\")\n\t\t\t\t\t\t\t#if os(iOS) || os(tvOS)\n\t\t\t\t\t\t\t.introspect(.tabView, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t\t\t.introspect(.tabView, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), scope: .ancestor, customize: spy)\n\t\t\t\t\t\t\t#endif\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/TabViewWithPageStyleTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct TabViewWithPageStyleTests {\n\ttypealias PlatformTabViewWithPageStyle = UICollectionView\n\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformTabViewWithPageStyle.self) { spy in\n\t\t\tTabView {\n\t\t\t\tText(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n\t\t\t\tText(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n\t\t\t}\n\t\t\t.tabViewStyle(.page)\n\t\t\t.introspect(.tabView(style: .page), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy)\n\t\t}\n\t}\n\n\t@Test func introspectAsAncestor() async throws {\n\t\ttry await introspection(of: PlatformTabViewWithPageStyle.self) { spy in\n\t\t\tTabView {\n\t\t\t\tText(\"Page 1\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n\t\t\t\t\t.introspect(.tabView(style: .page), on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), scope: .ancestor, customize: spy)\n\t\t\t\tText(\"Page 2\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.blue)\n\t\t\t}\n\t\t\t.tabViewStyle(.page)\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/TableTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct TableTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformTable = UICollectionView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformTable = NSTableView\n\t#endif\n\n\t@available(iOS 16, macOS 12, *)\n\t@Test func introspect() async throws {\n\t\ttry await introspection(of: PlatformTable.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tTipTable()\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.table, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tTipTable()\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.table, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tTipTable()\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.table, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\n\t@available(iOS 16, macOS 12, *)\n\t@Test func introspectWithInsetStyle() async throws {\n\t\ttry await introspection(of: PlatformTable.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tTipTable()\n\t\t\t\t\t.tableStyle(.inset)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.table, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tTipTable()\n\t\t\t\t\t.tableStyle(.inset)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.table, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tTipTable()\n\t\t\t\t\t.tableStyle(.inset)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.table, on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\n\t#if os(macOS)\n\t@available(macOS 12, *)\n\t@Test func introspectWithBorderedStyle() async throws {\n\t\ttry await introspection(of: PlatformTable.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tTipTable()\n\t\t\t\t\t.tableStyle(.bordered)\n\t\t\t\t\t#if os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tTipTable()\n\t\t\t\t\t.tableStyle(.bordered)\n\t\t\t\t\t#if os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tTipTable()\n\t\t\t\t\t.tableStyle(.bordered)\n\t\t\t\t\t#if os(macOS)\n\t\t\t\t\t.introspect(.table, on: .macOS(.v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t}\n\t#endif\n}\n\n@available(iOS 16, macOS 12, *)\nextension TableTests {\n\tstruct TipTable: View {\n\t\tstruct Purchase: Identifiable {\n\t\t\tlet price: Decimal\n\t\t\tlet id = UUID()\n\t\t}\n\n\t\tvar body: some View {\n\t\t\tTable(of: Purchase.self) {\n\t\t\t\tTableColumn(\"Base price\") { purchase in\n\t\t\t\t\tText(purchase.price, format: .currency(code: \"USD\"))\n\t\t\t\t}\n\t\t\t\tTableColumn(\"With 15% tip\") { purchase in\n\t\t\t\t\tText(purchase.price * 1.15, format: .currency(code: \"USD\"))\n\t\t\t\t}\n\t\t\t\tTableColumn(\"With 20% tip\") { purchase in\n\t\t\t\t\tText(purchase.price * 1.2, format: .currency(code: \"USD\"))\n\t\t\t\t}\n\t\t\t\tTableColumn(\"With 25% tip\") { purchase in\n\t\t\t\t\tText(purchase.price * 1.25, format: .currency(code: \"USD\"))\n\t\t\t\t}\n\t\t\t} rows: {\n\t\t\t\tTableRow(Purchase(price: 20))\n\t\t\t\tTableRow(Purchase(price: 50))\n\t\t\t\tTableRow(Purchase(price: 75))\n\t\t\t}\n\t\t}\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/TextEditorTests.swift",
    "content": "#if !os(tvOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct TextEditorTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformTextEditor = UITextView\n\t#elseif canImport(AppKit)\n\ttypealias PlatformTextEditor = NSTextView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformTextEditor.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tTextEditor(text: .constant(\"Text Field 0\"))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textEditor, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textEditor, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tTextEditor(text: .constant(\"Text Field 1\"))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textEditor, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textEditor, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tTextEditor(text: .constant(\"Text Field 2\"))\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textEditor, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textEditor, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.text == \"Text Field 0\")\n\t\t#expect(entity2.text == \"Text Field 1\")\n\t\t#expect(entity3.text == \"Text Field 2\")\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.string == \"Text Field 0\")\n\t\t#expect(entity2.string == \"Text Field 1\")\n\t\t#expect(entity3.string == \"Text Field 2\")\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/TextFieldTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct TextFieldTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformTextField = UITextField\n\t#elseif canImport(AppKit)\n\ttypealias PlatformTextField = NSTextField\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformTextField.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 1\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 2\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 3\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.text == \"Text Field 1\")\n\t\t#expect(entity2.text == \"Text Field 2\")\n\t\t#expect(entity3.text == \"Text Field 3\")\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.stringValue == \"Text Field 1\")\n\t\t#expect(entity2.stringValue == \"Text Field 2\")\n\t\t#expect(entity3.stringValue == \"Text Field 3\")\n\t\t#endif\n\t}\n\n\t@Test func introspectEmbeddedInList() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformTextField.self) { spy1, spy2, spy3 in\n\t\t\tList {\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 1\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 2\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 3\"))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.text == \"Text Field 1\")\n\t\t#expect(entity2.text == \"Text Field 2\")\n\t\t#expect(entity3.text == \"Text Field 3\")\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.stringValue == \"Text Field 1\")\n\t\t#expect(entity2.stringValue == \"Text Field 2\")\n\t\t#expect(entity3.stringValue == \"Text Field 3\")\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/TextFieldWithVerticalAxisTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct TextFieldWithVerticalAxisTests {\n\t#if canImport(UIKit) && (os(iOS) || os(visionOS))\n\ttypealias PlatformTextField = UITextView\n\t#elseif canImport(UIKit) && os(tvOS)\n\ttypealias PlatformTextField = UITextField\n\t#elseif canImport(AppKit)\n\ttypealias PlatformTextField = NSTextField\n\t#endif\n\n\t@available(iOS 16, tvOS 16, macOS 13, *)\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformTextField.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 1\"), axis: .vertical)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(tvOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .tvOS(.v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .macOS(.v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 2\"), axis: .vertical)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(tvOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .tvOS(.v16, .v17, .v18, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .macOS(.v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t\t\t.cornerRadius(8)\n\n\t\t\t\tTextField(\"\", text: .constant(\"Text Field 3\"), axis: .vertical)\n\t\t\t\t\t#if os(iOS) || os(visionOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .iOS(.v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(tvOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .tvOS(.v16, .v17, .v18, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.textField(axis: .vertical), on: .macOS(.v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.text == \"Text Field 1\")\n\t\t#expect(entity2.text == \"Text Field 2\")\n\t\t#expect(entity3.text == \"Text Field 3\")\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.stringValue == \"Text Field 1\")\n\t\t#expect(entity2.stringValue == \"Text Field 2\")\n\t\t#expect(entity3.stringValue == \"Text Field 3\")\n\t\t#endif\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ToggleTests.swift",
    "content": "#if !os(tvOS) && !os(visionOS) && !targetEnvironment(macCatalyst)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ToggleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformToggle = UISwitch\n\t#elseif canImport(AppKit)\n\ttypealias PlatformToggle = NSButton\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformToggle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.toggle, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tToggle(\"\", isOn: .constant(false))\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.toggle, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.toggle, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.isOn == true)\n\t\t#expect(entity2.isOn == false)\n\t\t#expect(entity3.isOn == true)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.state == .on)\n\t\t#expect(entity2.state == .off)\n\t\t#expect(entity3.state == .on)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ToggleWithButtonStyleTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ToggleWithButtonStyleTests {\n\ttypealias PlatformToggleWithButtonStyle = NSButton\n\n\t@available(macOS, introduced: 12, obsoleted: 26)\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformToggleWithButtonStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t.toggleStyle(.button)\n\t\t\t\t\t.introspect(.toggle(style: .button), on: .macOS(.v12, .v13, .v14, .v15), customize: spy1)\n\n\t\t\t\tToggle(\"\", isOn: .constant(false))\n\t\t\t\t\t.toggleStyle(.button)\n\t\t\t\t\t.introspect(.toggle(style: .button), on: .macOS(.v12, .v13, .v14, .v15), customize: spy2)\n\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t.toggleStyle(.button)\n\t\t\t\t\t.introspect(.toggle(style: .button), on: .macOS(.v12, .v13, .v14, .v15), customize: spy3)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1.state == .on)\n\t\t#expect(entity2.state == .off)\n\t\t#expect(entity3.state == .on)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ToggleWithCheckboxStyleTests.swift",
    "content": "#if !os(iOS) && !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ToggleWithCheckboxStyleTests {\n\ttypealias PlatformToggleWithCheckboxStyle = NSButton\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformToggleWithCheckboxStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t.toggleStyle(.checkbox)\n\t\t\t\t\t.introspect(.toggle(style: .checkbox), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\n\t\t\t\tToggle(\"\", isOn: .constant(false))\n\t\t\t\t\t.toggleStyle(.checkbox)\n\t\t\t\t\t.introspect(.toggle(style: .checkbox), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t.toggleStyle(.checkbox)\n\t\t\t\t\t.introspect(.toggle(style: .checkbox), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1.state == .on)\n\t\t#expect(entity2.state == .off)\n\t\t#expect(entity3.state == .on)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ToggleWithSwitchStyleTests.swift",
    "content": "#if !os(tvOS) && !os(visionOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ToggleWithSwitchStyleTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformToggleWithSwitchStyle = UISwitch\n\t#elseif canImport(AppKit)\n\ttypealias PlatformToggleWithSwitchStyle = NSSwitch\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformToggleWithSwitchStyle.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t.toggleStyle(.switch)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.toggle(style: .switch), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle(style: .switch), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tToggle(\"\", isOn: .constant(false))\n\t\t\t\t\t.toggleStyle(.switch)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.toggle(style: .switch), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle(style: .switch), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tToggle(\"\", isOn: .constant(true))\n\t\t\t\t\t.toggleStyle(.switch)\n\t\t\t\t\t#if os(iOS)\n\t\t\t\t\t.introspect(.toggle(style: .switch), on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.toggle(style: .switch), on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#if canImport(UIKit)\n\t\t#expect(entity1.isOn == true)\n\t\t#expect(entity2.isOn == false)\n\t\t#expect(entity3.isOn == true)\n\t\t#elseif canImport(AppKit)\n\t\t#expect(entity1.state == .on)\n\t\t#expect(entity2.state == .off)\n\t\t#expect(entity3.state == .on)\n\t\t#endif\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/VideoPlayerTests.swift",
    "content": "#if canImport(AVKit)\nimport AVKit\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct VideoPlayerTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformVideoPlayer = AVPlayerViewController\n\t#elseif canImport(AppKit)\n\ttypealias PlatformVideoPlayer = AVPlayerView\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet videoURL1 = try #require(URL(string: \"https://bit.ly/swswift#1\"))\n\t\tlet videoURL2 = try #require(URL(string: \"https://bit.ly/swswift#2\"))\n\t\tlet videoURL3 = try #require(URL(string: \"https://bit.ly/swswift#3\"))\n\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformVideoPlayer.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tVideoPlayer(player: AVPlayer(url: videoURL1))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.videoPlayer, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.videoPlayer, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tVideoPlayer(player: AVPlayer(url: videoURL2))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.videoPlayer, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.videoPlayer, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\n\t\t\t\tVideoPlayer(player: AVPlayer(url: videoURL3))\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.videoPlayer, on: .iOS(.v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.videoPlayer, on: .macOS(.v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#expect((entity1.player?.currentItem?.asset as? AVURLAsset)?.url == videoURL1)\n\t\t#expect((entity2.player?.currentItem?.asset as? AVURLAsset)?.url == videoURL2)\n\t\t#expect((entity3.player?.currentItem?.asset as? AVURLAsset)?.url == videoURL3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ViewControllerTests.swift",
    "content": "#if !os(macOS)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ViewControllerTests {\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformViewController.self) { spy1, spy2, spy3 in\n\t\t\tTabView {\n\t\t\t\tNavigationView {\n\t\t\t\t\tText(\"Root\").frame(maxWidth: .infinity, maxHeight: .infinity).background(Color.red)\n\t\t\t\t\t\t.introspect(\n\t\t\t\t\t\t\t.viewController,\n\t\t\t\t\t\t\ton: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\t\t\tcustomize: spy3\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\t.navigationViewStyle(.stack)\n\t\t\t\t.tabItem {\n\t\t\t\t\tImage(systemName: \"1.circle\")\n\t\t\t\t\tText(\"Tab 1\")\n\t\t\t\t}\n\t\t\t\t.introspect(\n\t\t\t\t\t.viewController,\n\t\t\t\t\ton: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\t\tcustomize: spy2\n\t\t\t\t)\n\t\t\t}\n\t\t\t.introspect(\n\t\t\t\t.viewController,\n\t\t\t\ton: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26),\n\t\t\t\tcustomize: spy1\n\t\t\t)\n\t\t}\n\t\t#if !os(visionOS)\n\t\t#expect(entity1 is UITabBarController)\n\t\t#endif\n\t\t#expect(entity2 is UINavigationController)\n\t\t#expect(String(describing: entity3).contains(\"UIHostingController\"))\n\t\t#expect(entity2 === entity3.parent)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/ViewTests.swift",
    "content": "import SwiftUI\n@_spi(Internals) import SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct ViewTests {\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2) = try await introspection(of: PlatformView.self) { spy1, spy2 in\n\t\t\tVStack(spacing: 10) {\n\t\t\t\tSUTView().frame(height: 30)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.view, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.view, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tSUTView().frame(height: 40)\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.view, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.view, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t\t.padding(10)\n\t\t}\n\t\t#expect(entity1.frame.height == 30)\n\t\t#expect(entity2.frame.height == 40)\n\t}\n}\n\nstruct SUTView: PlatformViewControllerRepresentable {\n\t#if canImport(UIKit)\n\ttypealias UIViewControllerType = PlatformViewController\n\t#elseif canImport(AppKit)\n\ttypealias NSViewControllerType = PlatformViewController\n\t#endif\n\n\tfunc makePlatformViewController(context: Context) -> PlatformViewController {\n\t\tlet controller = PlatformViewController(nibName: nil, bundle: nil)\n\t\tcontroller.view.translatesAutoresizingMaskIntoConstraints = false\n\n\t\tlet widthConstraint = controller.view.widthAnchor.constraint(greaterThanOrEqualToConstant: .greatestFiniteMagnitude)\n\t\twidthConstraint.priority = .defaultLow\n\n\t\tlet heightConstraint = controller.view.heightAnchor.constraint(greaterThanOrEqualToConstant: .greatestFiniteMagnitude)\n\t\theightConstraint.priority = .defaultLow\n\n\t\tNSLayoutConstraint.activate([widthConstraint, heightConstraint])\n\n\t\treturn controller\n\t}\n\n\tfunc updatePlatformViewController(_ controller: PlatformViewController, context: Context) {\n\t\t// NO-OP\n\t}\n\n\tstatic func dismantlePlatformViewController(_ controller: PlatformViewController, coordinator: Coordinator) {\n\t\t// NO-OP\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/WebViewTests.swift",
    "content": "#if canImport(WebKit)\nimport SwiftUI\nimport SwiftUIIntrospect\nimport Testing\nimport WebKit\n\n@MainActor\n@Suite\nstruct WebViewTests {\n\t@available(iOS 26, tvOS 26, macOS 26, visionOS 26, *)\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: WKWebView.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tWebView(url: nil)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.webView,\n\t\t\t\t\t\ton: .iOS(.v26), .tvOS(.v26), .macOS(.v26), .visionOS(.v26),\n\t\t\t\t\t\tcustomize: spy1\n\t\t\t\t\t)\n\n\t\t\t\tWebView(url: nil)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.webView,\n\t\t\t\t\t\ton: .iOS(.v26), .tvOS(.v26), .macOS(.v26), .visionOS(.v26),\n\t\t\t\t\t\tcustomize: spy2\n\t\t\t\t\t)\n\n\t\t\t\tWebView(url: nil)\n\t\t\t\t\t.introspect(\n\t\t\t\t\t\t.webView,\n\t\t\t\t\t\ton: .iOS(.v26), .tvOS(.v26), .macOS(.v26), .visionOS(.v26),\n\t\t\t\t\t\tcustomize: spy3\n\t\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t#expect(entity1 !== entity2)\n\t\t#expect(entity1 !== entity3)\n\t\t#expect(entity2 !== entity3)\n\t}\n}\n#endif\n"
  },
  {
    "path": "Tests/Tests/ViewTypes/WindowTests.swift",
    "content": "import SwiftUI\nimport SwiftUIIntrospect\nimport Testing\n\n@MainActor\n@Suite\nstruct WindowTests {\n\t#if canImport(UIKit)\n\ttypealias PlatformWindow = UIWindow\n\t#elseif canImport(AppKit)\n\ttypealias PlatformWindow = NSWindow\n\t#endif\n\n\t@Test func introspect() async throws {\n\t\tlet (entity1, entity2, entity3) = try await introspection(of: PlatformWindow.self) { spy1, spy2, spy3 in\n\t\t\tVStack {\n\t\t\t\tImage(systemName: \"scribble\")\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.window, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy1)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.window, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy1)\n\t\t\t\t\t#endif\n\n\t\t\t\tText(\"Text\")\n\t\t\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t\t\t.introspect(.window, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy2)\n\t\t\t\t\t#elseif os(macOS)\n\t\t\t\t\t.introspect(.window, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy2)\n\t\t\t\t\t#endif\n\t\t\t}\n\t\t\t#if os(iOS) || os(tvOS) || os(visionOS)\n\t\t\t.introspect(.window, on: .iOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .tvOS(.v13, .v14, .v15, .v16, .v17, .v18, .v26), .visionOS(.v1, .v2, .v26), customize: spy3)\n\t\t\t#elseif os(macOS)\n\t\t\t.introspect(.window, on: .macOS(.v10_15, .v11, .v12, .v13, .v14, .v15, .v26), customize: spy3)\n\t\t\t#endif\n\t\t}\n\t\t#expect(entity1 === entity2)\n\t\t#expect(entity1 === entity3)\n\t\t#expect(entity2 === entity3)\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests/WeakTests.swift",
    "content": "@_spi(Advanced) import SwiftUIIntrospect\nimport Testing\n\n@Suite\nstruct WeakTests {\n\tfinal class Foo {}\n\n\tvar strongFoo: Foo? = Foo()\n\n\t@Test func init_nil() {\n\t\t@Weak var weakFoo: Foo?\n\t\t#expect(weakFoo == nil)\n\t}\n\n\t@Test func init_nonNil() {\n\t\t@Weak var weakFoo: Foo? = strongFoo\n\t\t#expect(weakFoo === strongFoo)\n\t}\n\n\t@Test func assignment_nilToNil() {\n\t\t@Weak var weakFoo: Foo?\n\t\tweakFoo = nil\n\t\t#expect(weakFoo == nil)\n\t}\n\n\t@Test func assignment_nilToNonNil() {\n\t\t@Weak var weakFoo: Foo?\n\t\tlet otherFoo = Foo()\n\t\tweakFoo = otherFoo\n\t\t#expect(weakFoo === otherFoo)\n\t}\n\n\t@Test func assignment_nonNilToNil() {\n\t\t@Weak var weakFoo: Foo? = strongFoo\n\t\tweakFoo = nil\n\t\t#expect(weakFoo == nil)\n\t}\n\n\t@Test func assignment_nonNilToNonNil() {\n\t\t@Weak var weakFoo: Foo? = strongFoo\n\t\tlet otherFoo = Foo()\n\t\tweakFoo = otherFoo\n\t\t#expect(weakFoo === otherFoo)\n\t}\n\n\t@Test mutating func indirectAssignment_nonNilToNil() {\n\t\t@Weak var weakFoo: Foo? = strongFoo\n\t\tstrongFoo = nil\n\t\t#expect(weakFoo == nil)\n\t}\n\n\t@Test mutating func indirectAssignment_nonNilToNonNil() {\n\t\t@Weak var weakFoo: Foo? = strongFoo\n\t\tstrongFoo = Foo()\n\t\t#expect(weakFoo == nil)\n\t}\n}\n"
  },
  {
    "path": "Tests/Tests.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 77;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tD5CEB5582E84304900A88BA3 /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = D5CEB5572E84304900A88BA3 /* SwiftUIIntrospect */; };\n\t\tD5CEB6452E8431FB00A88BA3 /* Tests.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = D5CEB6442E8431FB00A88BA3 /* Tests.xctestplan */; };\n\t\tD5E04C312E842584006739F9 /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = D5E04C302E842584006739F9 /* SwiftUIIntrospect */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tD5E04C2A2E84254D006739F9 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D5E04C0C2E842486006739F9 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = D5E04C152E8424CD006739F9;\n\t\t\tremoteInfo = TestsHostApp;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\tD5CEB5502E84303E00A88BA3 /* TestFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TestFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD5CEB6442E8431FB00A88BA3 /* Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = Tests.xctestplan; sourceTree = \"<group>\"; };\n\t\tD5E04C162E8424CD006739F9 /* TestsHostApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestsHostApp.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD5E04C262E84254D006739F9 /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n/* End PBXFileReference section */\n\n/* Begin PBXFileSystemSynchronizedRootGroup section */\n\t\tD5CEB5512E84303E00A88BA3 /* TestFramework */ = {\n\t\t\tisa = PBXFileSystemSynchronizedRootGroup;\n\t\t\tpath = TestFramework;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD5E04C182E8424CD006739F9 /* TestsHostApp */ = {\n\t\t\tisa = PBXFileSystemSynchronizedRootGroup;\n\t\t\tpath = TestsHostApp;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD5E04C272E84254D006739F9 /* Tests */ = {\n\t\t\tisa = PBXFileSystemSynchronizedRootGroup;\n\t\t\tpath = Tests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXFileSystemSynchronizedRootGroup section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tD5CEB54D2E84303E00A88BA3 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD5CEB5582E84304900A88BA3 /* SwiftUIIntrospect in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tD5E04C132E8424CD006739F9 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tD5E04C232E84254D006739F9 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD5E04C312E842584006739F9 /* SwiftUIIntrospect in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tD5E04C0B2E842486006739F9 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD5E04C182E8424CD006739F9 /* TestsHostApp */,\n\t\t\t\tD5E04C272E84254D006739F9 /* Tests */,\n\t\t\t\tD5CEB6442E8431FB00A88BA3 /* Tests.xctestplan */,\n\t\t\t\tD5CEB5512E84303E00A88BA3 /* TestFramework */,\n\t\t\t\tD5E04C2F2E842584006739F9 /* Frameworks */,\n\t\t\t\tD5E04C172E8424CD006739F9 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD5E04C172E8424CD006739F9 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD5E04C162E8424CD006739F9 /* TestsHostApp.app */,\n\t\t\t\tD5E04C262E84254D006739F9 /* Tests.xctest */,\n\t\t\t\tD5CEB5502E84303E00A88BA3 /* TestFramework.framework */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD5E04C2F2E842584006739F9 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tD5CEB54B2E84303E00A88BA3 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\tD5CEB54F2E84303E00A88BA3 /* TestFramework */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = D5CEB5562E84303E00A88BA3 /* Build configuration list for PBXNativeTarget \"TestFramework\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tD5CEB54B2E84303E00A88BA3 /* Headers */,\n\t\t\t\tD5CEB54C2E84303E00A88BA3 /* Sources */,\n\t\t\t\tD5CEB54D2E84303E00A88BA3 /* Frameworks */,\n\t\t\t\tD5CEB54E2E84303E00A88BA3 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tfileSystemSynchronizedGroups = (\n\t\t\t\tD5CEB5512E84303E00A88BA3 /* TestFramework */,\n\t\t\t);\n\t\t\tname = TestFramework;\n\t\t\tpackageProductDependencies = (\n\t\t\t\tD5CEB5572E84304900A88BA3 /* SwiftUIIntrospect */,\n\t\t\t);\n\t\t\tproductName = TestFramework;\n\t\t\tproductReference = D5CEB5502E84303E00A88BA3 /* TestFramework.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tD5E04C152E8424CD006739F9 /* TestsHostApp */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = D5E04C1F2E8424CE006739F9 /* Build configuration list for PBXNativeTarget \"TestsHostApp\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tD5E04C122E8424CD006739F9 /* Sources */,\n\t\t\t\tD5E04C132E8424CD006739F9 /* Frameworks */,\n\t\t\t\tD5E04C142E8424CD006739F9 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tfileSystemSynchronizedGroups = (\n\t\t\t\tD5E04C182E8424CD006739F9 /* TestsHostApp */,\n\t\t\t);\n\t\t\tname = TestsHostApp;\n\t\t\tpackageProductDependencies = (\n\t\t\t);\n\t\t\tproductName = TestsHostApp;\n\t\t\tproductReference = D5E04C162E8424CD006739F9 /* TestsHostApp.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tD5E04C252E84254D006739F9 /* Tests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = D5E04C2C2E84254D006739F9 /* Build configuration list for PBXNativeTarget \"Tests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tD5E04C222E84254D006739F9 /* Sources */,\n\t\t\t\tD5E04C232E84254D006739F9 /* Frameworks */,\n\t\t\t\tD5E04C242E84254D006739F9 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tD5E04C2B2E84254D006739F9 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tfileSystemSynchronizedGroups = (\n\t\t\t\tD5E04C272E84254D006739F9 /* Tests */,\n\t\t\t);\n\t\t\tname = Tests;\n\t\t\tpackageProductDependencies = (\n\t\t\t\tD5E04C302E842584006739F9 /* SwiftUIIntrospect */,\n\t\t\t);\n\t\t\tproductName = Tests;\n\t\t\tproductReference = D5E04C262E84254D006739F9 /* Tests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tD5E04C0C2E842486006739F9 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 2600;\n\t\t\t\tLastUpgradeCheck = 2600;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tD5CEB54F2E84303E00A88BA3 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 26.0.1;\n\t\t\t\t\t};\n\t\t\t\t\tD5E04C152E8424CD006739F9 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 26.0.1;\n\t\t\t\t\t};\n\t\t\t\t\tD5E04C252E84254D006739F9 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 26.0.1;\n\t\t\t\t\t\tTestTargetID = D5E04C152E8424CD006739F9;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = D5E04C0F2E842486006739F9 /* Build configuration list for PBXProject \"Tests\" */;\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = D5E04C0B2E842486006739F9;\n\t\t\tminimizedProjectReferenceProxies = 1;\n\t\t\tpreferredProjectObjectVersion = 77;\n\t\t\tproductRefGroup = D5E04C172E8424CD006739F9 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tD5E04C152E8424CD006739F9 /* TestsHostApp */,\n\t\t\t\tD5E04C252E84254D006739F9 /* Tests */,\n\t\t\t\tD5CEB54F2E84303E00A88BA3 /* TestFramework */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tD5CEB54E2E84303E00A88BA3 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD5CEB6452E8431FB00A88BA3 /* Tests.xctestplan in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tD5E04C142E8424CD006739F9 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tD5E04C242E84254D006739F9 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tD5CEB54C2E84303E00A88BA3 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tD5E04C122E8424CD006739F9 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tD5E04C222E84254D006739F9 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tD5E04C2B2E84254D006739F9 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = D5E04C152E8424CD006739F9 /* TestsHostApp */;\n\t\t\ttargetProxy = D5E04C2A2E84254D006739F9 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\tD5CEB5542E84303E00A88BA3 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tBUILD_LIBRARY_FOR_DISTRIBUTION = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_MODULE_VERIFIER = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_NSHumanReadableCopyright = \"\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]\" = (\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMODULE_VERIFIER_SUPPORTED_LANGUAGES = \"objective-c objective-c++\";\n\t\t\t\tMODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = \"gnu17 gnu++20\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = mn.dro.TestFramework;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSDKROOT = auto;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_APPROACHABLE_CONCURRENCY = YES;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_INSTALL_MODULE = YES;\n\t\t\t\tSWIFT_INSTALL_OBJC_HEADER = NO;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD5CEB5552E84303E00A88BA3 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tBUILD_LIBRARY_FOR_DISTRIBUTION = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_MODULE_VERIFIER = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_NSHumanReadableCopyright = \"\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]\" = (\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMODULE_VERIFIER_SUPPORTED_LANGUAGES = \"objective-c objective-c++\";\n\t\t\t\tMODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = \"gnu17 gnu++20\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = mn.dro.TestFramework;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSDKROOT = auto;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_APPROACHABLE_CONCURRENCY = YES;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_INSTALL_MODULE = YES;\n\t\t\t\tSWIFT_INSTALL_OBJC_HEADER = NO;\n\t\t\t\tSWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tD5E04C102E842486006739F9 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD5E04C112E842486006739F9 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 15.0;\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tXROS_DEPLOYMENT_TARGET = 1.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tD5E04C202E8424CE006739F9 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=macosx*]\" = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_APP_SANDBOX = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tENABLE_USER_SELECTED_FILES = readonly;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]\" = UIStatusBarStyleDefault;\n\t\t\t\t\"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]\" = UIStatusBarStyleDefault;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\";\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]\" = \"@executable_path/../Frameworks\";\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = mn.dro.TestsHostApp;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tREGISTER_APP_GROUPS = YES;\n\t\t\t\tSDKROOT = auto;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_APPROACHABLE_CONCURRENCY = YES;\n\t\t\t\tSWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,6,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD5E04C212E8424CE006739F9 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=macosx*]\" = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_APP_SANDBOX = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tENABLE_USER_SELECTED_FILES = readonly;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]\" = YES;\n\t\t\t\t\"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]\" = UIStatusBarStyleDefault;\n\t\t\t\t\"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]\" = UIStatusBarStyleDefault;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\";\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]\" = \"@executable_path/../Frameworks\";\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = mn.dro.TestsHostApp;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tREGISTER_APP_GROUPS = YES;\n\t\t\t\tSDKROOT = auto;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_APPROACHABLE_CONCURRENCY = YES;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,6,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tD5E04C2D2E84254D006739F9 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=macosx*]\" = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = mn.dro.Tests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = auto;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = NO;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_APPROACHABLE_CONCURRENCY = YES;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,7\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/TestsHostApp.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/TestsHostApp\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tD5E04C2E2E84254D006739F9 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=macosx*]\" = \"-\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = mn.dro.Tests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = auto;\n\t\t\t\tSTRING_CATALOG_GENERATE_SYMBOLS = NO;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_APPROACHABLE_CONCURRENCY = YES;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = NO;\n\t\t\t\tSWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,7\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/TestsHostApp.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/TestsHostApp\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tD5CEB5562E84303E00A88BA3 /* Build configuration list for PBXNativeTarget \"TestFramework\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD5CEB5542E84303E00A88BA3 /* Debug */,\n\t\t\t\tD5CEB5552E84303E00A88BA3 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tD5E04C0F2E842486006739F9 /* Build configuration list for PBXProject \"Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD5E04C102E842486006739F9 /* Debug */,\n\t\t\t\tD5E04C112E842486006739F9 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tD5E04C1F2E8424CE006739F9 /* Build configuration list for PBXNativeTarget \"TestsHostApp\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD5E04C202E8424CE006739F9 /* Debug */,\n\t\t\t\tD5E04C212E8424CE006739F9 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tD5E04C2C2E84254D006739F9 /* Build configuration list for PBXNativeTarget \"Tests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD5E04C2D2E84254D006739F9 /* Debug */,\n\t\t\t\tD5E04C2E2E84254D006739F9 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\tD5CEB5572E84304900A88BA3 /* SwiftUIIntrospect */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = SwiftUIIntrospect;\n\t\t};\n\t\tD5E04C302E842584006739F9 /* SwiftUIIntrospect */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = SwiftUIIntrospect;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = D5E04C0C2E842486006739F9 /* Project object */;\n}\n"
  },
  {
    "path": "Tests/Tests.xcodeproj/xcshareddata/xcschemes/SwiftUIIntrospectTestFramework.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   version = \"1.7\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\"\n      buildArchitectures = \"Automatic\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"D5CEB54F2E84303E00A88BA3\"\n               BuildableName = \"TestFramework.framework\"\n               BlueprintName = \"TestFramework\"\n               ReferencedContainer = \"container:Tests.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      shouldAutocreateTestPlan = \"YES\">\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"D5CEB54F2E84303E00A88BA3\"\n            BuildableName = \"TestFramework.framework\"\n            BlueprintName = \"TestFramework\"\n            ReferencedContainer = \"container:Tests.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Tests/Tests.xcodeproj/xcshareddata/xcschemes/SwiftUIIntrospectTests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"2600\"\n   version = \"1.7\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\"\n      buildArchitectures = \"Automatic\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <TestPlans>\n         <TestPlanReference\n            reference = \"container:Tests.xctestplan\"\n            default = \"YES\">\n         </TestPlanReference>\n      </TestPlans>\n      <Testables>\n         <TestableReference\n            skipped = \"NO\"\n            parallelizable = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"D5E04C252E84254D006739F9\"\n               BuildableName = \"Tests.xctest\"\n               BlueprintName = \"Tests\"\n               ReferencedContainer = \"container:Tests.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Tests/Tests.xctestplan",
    "content": "{\n  \"configurations\" : [\n    {\n      \"id\" : \"BFDC7AD2-E943-4590-B54A-FAEEBCE74E0D\",\n      \"name\" : \"Test Scheme Action\",\n      \"options\" : {\n\n      }\n    }\n  ],\n  \"defaultOptions\" : {\n    \"performanceAntipatternCheckerEnabled\" : true\n  },\n  \"testTargets\" : [\n    {\n      \"parallelizable\" : false,\n      \"target\" : {\n        \"containerPath\" : \"container:Tests.xcodeproj\",\n        \"identifier\" : \"D5E04C252E84254D006739F9\",\n        \"name\" : \"Tests\"\n      }\n    }\n  ],\n  \"version\" : 1\n}\n"
  },
  {
    "path": "Tests/TestsHostApp/App.swift",
    "content": "import SwiftUI\n\n@main\nstruct App: SwiftUI.App {\n\tvar body: some Scene {\n\t\tWindowGroup {\n\t\t\tEmptyView()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Tests/TestsHostApp/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Tests/TestsHostApp/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"size\" : \"1024x1024\"\n    },\n    {\n      \"appearances\" : [\n        {\n          \"appearance\" : \"luminosity\",\n          \"value\" : \"dark\"\n        }\n      ],\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"size\" : \"1024x1024\"\n    },\n    {\n      \"appearances\" : [\n        {\n          \"appearance\" : \"luminosity\",\n          \"value\" : \"tinted\"\n        }\n      ],\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"size\" : \"1024x1024\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"512x512\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"512x512\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Tests/TestsHostApp/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "script/pod_release",
    "content": "#!/usr/bin/env bash\n\nexport LIB_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)\n\necho \"Publishing version $LIB_VERSION\"\npod trunk push SwiftUIIntrospect.podspec --allow-warnings\n"
  }
]