// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 import Foundation import LanguageServerProtocol private enum ArraySymmetry { case identity case reverse } fileprivate extension Array { func apply(symmetry: ArraySymmetry) -> any Collection { switch symmetry { case .identity: self case .reverse: reversed() } } } extension SyntaxCursor { private func firstVisibleNode(under symmetry: ArraySymmetry) -> SyntaxCursor? { switch node { case .token(let token, _): return token.kind.isVisible ? self : nil case .tree: for child in children.apply(symmetry: symmetry) { if let visibleChild = child.firstVisibleNode(under: symmetry) { return visibleChild } } return nil } } private var visibleUtf16Range: Range? { guard let firstNode = firstVisibleNode(under: .identity), let lastNode = firstVisibleNode(under: .reverse) else { return nil } return firstNode.utf16Range.lowerBound..