         }
         return false
     }
+
+    private func provideViolationReason(for check: SyntaxProtocol) -> String {
+        switch check {
+        case is AvailabilityConditionSyntax:
+            return "Use #unavailable instead of #available with an empty body."
+        case is UnavailabilityConditionSyntax:
+            return "Use #available instead of #unavailable with an empty body."
+        default:
+            queuedFatalError("Unknown availability check type.")
+        }
+    }
 }

import SourceKittenFramework
import SwiftSyntax

public struct UnavailableConditionRule: ConfigurationProviderRule, SourceKitFreeRule {
    public var configuration = SeverityConfiguration(.warning)

    public init() {}

            return
        }

        violations.append(ReasonedRuleViolation(
            position: availability.positionAfterSkippingLeadingTrivia,
            reason: provideViolationReason(for: availability)
        ))
    }

    private func asAvailabilityCondition(_ condition: Syntax) -> SyntaxProtocol? {
