The Swift Package Index logo.Swift Package Index

Build Information

Failed to build Undertow, reference 1.0.3 (4968e6), with Swift 6.1 for macOS (SPM) on 15 Aug 2026 03:41:59 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64

Build Log

103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:106:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
104 |             content.whiteNoiseEffect(time: time)
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
107 |         }
108 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:87:108: error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  |                                                                                         |- error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
    |                  |                                                                                         `- note: add 'if #available' version check
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
[31/32] Compiling Undertow EffectSourceViewModifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:12:2: error: 'Observable()' is only available in macOS 14.0 or newer
10 | /// A shared observable store that holds target masks reported by `.effectTarget()`
11 | /// descendants.
12 | @Observable
   |  `- error: 'Observable()' is only available in macOS 14.0 or newer
13 | final class MaskStore {
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:16:5: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
   +--- macro expansion @Observable ------------------------------------
   |1 | @ObservationTracked
   |  |  `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
17 | }
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:12:2: error: 'Observable()' is only available in macOS 14.0 or newer
10 | /// A shared observable store that holds target masks reported by `.effectTarget()`
11 | /// descendants.
12 | @Observable
   |  `- error: 'Observable()' is only available in macOS 14.0 or newer
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
macro expansion @Observable:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:17:1: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
17 | }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |  `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<Member>(
   +--------------------------------------------------------------------
18 |
macro expansion @ObservationTracked:3:11: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:16:42: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
   +--- macro expansion @ObservationTracked ----------------------------
   |1 | /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
   |2 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
   |3 |          @ObservationIgnored private  var _targetMasks: Set<TargetMask> = []
   |  |           `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
