 
 
 // CHECK-LABEL: @interface SWTSubclassOfReplacementAvailable : SWTReplacementAvailable
-// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSuperclassWithFirst:(NSInteger)first second:(NSInteger)second
-// CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to superclass's method", "replacingMethodInReplacementClassWithFirst:second:");
-// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSubclassButUnavilableWithFirst:(NSInteger)first second:(NSInteger)second
+// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSuperclassWithPrimitiveParametersWithFirst:(NSInteger)first second:(NSInteger)second
+// CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to superclass's method", "replacingMethodInReplacementClassWithPrimitiveParametersWithFirst:second:");
+// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSubclassButUnavilableWithPrimitiveParametersWithFirst:(NSInteger)first second:(NSInteger)second
 // CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to unavilable subclass's method",
-// CHECK-SAME: "SubclassOfSubclassOfReplacementAvailable.methodReplacingInSubclassOfSubclassOfReplacementClass(first:second:)")
-// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSubclassButAvilableWithFirst:(NSInteger)first second:(NSInteger)second
+// CHECK-SAME: "SubclassOfSubclassOfReplacementAvailable.methodReplacingInSubclassOfSubclassOfReplacementClassWithPrimitiveParameters(first:second:)")
+// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSubclassButAvilableWithPrimitiveParametersWithFirst:(NSInteger)first second:(NSInteger)second
 // CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to available subclass's method",
-// CHECK-SAME: "replacingMethodInReplacementClassWithFirst:second:")
+// CHECK-SAME: "replacingMethodInReplacementClassWithPrimitiveParametersWithFirst:second:")
+
+// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSuperclassWithSuperclassObjectParametersWithFirst:(SWTReplacementAvailable * _Nonnull)first second:(SWTReplacementAvailable * _Nonnull)second
+// CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to superclass's method", "replacingMethodInReplacementClassWithSuperclassObjectParametersWithFirst:second:");
+// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSubclassButUnavilableWithSuperclassObjectParametersWithFirst:(SWTReplacementAvailable * _Nonnull)first second:(SWTReplacementAvailable * _Nonnull)second
+// CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to unavilable subclass's method",
+// CHECK-SAME: "SubclassOfSubclassOfReplacementAvailable.methodReplacingInSubclassOfSubclassOfObjectClass(first:second:)")
+// CHECK-NEXT: - (void)deprecatedMethodInSubclassOfReplacedInSubclassButAvilableWithSuperclassObjectParametersWithFirst:(SWTReplacementAvailable * _Nonnull)first second:(SWTReplacementAvailable * _Nonnull)second
+// CHECK-SAME: SWIFT_DEPRECATED_MSG("Deprecated method with the Context name in the renamed attribute - Rename to available subclass's method",
+// CHECK-SAME: "replacingMethodInReplacementClassWithSuperclassObjectParametersWithFirst:second:")
+
 // CHECK-NEXT: @end
 
 // CHECK-LABEL: @interface SWTSubclassOfSubclassOfReplacementAvailable : SWTSubclassOfReplacementAvailable


// CHECK-LABEL: SWIFT_AVAILABILITY(macos,unavailable,message="'UnavailableAvailability' has been renamed to 'SWTReplacementAvailable'")
// CHECK-LABEL: @interface UnavailableAvailability
// CHECK-NEXT: - (void)unavailableMethodInUnavailableClassWithFirst:(NSInteger)first second:(NSInteger)second
// CHECK-SAME: SWIFT_UNAVAILABLE_MSG("'unavailableMethodInUnavailableClass' has been renamed to 'ReplacementAvailable.methodReplacingInReplacementClass(first:second:)': use method in another class instead")
// CHECK-NEXT: - (void)unavailableOnMacOSMethodInUnavailableClassWithFirst:(NSInteger)first second:(NSInteger)second
// CHECK-SAME: SWIFT_AVAILABILITY(macos,unavailable,message="'unavailableOnMacOSMethodInUnavailableClass' has been renamed to 'ReplacementAvailable.methodReplacingInReplacementClass(first:second:)': use method in another class instead");
// CHECK-NEXT: @end

// CHECK-LABEL: SWIFT_AVAILABILITY(macos,unavailable,message="'UnavailableAvailabilityProtocol' has been renamed to 'SWTReplacementAvailableProtocol'")
// CHECK-LABEL: @protocol UnavailableAvailabilityProtocol
// CHECK-NEXT: - (void)unavailableMethodInUnavailableClassWithFirst:(NSInteger)first second:(NSInteger)second
// CHECK-SAME: SWIFT_UNAVAILABLE_MSG("'unavailableMethodInUnavailableClass' has been renamed to 'ReplacementAvailable.methodReplacingInReplacementClass(first:second:)': use method in another class instead")
// CHECK-NEXT: - (void)unavailableOnMacOSMethodInUnavailableClassWithFirst:(NSInteger)first second:(NSInteger)second
// CHECK-SAME: SWIFT_AVAILABILITY(macos,unavailable,message="'unavailableOnMacOSMethodInUnavailableClass' has been renamed to 'ReplacementAvailableProtocol.methodReplacingInReplacementProtocol(first:second:)': use method in another class instead");
// CHECK-NEXT: @end