17 | }
18 |
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:17:1: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
17 | }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |                                                                      `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<Member>(
   +--------------------------------------------------------------------
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:12:2: error: 'Observable()' is only available in macOS 14.0 or newer
10 | /// A shared observable store that holds target masks reported by `.effectTarget()`
11 | /// descendants.
12 | @Observable
   |  `- error: 'Observable()' is only available in macOS 14.0 or newer
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:26:41: error: 'now' is only available in macOS 12 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 24 |     /// configurations (e.g. `.water`) — see `effectLayer(content:boundingRect:)`. Unused, and
 25 |     /// costs nothing, for static configurations.
 26 |     @State private var startTime = Date.now
    |                                         `- error: 'now' is only available in macOS 12 or newer
 27 |
 28 |     private var targetMasks: Set<TargetMask> {
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:21:6: error: 'Environment' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
 19 |
 20 |     /// The shared mask store distributed by the nearest ancestor `.effectCoordinator()`.
 21 |     @Environment(\.maskStore) private var store
    |      `- error: 'Environment' is only available in macOS 10.15 or newer
 22 |
 23 |     /// The moment this modifier's view was created, used as the zero point for time-based
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:26:6: error: 'State' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 24 |     /// configurations (e.g. `.water`) — see `effectLayer(content:boundingRect:)`. Unused, and
 25 |     /// costs nothing, for static configurations.
 26 |     @State private var startTime = Date.now
    |      `- error: 'State' is only available in macOS 10.15 or newer
 27 |
 28 |     private var targetMasks: Set<TargetMask> {
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:32:41: error: 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          |                              `- error: 'View' is only available in macOS 10.15 or newer
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:65:78: error: 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  |                                                           `- error: 'View' is only available in macOS 10.15 or newer
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:64:6: error: 'ViewBuilder' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 62 |     /// this pipeline, so adding another animated case later doesn't need its own frame source.
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
    |      `- error: 'ViewBuilder' is only available in macOS 10.15 or newer
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:87:103: error: 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  |                                                                                    `- error: 'View' is only available in macOS 10.15 or newer
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:86:6: error: 'ViewBuilder' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 84 |     ///   - time: Elapsed seconds since `startTime`, for time-based configurations. Ignored by
 85 |     ///     static ones.
 86 |     @ViewBuilder
    |      `- error: 'ViewBuilder' is only available in macOS 10.15 or newer
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:33:9: error: 'GeometryReader' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
    |         |- error: 'GeometryReader' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:33:24: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
    |                        |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:34:49: error: 'frame(in:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    |                                                 |- error: 'frame(in:)' is only available in macOS 10.15 or newer
    |                                                 `- note: add 'if #available' version check
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
 36 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:37:13: error: 'ZStack' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
 36 |
 37 |             ZStack {
    |             |- error: 'ZStack' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 38 |                 content
 39 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:37:20: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
 36 |
 37 |             ZStack {
    |                    |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
 38 |                 content
 39 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:43:22: error: 'mask' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 41 |                     content: content,
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
    |                      |- error: 'mask' is only available in macOS 10.15 or newer
    |                      `- note: add 'if #available' version check
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:44:25: error: 'ZStack' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
 44 |                         ZStack {
    |                         |- error: 'ZStack' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:44:25: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
 44 |                         ZStack {
    |                         |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:45:29: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 43 |                     .mask(
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
    |                             |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:45:29: error: 'ForEach' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 43 |                     .mask(
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
    |                             |- error: 'ForEach' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:45:29: error: 'init(_:id:content:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 43 |                     .mask(
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
    |                             |- error: 'init(_:id:content:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:46:33: error: 'RoundedRectangle' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
    |                                 |- error: 'RoundedRectangle' is only available in macOS 10.15 or newer
    |                                 `- note: add 'if #available' version check
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
 48 |                                     .position(
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:47:38: error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
    |                                      |- error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
    |                                      `- note: add 'if #available' version check
 48 |                                     .position(
 49 |                                         x: mask.frame.midX - contentOrigin.x,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:48:38: error: 'position(x:y:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
 48 |                                     .position(
    |                                      |- error: 'position(x:y:)' is only available in macOS 10.15 or newer
    |                                      `- note: add 'if #available' version check
 49 |                                         x: mask.frame.midX - contentOrigin.x,
 50 |                                         y: mask.frame.midY - contentOrigin.y
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:44:32: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
 44 |                         ZStack {
    |                                |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                                `- note: add 'if #available' version check
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:54:26: error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 52 |                             }
 53 |                         }
 54 |                         .frame(width: contentGeometry.size.width, height: contentGeometry.size.height, alignment: .topLeading)
    |                          |- error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
    |                          `- note: add 'if #available' version check
 55 |                     )
 56 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:54:116: error: 'topLeading' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 52 |                             }
 53 |                         }
 54 |                         .frame(width: contentGeometry.size.width, height: contentGeometry.size.height, alignment: .topLeading)
    |                                                                                                                    |- error: 'topLeading' is only available in macOS 10.15 or newer
    |                                                                                                                    `- note: add 'if #available' version check
 55 |                     )
 56 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:13: error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |             |- error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
    |             `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:13: error: 'TimelineView' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |             |- error: 'TimelineView' is only available in macOS 12.0 or newer
    |             `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:13: error: 'init(_:content:)' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |             |- error: 'init(_:content:)' is only available in macOS 12.0 or newer
    |             `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:27: error: 'animation' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |                           |- error: 'animation' is only available in macOS 12.0 or newer
    |                           `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:71:37: error: 'distance(to:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    :
 69 |                     to: content,
 70 |                     boundingRect: boundingRect,
 71 |                     time: startTime.distance(to: timeline.date)
    |                                     |- error: 'distance(to:)' is only available in macOS 10.15 or newer
    |                                     `- note: add 'if #available' version check
 72 |                 )
 73 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:66:38: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
    |                                      |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |                                      `- note: add 'if #available' version check
 67 |             TimelineView(.animation) { timeline in
 68 |                 appliedEffect(
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:66:38: error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
    |                                      |- error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
    |                                      `- note: add 'if #available' version check
 67 |             TimelineView(.animation) { timeline in
 68 |                 appliedEffect(
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:74:16: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    :
 72 |                 )
 73 |             }
 74 |         } else {
    |                |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
 75 |             appliedEffect(to: content, boundingRect: boundingRect, time: 0)
 76 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:65:83: error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  |                                                                |- error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
    |                  |                                                                `- note: add 'if #available' version check
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:106:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
104 |             content.whiteNoiseEffect(time: time)
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
107 |         }
108 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:87:108: error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  |                                                                                         |- error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
    |                  |                                                                                         `- note: add 'if #available' version check
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
[32/32] Compiling Undertow EffectTargetFramePreferenceKey.swift
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:12:2: error: 'Observable()' is only available in macOS 14.0 or newer
10 | /// A shared observable store that holds target masks reported by `.effectTarget()`
11 | /// descendants.
12 | @Observable
   |  `- error: 'Observable()' is only available in macOS 14.0 or newer
13 | final class MaskStore {
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:16:5: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
   +--- macro expansion @Observable ------------------------------------
   |1 | @ObservationTracked
   |  |  `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
17 | }
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:12:2: error: 'Observable()' is only available in macOS 14.0 or newer
10 | /// A shared observable store that holds target masks reported by `.effectTarget()`
11 | /// descendants.
12 | @Observable
   |  `- error: 'Observable()' is only available in macOS 14.0 or newer
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
macro expansion @Observable:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:17:1: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
17 | }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |  `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<Member>(
   +--------------------------------------------------------------------
18 |
macro expansion @ObservationTracked:3:11: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:16:42: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
   +--- macro expansion @ObservationTracked ----------------------------
   |1 | /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
   |2 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
   |3 |          @ObservationIgnored private  var _targetMasks: Set<TargetMask> = []
   |  |           `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
   +--------------------------------------------------------------------
17 | }
18 |
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:17:1: note: expanded code originates here
11 | /// descendants.
12 | @Observable
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
16 |     var targetMasks: Set<TargetMask> = []
17 | }
   +--- macro expansion @Observable ------------------------------------
   | 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
   |   |                                                                      `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
   | 2 |
   | 3 | internal nonisolated func access<Member>(
   +--------------------------------------------------------------------
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectCoordinator/MaskStore.swift:12:2: error: 'Observable()' is only available in macOS 14.0 or newer
10 | /// A shared observable store that holds target masks reported by `.effectTarget()`
11 | /// descendants.
12 | @Observable
   |  `- error: 'Observable()' is only available in macOS 14.0 or newer
13 | final class MaskStore {
   |             `- note: add @available attribute to enclosing class
14 |     /// Masks reported by all `.effectTarget()` targets. Collected via standard SwiftUI
15 |     /// `PreferenceKey` propagation (`EffectTargetFramePreferenceKey`).
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:26:41: error: 'now' is only available in macOS 12 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 24 |     /// configurations (e.g. `.water`) — see `effectLayer(content:boundingRect:)`. Unused, and
 25 |     /// costs nothing, for static configurations.
 26 |     @State private var startTime = Date.now
    |                                         `- error: 'now' is only available in macOS 12 or newer
 27 |
 28 |     private var targetMasks: Set<TargetMask> {
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:21:6: error: 'Environment' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
 19 |
 20 |     /// The shared mask store distributed by the nearest ancestor `.effectCoordinator()`.
 21 |     @Environment(\.maskStore) private var store
    |      `- error: 'Environment' is only available in macOS 10.15 or newer
 22 |
 23 |     /// The moment this modifier's view was created, used as the zero point for time-based
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:26:6: error: 'State' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 24 |     /// configurations (e.g. `.water`) — see `effectLayer(content:boundingRect:)`. Unused, and
 25 |     /// costs nothing, for static configurations.
 26 |     @State private var startTime = Date.now
    |      `- error: 'State' is only available in macOS 10.15 or newer
 27 |
 28 |     private var targetMasks: Set<TargetMask> {
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:32:41: error: 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          |                              `- error: 'View' is only available in macOS 10.15 or newer
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:65:78: error: 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  |                                                           `- error: 'View' is only available in macOS 10.15 or newer
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:64:6: error: 'ViewBuilder' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 62 |     /// this pipeline, so adding another animated case later doesn't need its own frame source.
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
    |      `- error: 'ViewBuilder' is only available in macOS 10.15 or newer
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:87:103: error: 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  |                                                                                    `- error: 'View' is only available in macOS 10.15 or newer
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:86:6: error: 'ViewBuilder' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 84 |     ///   - time: Elapsed seconds since `startTime`, for time-based configurations. Ignored by
 85 |     ///     static ones.
 86 |     @ViewBuilder
    |      `- error: 'ViewBuilder' is only available in macOS 10.15 or newer
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:33:9: error: 'GeometryReader' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
    |         |- error: 'GeometryReader' is only available in macOS 10.15 or newer
    |         `- note: add 'if #available' version check
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:33:24: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
    |                        |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:34:49: error: 'frame(in:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    |                                                 |- error: 'frame(in:)' is only available in macOS 10.15 or newer
    |                                                 `- note: add 'if #available' version check
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
 36 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:37:13: error: 'ZStack' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
 36 |
 37 |             ZStack {
    |             |- error: 'ZStack' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 38 |                 content
 39 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:37:20: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
 35 |             let boundingRect = CGRect(origin: .zero, size: contentGeometry.size)
 36 |
 37 |             ZStack {
    |                    |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                    `- note: add 'if #available' version check
 38 |                 content
 39 |
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:43:22: error: 'mask' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 41 |                     content: content,
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
    |                      |- error: 'mask' is only available in macOS 10.15 or newer
    |                      `- note: add 'if #available' version check
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:44:25: error: 'ZStack' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
 44 |                         ZStack {
    |                         |- error: 'ZStack' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:44:25: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
 44 |                         ZStack {
    |                         |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                         `- note: add 'if #available' version check
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:45:29: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 43 |                     .mask(
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
    |                             |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:45:29: error: 'ForEach' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 43 |                     .mask(
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
    |                             |- error: 'ForEach' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:45:29: error: 'init(_:id:content:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 43 |                     .mask(
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
    |                             |- error: 'init(_:id:content:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:46:33: error: 'RoundedRectangle' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 44 |                         ZStack {
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
    |                                 |- error: 'RoundedRectangle' is only available in macOS 10.15 or newer
    |                                 `- note: add 'if #available' version check
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
 48 |                                     .position(
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:47:38: error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
    |                                      |- error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
    |                                      `- note: add 'if #available' version check
 48 |                                     .position(
 49 |                                         x: mask.frame.midX - contentOrigin.x,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:48:38: error: 'position(x:y:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
 47 |                                     .frame(width: mask.frame.width, height: mask.frame.height)
 48 |                                     .position(
    |                                      |- error: 'position(x:y:)' is only available in macOS 10.15 or newer
    |                                      `- note: add 'if #available' version check
 49 |                                         x: mask.frame.midX - contentOrigin.x,
 50 |                                         y: mask.frame.midY - contentOrigin.y
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:44:32: error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 42 |                     boundingRect: boundingRect)
 43 |                     .mask(
 44 |                         ZStack {
    |                                |- error: conformance of 'ForEach<Data, ID, Content>' to 'View' is only available in macOS 10.15 or newer
    |                                `- note: add 'if #available' version check
 45 |                             ForEach(Array(targetMasks), id: \.self) { mask in
 46 |                                 RoundedRectangle(cornerRadius: mask.cornerRadius)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:54:26: error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 52 |                             }
 53 |                         }
 54 |                         .frame(width: contentGeometry.size.width, height: contentGeometry.size.height, alignment: .topLeading)
    |                          |- error: 'frame(width:height:alignment:)' is only available in macOS 10.15 or newer
    |                          `- note: add 'if #available' version check
 55 |                     )
 56 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:54:116: error: 'topLeading' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 30 |     }
 31 |
 32 |     func body(content: Content) -> some View {
    |          `- note: add @available attribute to enclosing instance method
 33 |         GeometryReader { contentGeometry in
 34 |             let contentOrigin = contentGeometry.frame(in: .global).origin
    :
 52 |                             }
 53 |                         }
 54 |                         .frame(width: contentGeometry.size.width, height: contentGeometry.size.height, alignment: .topLeading)
    |                                                                                                                    |- error: 'topLeading' is only available in macOS 10.15 or newer
    |                                                                                                                    `- note: add 'if #available' version check
 55 |                     )
 56 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:13: error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |             |- error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
    |             `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:13: error: 'TimelineView' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |             |- error: 'TimelineView' is only available in macOS 12.0 or newer
    |             `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:13: error: 'init(_:content:)' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |             |- error: 'init(_:content:)' is only available in macOS 12.0 or newer
    |             `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:67:27: error: 'animation' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    |                           |- error: 'animation' is only available in macOS 12.0 or newer
    |                           `- note: add 'if #available' version check
 68 |                 appliedEffect(
 69 |                     to: content,
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:71:37: error: 'distance(to:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    :
 69 |                     to: content,
 70 |                     boundingRect: boundingRect,
 71 |                     time: startTime.distance(to: timeline.date)
    |                                     |- error: 'distance(to:)' is only available in macOS 10.15 or newer
    |                                     `- note: add 'if #available' version check
 72 |                 )
 73 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:66:38: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
    |                                      |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |                                      `- note: add 'if #available' version check
 67 |             TimelineView(.animation) { timeline in
 68 |                 appliedEffect(
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:66:38: error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
    |                                      |- error: conformance of 'TimelineView<Schedule, Content>' to 'View' is only available in macOS 12.0 or newer
    |                                      `- note: add 'if #available' version check
 67 |             TimelineView(.animation) { timeline in
 68 |                 appliedEffect(
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:74:16: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
    :
 72 |                 )
 73 |             }
 74 |         } else {
    |                |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |                `- note: add 'if #available' version check
 75 |             appliedEffect(to: content, boundingRect: boundingRect, time: 0)
 76 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:65:83: error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 63 |     /// Static configurations render once per SwiftUI update, same as before this existed.
 64 |     @ViewBuilder
 65 |     private func effectLayer(content: Content, boundingRect: CGRect) -> some View {
    |                  |                                                                |- error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
    |                  |                                                                `- note: add 'if #available' version check
    |                  `- note: add @available attribute to enclosing instance method
 66 |         if configuration.isTimeBased {
 67 |             TimelineView(.animation) { timeline in
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:90:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:92:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
 90 |             content.invertedEffect()
 91 |         case let .gaussianBlur(radius, maxSamples):
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:94:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 92 |             content.gaussianBlurEffect(radius: radius, boundingRect: boundingRect, maxSamples: maxSamples)
 93 |         case let .colorPlanes(offset):
 94 |             content.colorPlanesEffect(offset: offset)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:96:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 94 |             content.colorPlanesEffect(offset: offset)
 95 |         case let .emboss(strength):
 96 |             content.embossEffect(strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:98:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 96 |             content.embossEffect(strength: strength)
 97 |         case let .water(speed, strength, frequency):
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:100:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
 98 |             content.waterEffect(size: boundingRect.size, time: time, speed: speed, strength: strength, frequency: frequency)
 99 |         case let .wave(speed, smoothing, strength):
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:102:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
100 |             content.waveEffect(time: time, speed: speed, smoothing: smoothing, strength: strength)
101 |         case let .shimmer(animationDuration, gradientWidth, maxLightness, direction, angle):
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(first:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(first:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:104:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
102 |             content.shimmerEffect(size: boundingRect.size, time: time, animationDuration: animationDuration, gradientWidth: gradientWidth, maxLightness: maxLightness, direction: direction, angle: angle)
103 |         case .whiteNoise:
104 |             content.whiteNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:106:13: error: 'buildEither(second:)' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
    :
104 |             content.whiteNoiseEffect(time: time)
105 |         case .rainbowNoise:
106 |             content.rainbowNoiseEffect(time: time)
    |             |- error: 'buildEither(second:)' is only available in macOS 10.15 or newer
    |             `- note: add 'if #available' version check
107 |         }
108 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Undertow/EffectSource/EffectSourceViewModifier.swift:87:108: error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
 14 | /// the collected target masks. Because the wrapping `GeometryReader` has no intrinsic size,
 15 | /// apply any `.frame(...)` that sizes the scrolled content *after* this modifier, not before.
 16 | struct EffectSourceViewModifier: ViewModifier {
    |        `- note: add @available attribute to enclosing struct
 17 |     /// Which effect to apply.
 18 |     let configuration: Effect
    :
 85 |     ///     static ones.
 86 |     @ViewBuilder
 87 |     private func appliedEffect(to content: Content, boundingRect: CGRect, time: TimeInterval) -> some View {
    |                  |                                                                                         |- error: conformance of '_ConditionalContent<TrueContent, FalseContent>' to 'View' is only available in macOS 10.15 or newer
    |                  |                                                                                         `- note: add 'if #available' version check
    |                  `- note: add @available attribute to enclosing instance method
 88 |         switch configuration {
 89 |         case .invert:
BUILD FAILURE 6.1 macosSpm