// CHECK-LABEL: SWIFT_CLASS("{{.+}}WholeClassAvailability") 

@available(macOS, deprecated, renamed: "ReplacementAvailable")
@objc class DeprecatedAvailability {
    @available(*, deprecated, message: "use method in another class instead",
    renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithPrimitiveParameters(first:second:)")
    @objc func deprecatedMethodInDeprecatedClassWithPrimitiveParameters(first: Int, second: Int) -> Void {}
    @available(macOS, deprecated, message: "use method in another class instead",
    renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithPrimitiveParameters(first:second:)")
    @objc func deprecatedOnMacOSMethodInDeprecatedClassWithPrimitiveParameters(first: Int, second: Int) -> Void {}
  
    @available(*, deprecated, message: "use method in another class instead",
    renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithSuperclassObjectParameters(first:second:)")
    @objc func deprecatedMethodInDeprecatedClassWithSuperclassObjectParameters(first: ReplacementAvailable, second: ReplacementAvailable) -> Void {}
    @available(macOS, deprecated, message: "use method in another class instead",
    renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithSuperclassObjectParameters(first:second:)")
    @objc func deprecatedOnMacOSMethodInDeprecatedClassWithSuperclassObjectParameters(first: ReplacementAvailable, second: ReplacementAvailable) -> Void {}
}

@available(macOS, unavailable, renamed: "ReplacementAvailable")
@objc class UnavailableAvailability {
    @available(*, unavailable, message: "use method in another class instead", renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithPrimitiveParameters(first:second:)")
    @objc func unavailableMethodInUnavailableClassWithPrimitiveParameters(first: Int, second: Int) -> Void {}
    @available(macOS, unavailable, message: "use method in another class instead", renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithPrimitiveParameters(first:second:)")
    @objc func unavailableOnMacOSMethodInUnavailableClassWithPrimitiveParameters(first: Int, second: Int) -> Void {}
  
    @available(*, unavailable, message: "use method in another class instead", renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithSuperclassObjectParameters(first:second:)")
    @objc func unavailableMethodInUnavailableClassWithSuperclassObjectParameters(first: ReplacementAvailable, second: ReplacementAvailable) -> Void {}
    @available(macOS, unavailable, message: "use method in another class instead", renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithSuperclassObjectParameters(first:second:)")
    @objc func unavailableOnMacOSMethodInUnavailableClassWithSuperclassObjectParameters(first: ReplacementAvailable, second: ReplacementAvailable) -> Void {}
}

@objc(SWTReplacementAvailableProtocol) protocol ReplacementAvailableProtocol {
    @objc(replacingMethodInReplacementProtocolWithFirst:second:)
    func methodReplacingInReplacementProtocol(first: Int, second: Int) -> Void
}

@available(macOS, deprecated, renamed: "ReplacementAvailableProtocol")
@objc protocol DeprecatedAvailabilityProtocol {
    @available(*, deprecated, message: "use method in another class instead", renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithPrimitiveParameters(first:second:)")
    @objc func deprecatedMethodInDeprecatedClassWithPrimitiveParameters(first: Int, second: Int) -> Void
    @available(macOS, deprecated, message: "use method in another class instead", renamed: "ReplacementAvailableProtocol.methodReplacingInReplacementProtocol(first:second:)")
    @objc func deprecatedOnMacOSMethodInDeprecatedClassWithPrimitiveParameters(first: Int, second: Int) -> Void
}

@available(macOS, unavailable, renamed: "ReplacementAvailableProtocol")
@objc protocol UnavailableAvailabilityProtocol {
    @available(*, unavailable, message: "use method in another class instead", renamed: "ReplacementAvailable.methodReplacingInReplacementClassWithPrimitiveParameters(first:second:)")
    @objc func unavailableMethodInUnavailableClassWithPrimitiveParameters(first: Int, second: Int) -> Void
    @available(macOS, unavailable, message: "use method in another class instead", renamed: "ReplacementAvailableProtocol.methodReplacingInReplacementProtocol(first:second:)")
    @objc func unavailableOnMacOSMethodInUnavailableClassWithPrimitiveParameters(first: Int, second: Int) -> Void
}


