Skip to content

AppKit macOS xcode13.0 beta1

Rachel Kang edited this page Oct 8, 2021 · 4 revisions

#AppKit.framework https://github.com/xamarin/xamarin-macios/pull/12936

diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.apinotes /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.apinotes
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.apinotes	2021-03-16 04:44:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.apinotes	2021-06-01 21:24:05.000000000 -0400
@@ -2390,6 +2390,10 @@
     SwiftName: NSApplicationDidBecomeActive
   - Name: NSApplicationDidChangeOcclusionStateNotification
     SwiftName: NSApplicationDidChangeOcclusionState
+  - Name: NSApplicationProtectedDataWillBecomeUnavailableNotification
+    SwiftName: NSApplicationProtectedDataWillBecomeUnavailable
+  - Name: NSApplicationProtectedDataDidBecomeAvailableNotification
+    SwiftName: NSApplicationProtectedDataDidBecomeAvailable
   - Name: NSApplicationDidChangeScreenParametersNotification
     SwiftName: NSApplicationDidChangeScreenParameters
   - Name: NSApplicationDidFinishLaunchingNotification
@@ -6062,6 +6066,59 @@
   - Selector: "initWithClient:"
     MethodKind: Instance
     DesignatedInit: true
+- Name: NSTextLayoutManager
+  Methods:
+  - Selector: "replaceTextContentManager:"
+    MethodKind: Instance
+    SwiftName: replace(_:)
+  - Selector: "ensureLayoutForBounds:"
+    MethodKind: Instance
+    SwiftName: ensureLayout(for:)
+  - Selector: "textLayoutFragmentForPosition:"
+    MethodKind: Instance
+    SwiftName: textLayoutFragment(for:)
+- Name: NSTextRange
+  Methods:
+  - Selector: "initWithLocation:"
+    MethodKind: Instance 
+    SwiftName: init(location:)
+  - Selector: "containsLocation:"
+    MethodKind: Instance
+    SwiftName: contains(_:)
+  - Selector: "containsRange:"
+    MethodKind: Instance
+    SwiftName: contains(_:)
+  - Selector: "intersectsWithTextRange:"
+    MethodKind: Instance
+    SwiftName: intersects(_:)
+  - Selector: "textRangeByIntersectingWithTextRange:"
+    MethodKind: Instance
+    SwiftName: intersection(_:)
+  - Selector: "textRangeByFormingUnionWithTextRange:"
+    MethodKind: Instance
+    SwiftName: union(_:)
+- Name: NSTextSelection
+  Methods:
+  - Selector: "initWithRanges:affinity:granularity:"
+    MethodKind: Instance 
+    SwiftName: init(_:affinity:granularity:)
+  - Selector: "initWithRange:affinity:granularity:"
+    MethodKind: Instance
+    SwiftName: init(_:affinity:granularity:)
+  - Selector: "initWithLocation:affinity:"
+    MethodKind: Instance
+    SwiftName: init(_:affinity:)
+- Name: NSTextSelectionNavigation
+  Methods:
+  - Selector: "textSelectionsInteractingAtPoint:inContainerAtLocation:anchors:modifiers:selecting:bounds:"
+    MethodKind: Instance
+    SwiftName: textSelections(interactingAt:containerLocation:anchors:modifiers:selecting:bounds:)
+  - Selector: "textSelectionForSelectionGranularity:enclosingTextSelection:"
+    MethodKind: Instance
+    SwiftName: textSelections(for:enclosing:)
+  - Selector: "textSelectionForSelectionGranularity:enclosingPoint:inContainerAtLocation:"
+    MethodKind: Instance
+    SwiftName: textSelection(for:enclosing:inContainerAt:)
 - Name: NSTextTableBlock
   Methods:
   - Selector: "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:"
@@ -6450,6 +6507,24 @@
   - Selector: "requestAuthorizationOfType:completionHandler:"
     MethodKind: Instance
     SwiftName: "requestAuthorization(to:completionHandler:)"
+  - Selector: "URLForApplicationToOpenContentType:"
+    MethodKind: Instance
+    SwiftName: "urlForApplication(toOpen:)"
+  - Selector: "URLsForApplicationsToOpenContentType:"
+    MethodKind: Instance
+    SwiftName: "urlsForApplications(toOpen:)"
+  - Selector: "setDefaultApplicationAtURL:toOpenContentTypeOfFileAtURL:completionHandler:"
+    MethodKind: Instance
+    SwiftName: "setDefaultApplication(at:toOpenContentTypeOfFileAt:completion:)"
+  - Selector: "setDefaultApplicationAtURL:toOpenURLsWithScheme:completionHandler:"
+    MethodKind: Instance
+    SwiftName: "setDefaultApplication(at:toOpenURLsWithScheme:completion:)"
+  - Selector: "setDefaultApplicationAtURL:toOpenFileAtURL:completionHandler:"
+    MethodKind: Instance
+    SwiftName: "setDefaultApplication(at:toOpenFileAt:completion:)"
+  - Selector: "setDefaultApplicationAtURL:toOpenContentType:completionHandler:"
+    MethodKind: Instance
+    SwiftName: "setDefaultApplication(at:toOpen:completion:)"
 - Name: NSWorkspaceAuthorization
   SwiftName: NSWorkspace.Authorization
 - Name: NSWorkspaceOpenConfiguration
@@ -6889,10 +6964,28 @@
   SwiftName: NSTextFinder.Action
 - Name: NSTextFinderMatchingType
   SwiftName: NSTextFinder.MatchingType
+- Name: NSTextLayoutFragmentEnumerationOptions
+  SwiftName: NSTextLayoutFragment.EnumerationOptions
+- Name: NSTextLayoutFragmentState
+  SwiftName: NSTextLayoutFragment.State
+- Name: NSTextLayoutManagerSegmentOptions
+  SwiftName: NSTextLayoutManager.SegmentOptions
+- Name: NSTextLayoutManagerSegmentType
+  SwiftName: NSTextLayoutManager.SegmentType
 - Name: NSTextLayoutOrientation
   SwiftName: NSLayoutManager.TextLayoutOrientation
 - Name: NSTextListOptions
   SwiftName: NSTextList.Options
+- Name: NSTextSelectionAffinity
+  SwiftName: NSTextSelection.Affinity
+- Name: NSTextSelectionGranularity
+  SwiftName: NSTextSelection.Granularity
+- Name: NSTextSelectionNavigationDestination
+  SwiftName: NSTextSelectionNavigation.Destination
+- Name: NSTextSelectionNavigationDirection
+  SwiftName: NSTextSelectionNavigation.Direction
+- Name: NSTextSelectionNavigationModifier
+  SwiftName: NSTextSelectionNavigation.Modifier
 - Name: NSTextTabType
   SwiftName: NSParagraphStyle.TextTabType
 - Name: NSTextTableLayoutAlgorithm
@@ -10104,6 +10197,8 @@
   SwiftName: selectedRange
 - Name: NSTextColorBinding
   SwiftName: textColor
+- Name: NSTextContentStorageUnsupportedAttributeAddedNotification
+  SwiftName: unsupportedAttributeAddedNotification
 - Name: NSTextDidBeginEditingNotification
   SwiftName: NSText.didBeginEditingNotification
 - Name: NSTextDidChangeNotification
@@ -10142,8 +10237,12 @@
   SwiftName: NSTextView.didChangeSelectionNotification
 - Name: NSTextViewDidChangeTypingAttributesNotification
   SwiftName: NSTextView.didChangeTypingAttributesNotification
+- Name: NSTextViewDidSwitchToNSLayoutManagerNotification
+  SwiftName: NSTextView.didSwitchToNSLayoutManagerNotification
 - Name: NSTextViewWillChangeNotifyingTextViewNotification
   SwiftName: NSTextView.willChangeNotifyingTextViewNotification
+- Name: NSTextViewWillSwitchToNSLayoutManagerNotification
+  SwiftName: NSTextView.willSwitchToNSLayoutManagerNotification
 - Name: NSTextWritingDirectionEmbedding
   Availability: nonswift
 - Name: NSTextWritingDirectionOverride
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h	2021-03-16 04:44:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h	2021-06-01 21:56:02.000000000 -0400
@@ -260,3 +260,14 @@
 #import <AppKit/NSStepperTouchBarItem.h>
 #import <AppKit/NSTintConfiguration.h>
 #import <AppKit/NSSearchToolbarItem.h>
+
+#import <AppKit/NSTextRange.h>
+#import <AppKit/NSTextSelection.h>
+#import <AppKit/NSTextSelectionNavigation.h>
+#import <AppKit/NSTextTypes.h>
+#import <AppKit/NSTextContentManager.h>
+#import <AppKit/NSTextElement.h>
+#import <AppKit/NSTextLayoutFragment.h>
+#import <AppKit/NSTextLayoutManager.h>
+#import <AppKit/NSTextLineFragment.h>
+#import <AppKit/NSTextViewportLayoutController.h>
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibility.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibility.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibility.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibility.h	2021-06-02 11:06:51.000000000 -0400
@@ -120,7 +120,6 @@
 /* Notification posted to the NSWorkspace notification center when accessibility display options have changed. */
 APPKIT_EXTERN NSNotificationName const NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification API_AVAILABLE(macos(10.10));
 
-
 /*** Accessibility Related Methods ***/
 
 @interface NSObject (NSAccessibilityAdditions)
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibilityCustomRotor.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibilityCustomRotor.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibilityCustomRotor.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAccessibilityCustomRotor.h	2021-06-02 11:06:39.000000000 -0400
@@ -75,6 +75,7 @@
     NSAccessibilityCustomRotorTypeTextField,
     NSAccessibilityCustomRotorTypeUnderlinedText,
     NSAccessibilityCustomRotorTypeVisitedLink,
+    NSAccessibilityCustomRotorTypeAudiograph,
 } API_AVAILABLE(macos(10.13));
 
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAlert.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAlert.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAlert.h	2021-03-16 09:54:16.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAlert.h	2021-06-02 11:06:47.000000000 -0400
@@ -41,6 +41,7 @@
 static const NSModalResponse NSAlertSecondButtonReturn = 1001;
 static const NSModalResponse NSAlertThirdButtonReturn = 1002;
 
+NS_SWIFT_UI_ACTOR
 @interface NSAlert : NSObject
 
 /* Given an NSError, create an NSAlert that can be used to present the error to the user. The error's localized description, recovery suggestion, and recovery options will be used to set the alert's message text, informative text, and button titles, respectively.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAppearance.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAppearance.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAppearance.h	2021-03-16 09:54:11.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSAppearance.h	2021-06-02 11:06:42.000000000 -0400
@@ -25,7 +25,7 @@
 // Automatically set by NSView before that view's drawRect:, updateLayer, and layout methods are invoked.
 // At other times its return value is unreliable (depending on if the previous caller restored it to a previous value after setting it).
 // This is not the correct way to determine the 'system' appearance. Use a view's, window's, or the app's effectiveAppearance.
-@property (class, null_resettable, strong) NSAppearance *currentAppearance API_DEPRECATED("Use -performAsCurrentDrawingAppearance: to temporarily set the drawing appearance, or +currentDrawingAppearance to access the currently drawing appearance.", macos(10.9, API_TO_BE_DEPRECATED));
+@property (class, null_resettable, strong) NSAppearance *currentAppearance API_DEPRECATED("Use -performAsCurrentDrawingAppearance: to temporarily set the drawing appearance, or +currentDrawingAppearance to access the currently drawing appearance.", macos(10.9, 12.0));
 
 // The appearance which has been made active for drawing (usually by locking focus on a view)
 // and is used for color and asset resolution.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h	2021-03-16 09:54:18.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h	2021-06-02 11:06:49.000000000 -0400
@@ -28,6 +28,7 @@
 @class NSDockTile;
 @class NSUserActivity;
 @class CKShareMetadata;
+@class INIntent;
 @protocol NSApplicationDelegate;
 
 typedef double NSAppKitVersion NS_TYPED_EXTENSIBLE_ENUM;
@@ -117,7 +118,7 @@
     NSApplicationPresentationDisableMenuBarTransparency = (1 <<  9),    // Menu Bar's transparent appearance is disabled
 
     NSApplicationPresentationFullScreen API_AVAILABLE(macos(10.7)) = (1 << 10),         // Application is in fullscreen mode
-    NSApplicationPresentationAutoHideToolbar API_AVAILABLE(macos(10.7)) = (1 << 11),    // Fullscreen window toolbar is detached from window and hides/shows with autoHidden menuBar.  May be used only when both NSApplicationPresentationFullScreen and NSApplicationPresentationAutoHideMenuBar are also set
+    NSApplicationPresentationAutoHideToolbar API_AVAILABLE(macos(10.7)) = (1 << 11),    // Fullscreen window toolbar is detached from window and hides/shows on rollover.  May be used only when both NSApplicationPresentationFullScreen is also set
     
     NSApplicationPresentationDisableCursorLocationAssistance API_AVAILABLE(macos(10.11.2)) = (1 << 12)    // "Shake mouse pointer to locate" is disabled for this application
 } API_AVAILABLE(macos(10.6));
@@ -234,6 +235,9 @@
 
 @property (readonly) NSApplicationOcclusionState occlusionState API_AVAILABLE(macos(10.9));
 
+@property (readonly, getter=isProtectedDataAvailable) BOOL protectedDataAvailable API_AVAILABLE(macos(12.0));
+
+
 @end
 
 @interface NSApplication (NSAppearanceCustomization) <NSAppearanceCustomization>
@@ -323,6 +327,21 @@
 - (void)application:(NSApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error API_AVAILABLE(macos(10.7));
 - (void)application:(NSApplication *)application didReceiveRemoteNotification:(NSDictionary<NSString *, id> *)userInfo API_AVAILABLE(macos(10.7));
 
+/** Method to opt-in to secure restorable state.
+ 
+    When this returns YES:
+    * NSCoders that are passed into the various NSWindowRestoration methods will requiresSecureCoding and have a decodingFailurePolicy of NSDecodingFailurePolicySetErrorAndReturn.
+    * Any restorationClass set on a window must explicitly conform to NSWindowRestoration.
+ 
+    This method will be called prior to any state encoding or restoration.
+*/
+- (BOOL)applicationSupportsSecureRestorableState:(NSApplication *)app API_AVAILABLE(macos(12.0));
+
+/**
+ Returns the object capable of handling the specified intent.
+ */
+- (nullable id)application:(NSApplication *)application handlerForIntent:(INIntent *)intent API_AVAILABLE(macos(12.0));
+
 /* Method called by -[NSApplication encodeRestorableStateWithCoder:] to give the delegate a chance to encode any additional state into the NSCoder. If the restorable state managed by the delegate changes, you must call -[NSApplication invalidateRestorableState] so that it will be re-encoded. See the header NSWindowRestoration.h for more information.
 */
 - (void)application:(NSApplication *)app willEncodeRestorableState:(NSCoder *)coder API_AVAILABLE(macos(10.7));
@@ -371,6 +390,15 @@
 */
 - (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key;
 
+/* NSMenu system-wide keyboard shortcut localization support
+ */
+
+/* This method will be called once during application launch at [NSApplication finishLaunching].
+ 
+   Return NO if the receiving delegate object wishes to opt-out of system-wide keyboard shortcut localization for all application-supplied menus. Return YES by default for apps linked against 12.0 and later SDK.
+*/
+- (BOOL)applicationShouldAutomaticallyLocalizeKeyEquivalents:(NSApplication *)application API_AVAILABLE(macos(12.0));
+
 /* Notifications:
  */
 - (void)applicationWillFinishLaunching:(NSNotification *)notification;
@@ -388,6 +416,8 @@
 - (void)applicationWillTerminate:(NSNotification *)notification;
 - (void)applicationDidChangeScreenParameters:(NSNotification *)notification;
 - (void)applicationDidChangeOcclusionState:(NSNotification *)notification API_AVAILABLE(macos(10.9));
+- (void)applicationProtectedDataWillBecomeUnavailable:(NSNotification *)notification API_AVAILABLE(macos(12.0));
+- (void)applicationProtectedDataDidBecomeAvailable:(NSNotification *)notification API_AVAILABLE(macos(12.0));
 
 @end
 
@@ -508,6 +538,8 @@
 APPKIT_EXTERN NSNotificationName NSApplicationWillUpdateNotification;
 APPKIT_EXTERN NSNotificationName NSApplicationWillTerminateNotification;
 APPKIT_EXTERN NSNotificationName NSApplicationDidChangeScreenParametersNotification;
+APPKIT_EXTERN NSNotificationName NSApplicationProtectedDataWillBecomeUnavailableNotification API_AVAILABLE(macos(12.0));
+APPKIT_EXTERN NSNotificationName NSApplicationProtectedDataDidBecomeAvailableNotification API_AVAILABLE(macos(12.0));
 
 /* User info keys for NSApplicationDidFinishLaunchingNotification */
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSBitmapImageRep.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSBitmapImageRep.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSBitmapImageRep.h	2021-03-16 09:54:16.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSBitmapImageRep.h	2021-06-02 11:06:47.000000000 -0400
@@ -73,6 +73,7 @@
 APPKIT_EXTERN NSBitmapImageRepPropertyKey NSImageGamma;                               // PNG input/output (float in NSNumber)
 APPKIT_EXTERN NSBitmapImageRepPropertyKey NSImageProgressive;                   // JPEG input/output (BOOL in NSNumber)
 APPKIT_EXTERN NSBitmapImageRepPropertyKey NSImageEXIFData;                         // JPEG input/output (NSDictionary)
+APPKIT_EXTERN NSBitmapImageRepPropertyKey NSImageIPTCData;                      // Photo Metadata (NSDictionary)
 APPKIT_EXTERN NSBitmapImageRepPropertyKey NSImageFallbackBackgroundColor API_AVAILABLE(macos(10.5)); // JPEG output (NSColor)
 
 @interface NSBitmapImageRep : NSImageRep <NSSecureCoding>
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h	2021-03-16 09:54:14.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h	2021-06-02 11:06:46.000000000 -0400
@@ -95,6 +95,7 @@
     NSControlSizeLarge API_AVAILABLE(macos(11.0)) = 3
 };
 
+NS_SWIFT_UI_ACTOR
 @interface NSCell : NSObject <NSCopying, NSCoding, NSUserInterfaceItemIdentification, NSAccessibilityElement, NSAccessibility>
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColor.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColor.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColor.h	2021-03-16 09:54:10.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColor.h	2021-06-02 11:06:41.000000000 -0400
@@ -244,6 +244,8 @@
 @property (class, strong, readonly) NSColor *systemGrayColor API_AVAILABLE(macos(10.10));
 @property (class, strong, readonly) NSColor *systemTealColor API_AVAILABLE(macos(10.12));
 @property (class, strong, readonly) NSColor *systemIndigoColor API_AVAILABLE(macos(10.15));
+@property (class, strong, readonly) NSColor *systemMintColor API_AVAILABLE(macos(10.12));
+@property (class, strong, readonly) NSColor *systemCyanColor API_AVAILABLE(macos(12.0));
 
 
 /*! A dynamic color that reflects the user's current preferred accent color. This color automatically updates when the accent color preference changes. Do not make assumptions about the color space of this color, which may change across releases. */
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColorSampler.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColorSampler.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColorSampler.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSColorSampler.h	2021-06-02 11:06:50.000000000 -0400
@@ -26,7 +26,7 @@
  *
  * The calling NSColorSampler instance is retained until the sampling session is completed.
  */
-- (void)showSamplerWithSelectionHandler:(void (^)(NSColor * _Nullable selectedColor))selectionHandler;
+- (void)showSamplerWithSelectionHandler:(void (^)(NSColor * _Nullable selectedColor))selectionHandler NS_SWIFT_ASYNC_NAME(sample());
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDatePicker.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDatePicker.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDatePicker.h	2021-03-16 09:54:11.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDatePicker.h	2021-06-02 11:06:42.000000000 -0400
@@ -58,7 +58,7 @@
 
 @property (nullable, copy) NSDate *maxDate;
 
-#pragma mark *** Calender Overlay Support ***
+#pragma mark *** Calendar Overlay Support ***
 
 @property BOOL presentsCalendarOverlay API_AVAILABLE(macos(10.15.4));
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDockTile.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDockTile.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDockTile.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDockTile.h	2021-06-02 11:06:39.000000000 -0400
@@ -58,6 +58,8 @@
 - (void)setDockTile:(nullable NSDockTile*)dockTile;
 
 @optional
+/* The plugin should return a menu whose contents will be inserted in front of the standard Dock tile contents. Note that the plugin must ensure that the menu remains valid until the user is done interacting with the menu, which generally requires that the menu be stored in a property with strong ownership. Specifically, the menu should not be autoreleased; that would allow the menu to be deallocated before the user can interact with it, and will cause menu item selections to be ignored.
+ */
 - (nullable NSMenu*)dockMenu;
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocument.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocument.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocument.h	2021-03-16 09:54:18.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocument.h	2021-06-02 11:06:49.000000000 -0400
@@ -85,6 +85,7 @@
     
 };
 
+NS_SWIFT_UI_ACTOR
 @interface NSDocument : NSObject<NSEditorRegistration, NSFilePresenter, NSMenuItemValidation, NSUserInterfaceValidations>
 
 #pragma mark *** Initialization ***
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocumentController.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocumentController.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocumentController.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSDocumentController.h	2021-06-02 11:06:51.000000000 -0400
@@ -17,6 +17,7 @@
 
 @class NSDocument, NSError, NSMenuItem, NSMutableDictionary, NSOpenPanel, NSURL, NSWindow;
 
+NS_SWIFT_UI_ACTOR
 @interface NSDocumentController : NSObject<NSCoding, NSMenuItemValidation, NSUserInterfaceValidations>
 
 #pragma mark *** The Shared Document Controller ***
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSFontCollection.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSFontCollection.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSFontCollection.h	2021-03-16 09:54:17.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSFontCollection.h	2021-06-02 11:06:48.000000000 -0400
@@ -85,7 +85,7 @@
 + (BOOL)hideFontCollectionWithName:(NSFontCollectionName)name visibility:(NSFontCollectionVisibility)visibility error:(NSError **)error;
 
 // Rename named collection
-+ (BOOL)renameFontCollectionWithName:(NSFontCollectionName)name visibility:(NSFontCollectionVisibility)visibility toName:(NSFontCollectionName)name error:(NSError **)error;
++ (BOOL)renameFontCollectionWithName:(NSFontCollectionName)oldName visibility:(NSFontCollectionVisibility)visibility toName:(NSFontCollectionName)newName error:(NSError **)outError;
 
 // Named collections visible to this process (array of NSString)
 @property (class, readonly, copy) NSArray<NSFontCollectionName> *allFontCollectionNames;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGestureRecognizer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGestureRecognizer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGestureRecognizer.h	2021-03-16 09:54:13.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGestureRecognizer.h	2021-06-02 11:06:45.000000000 -0400
@@ -31,7 +31,7 @@
     NSGestureRecognizerStateRecognized = NSGestureRecognizerStateEnded // the recognizer has received events recognized as the gesture. the action method will be called at the next turn of the run loop and the recognizer will be reset to NSGestureRecognizerStatePossible
 };
 
-API_AVAILABLE(macos(10.10))
+API_AVAILABLE(macos(10.10)) NS_SWIFT_UI_ACTOR
 @interface NSGestureRecognizer : NSObject <NSCoding>
 
 /* valid action method signatures:
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGridView.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGridView.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGridView.h	2021-03-16 09:54:09.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSGridView.h	2021-06-02 11:06:41.000000000 -0400
@@ -97,7 +97,7 @@
 
 
 // NSGridRow represents a row of cells in the grid view, and allows content placement to be specified on a per-row basis.
-API_AVAILABLE(macos(10.12))
+API_AVAILABLE(macos(10.12)) NS_SWIFT_UI_ACTOR
 @interface NSGridRow : NSObject <NSCoding>
 
 @property (readonly,weak) NSGridView *gridView;
@@ -120,7 +120,7 @@
 
 
 // NSGridColumn represents a column of cells in the grid view, and allows content placement to be specified on a per-column basis.
-API_AVAILABLE(macos(10.12))
+API_AVAILABLE(macos(10.12)) NS_SWIFT_UI_ACTOR
 @interface NSGridColumn : NSObject <NSCoding>
 
 @property (readonly,weak) NSGridView *gridView;
@@ -140,7 +140,7 @@
 
 
 // NSGridCell represents a single cell in the grid.  The cell will maintain the necessary constraints for positioning out whichever contentView is set.
-API_AVAILABLE(macos(10.12))
+API_AVAILABLE(macos(10.12)) NS_SWIFT_UI_ACTOR
 @interface NSGridCell : NSObject <NSCoding>
 
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSHelpManager.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSHelpManager.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSHelpManager.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSHelpManager.h	2021-06-02 11:06:39.000000000 -0400
@@ -22,6 +22,7 @@
 typedef NSString * NSHelpAnchorName NS_SWIFT_BRIDGED_TYPEDEF;
 typedef NSString * NSHelpManagerContextHelpKey NS_SWIFT_BRIDGED_TYPEDEF;
 
+NS_SWIFT_UI_ACTOR
 @interface NSHelpManager : NSObject
 
 @property (class, readonly, strong) NSHelpManager *sharedHelpManager;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSKeyValueBinding.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSKeyValueBinding.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSKeyValueBinding.h	2021-03-16 09:54:18.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSKeyValueBinding.h	2021-06-02 11:06:49.000000000 -0400
@@ -76,8 +76,8 @@
 
 @interface NSObject (NSPlaceholders)
 
-+ (void)setDefaultPlaceholder:(nullable id)placeholder forMarker:(nullable id)marker withBinding:(NSBindingName)binding API_DEPRECATED_WITH_REPLACEMENT("+[NSBindingSelectionMarker setDefaultPlaceholder:forMarker:withBinding:onClass:]", macos(10.0, 11.0));
-+ (nullable id)defaultPlaceholderForMarker:(nullable id)marker withBinding:(NSBindingName)binding API_DEPRECATED_WITH_REPLACEMENT("+[NSBindingSelectionMarker defaultPlaceholder:forMarker:withBinding:onClass:]", macos(10.0, 11.0));
++ (void)setDefaultPlaceholder:(nullable id)placeholder forMarker:(nullable id)marker withBinding:(NSBindingName)binding API_DEPRECATED_WITH_REPLACEMENT("+[NSBindingSelectionMarker setDefaultPlaceholder:forMarker:onClass:withBinding:]", macos(10.0, 11.0));
++ (nullable id)defaultPlaceholderForMarker:(nullable id)marker withBinding:(NSBindingName)binding API_DEPRECATED_WITH_REPLACEMENT("+[NSBindingSelectionMarker defaultPlaceholderForMarker:onClass:withBinding:]", macos(10.0, 11.0));
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSMenuItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSMenuItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSMenuItem.h	2021-03-16 09:54:13.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSMenuItem.h	2021-06-02 11:06:45.000000000 -0400
@@ -53,6 +53,12 @@
 /* By default, when a menu item is hidden, its key equivalent is ignored. By setting this property to YES, you allow a hidden item's key equivalent to be considered when searching for a menu item that matches a key event. This is useful to provide a keyboard shortcut when it's not necessary to have a visible menu item in the menubar. Note that Apple HI guidelines generally recommend that keyboard shortcuts should be clearly indicated in a menu, so this property should be used only rarely. */
 @property BOOL allowsKeyEquivalentWhenHidden API_AVAILABLE(macos(10.13));
 
+/* Suppose the system detects a given key equivalent that is not reachable in the current keyboard layout; it will localize the key equivalent to something reachable. By setting this property to NO, you will opt-out this menu item from the system-provided localization. YES by default for apps linked against 12.0 and later SDK. */
+@property BOOL allowsAutomaticKeyEquivalentLocalization API_AVAILABLE(macos(12.0));
+
+/* Suppose the system detects a given key equivalent with the following input string [ ] { } ( ) < > ← → in a right-to-left user interface environment (NSUserInterfaceLayoutDirectionRightToLeft); in that case, the system will automatically mirror the key equivalent. For example, a pair of menu items with key equivalents { and } will be localized to } and { in a right-to-left user interface. By setting this property to NO, you will opt-out this menu item of automatically mirroring in RTL. It would be best only to do this if your shortcut action will result in some sort of directional change in the UI, e.g. text alignment or a D-pad in a game. YES by default for apps linked against 12.0 and later SDK. */
+@property BOOL allowsAutomaticKeyEquivalentMirroring API_AVAILABLE(macos(12.0));
+
 @property (nullable, strong) NSImage *image;
 
 @property NSControlStateValue state;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSOpenGL.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSOpenGL.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSOpenGL.h	2021-03-16 09:54:16.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSOpenGL.h	2021-06-02 11:06:47.000000000 -0400
@@ -190,8 +190,8 @@
 @property (readonly, strong) NSOpenGLPixelFormat *pixelFormat API_AVAILABLE(macos(10.10));
 
 /* Drawable management */
-@property (nullable, weak) NSView *view API_DEPRECATED("", macos(10.0,10.14));
-- (void)setView:(nullable NSView *)view API_DEPRECATED("Use NSOpenGLView to provide OpenGL content in a Cocoa app.", macos(10.0,10.14));
+@property (nullable, weak) NSView *view NS_SWIFT_UI_ACTOR API_DEPRECATED("", macos(10.0,10.14));
+- (void)setView:(nullable NSView *)view NS_SWIFT_UI_ACTOR API_DEPRECATED("Use NSOpenGLView to provide OpenGL content in a Cocoa app.", macos(10.0,10.14));
 - (void)setFullScreen API_DEPRECATED("Use a fullscreen NSOpenGLView instead", macos(10.0,10.7));
 
 /* Deprecated in 10.7.  The -setOffScreen:width:height:rowbytes: API forces use of the software rasterizer, which is much slower than GPU rendering.  It is generally much better nowadays to use a normal pixel format with either an off-screen window or an FBO (GL_EXT_framebuffer_object), and then call glReadPixels() to read the rendered result back to CPU memory (if that's where it is needed).
@@ -199,7 +199,7 @@
 - (void)setOffScreen:(void *)baseaddr width:(GLsizei)width height:(GLsizei)height rowbytes:(GLint)rowbytes API_DEPRECATED("", macos(10.0,10.7));
 
 - (void)clearDrawable;
-- (void)update;
+- (void)update NS_SWIFT_UI_ACTOR;
 
 /* Flush draw buffer */
 - (void)flushBuffer;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPDFPanel.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPDFPanel.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPDFPanel.h	2021-03-16 09:54:07.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPDFPanel.h	2021-06-02 11:06:39.000000000 -0400
@@ -20,7 +20,7 @@
     NSPDFPanelRequestsParentDirectory = 1 << 24
 } API_AVAILABLE(macos(10.9));
 
-API_AVAILABLE(macos(10.9))
+API_AVAILABLE(macos(10.9)) NS_SWIFT_UI_ACTOR
 @interface NSPDFPanel : NSObject
 
 /* Create a new NSPDFPanel.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPageLayout.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPageLayout.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPageLayout.h	2021-03-16 09:54:09.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPageLayout.h	2021-06-02 11:06:40.000000000 -0400
@@ -14,6 +14,7 @@
 
 @class NSPrintInfo, NSView, NSViewController, NSWindow, NSWindowController;
 
+NS_SWIFT_UI_ACTOR
 @interface NSPageLayout : NSObject
 
 /* Create a new NSPageLayout.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSParagraphStyle.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSParagraphStyle.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSParagraphStyle.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSParagraphStyle.h	2021-06-02 11:06:50.000000000 -0400
@@ -90,6 +90,9 @@
 // Specifies the threshold for hyphenation.  Valid values lie between 0.0 and 1.0 inclusive.  Hyphenation will be attempted when the ratio of the text width as broken without hyphenation to the width of the line fragment is less than the hyphenation factor.  When this takes on its default value of 0.0, the layout manager's hyphenation factor is used instead.  When both are 0.0, hyphenation is disabled.
 @property (readonly) float hyphenationFactor;
 
+// A property controlling the hyphenation behavior for the paragraph associated with the paragraph style. The exact hyphenation logic is dynamically determined by the layout context such as language, platform, etc. When YES, it affects the return value from -hyphenationFactor when the property is set to 0.0.
+@property (readonly) BOOL usesDefaultHyphenation API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @property (readonly,copy) NSArray<NSTextTab *> *tabStops API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // An array of NSTextTabs. Contents should be ordered by location. The default value is an array of 12 left-aligned tabs at 28pt interval
 @property (readonly) CGFloat defaultTabInterval API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0)); // The default tab interval used for locations beyond the last element in tabStops
 
@@ -124,6 +127,7 @@
 @property CGFloat lineHeightMultiple;
 @property CGFloat paragraphSpacingBefore;
 @property float hyphenationFactor;
+@property (readwrite) BOOL usesDefaultHyphenation API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 @property (null_resettable, copy) NSArray<NSTextTab *> *tabStops API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0));
 @property CGFloat defaultTabInterval API_AVAILABLE(macos(10.0), ios(7.0), watchos(2.0), tvos(9.0));
 @property BOOL allowsDefaultTighteningForTruncation API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintOperation.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintOperation.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintOperation.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintOperation.h	2021-06-02 11:06:51.000000000 -0400
@@ -38,6 +38,7 @@
 */
 APPKIT_EXTERN NSExceptionName NSPrintOperationExistsException;
 
+NS_SWIFT_UI_ACTOR
 @interface NSPrintOperation : NSObject {
 }
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h	2021-03-16 09:54:16.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPrintPanel.h	2021-06-02 11:06:47.000000000 -0400
@@ -70,7 +70,7 @@
 
 @end
 
-
+NS_SWIFT_UI_ACTOR
 @interface NSPrintPanel : NSObject
 
 /* Create a new NSPrintPanel.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSResponder.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSResponder.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSResponder.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSResponder.h	2021-06-02 11:06:39.000000000 -0400
@@ -1,7 +1,7 @@
 /*
         NSResponder.h
         Application Kit
-        Copyright (c) 1994-2019, Apple Inc.
+        Copyright (c) 1994-2021, Apple Inc.
         All rights reserved.
 */
 
@@ -17,6 +17,7 @@
 
 @class NSError, NSEvent, NSMenu, NSUndoManager, NSWindow;
 
+NS_SWIFT_UI_ACTOR
 @interface NSResponder : NSObject <NSCoding>
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSavePanel.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSavePanel.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSavePanel.h	2021-03-16 09:54:11.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSavePanel.h	2021-06-02 11:06:43.000000000 -0400
@@ -212,7 +212,7 @@
  NSSavePanel: An array of NSStrings specifying the file types the user can save the file as. The file type can be a common file extension, or a UTI. A nil value indicates that any file type can be used. If the array is not nil and the array contains no items, an exception will be raised. If no extension is given by the user, the first item in the allowedFileTypes will be used as the extension for the save panel. If the user specifies a type not in the array, and 'allowsOtherFileTypes' is YES, they will be presented with another dialog when prompted to save. The default value is 'nil'.
  NSOpenPanel: On versions less than 10.6, this property is ignored. For applications that link against 10.6 and higher, this property will determine which files should be enabled in the open panel. Using the deprecated methods to show the open panel (the ones that take a "types:" parameter) will overwrite this value, and should not be used. The allowedFileTypes can be changed while the panel is running (ie: from an accessory view). The file type can be a common file extension, or a UTI. This is also known as the "enabled file types". A nil value indicates that all files should be enabled.
  */
-@property (nullable, copy) NSArray<NSString *> *allowedFileTypes API_DEPRECATED("Use -allowedContentTypes instead", macos(10.3,API_TO_BE_DEPRECATED));
+@property (nullable, copy) NSArray<NSString *> *allowedFileTypes API_DEPRECATED("Use -allowedContentTypes instead", macos(10.3,12.0));
 @end
 
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScreen.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScreen.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScreen.h	2021-03-16 09:54:10.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScreen.h	2021-06-02 11:06:41.000000000 -0400
@@ -7,6 +7,7 @@
 
 #import <Foundation/NSObject.h>
 #import <Foundation/NSArray.h>
+#import <Foundation/NSDate.h>
 #import <Foundation/NSDictionary.h>
 #import <Foundation/NSGeometry.h>
 #import <Foundation/NSNotification.h>
@@ -80,6 +81,39 @@
 @end
 
 
+// Variable Rate Refresh
+@interface NSScreen ()
+
+/** The maximum frames per second this screen supports.
+*/
+@property (readonly) NSInteger maximumFramesPerSecond API_AVAILABLE(macos(12.0));
+
+/** The minimum refresh interval this screen supports, in seconds.
+
+    This is the shortest amount of time a frame will be present on screen.
+    minimumRefreshInterval and maximumRefreshInterval will be the same for displays that do not support variable refresh rates.
+*/
+@property (readonly) NSTimeInterval minimumRefreshInterval API_AVAILABLE(macos(12.0));
+
+/** The maximum refresh interval this screen supports, in seconds.
+
+    minimumRefreshInterval and maximumRefreshInterval will be the same for displays that do not support variable refresh rates.
+*/
+@property (readonly) NSTimeInterval maximumRefreshInterval API_AVAILABLE(macos(12.0));
+
+/** The update granularity of the screen's current mode, in seconds.
+
+    The display will update at the next boundary defined by the granularity, after the minimum refresh interval has been reached. When 0, the display can update at any time between the minimum and maximum refresh rate intervals of the screen. Fixed refresh rate screen modes will return the refresh interval as the update granularity (e.g. 16.66ms for 60Hz refresh rates), meaning updates only occur at refresh rate boundaries.
+*/
+@property (readonly) NSTimeInterval displayUpdateGranularity API_AVAILABLE(macos(12.0));
+
+/** The time at which the last framebuffer update occurred on the display, in seconds since startup that the system has been awake.
+*/
+@property (readonly) NSTimeInterval lastDisplayUpdateTimestamp API_AVAILABLE(macos(12.0));
+
+@end
+
+
 @interface NSScreen (NSDeprecated)
 
 /*  This method is deprecated and should not be used by applications targeting Mac OS X 10.7 or later.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScroller.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScroller.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScroller.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScroller.h	2021-06-02 11:06:39.000000000 -0400
@@ -1,7 +1,7 @@
 /*
 	NSScroller.h
 	Application Kit
-	Copyright (c) 1994-2019, Apple Inc.
+	Copyright (c) 1994-2020, Apple Inc.
 	All rights reserved.
 */
 
@@ -14,8 +14,8 @@
 
 typedef NS_ENUM(NSUInteger, NSUsableScrollerParts) {
     NSNoScrollerParts			= 0,
-    NSOnlyScrollerArrows API_DEPRECATED("", macos(10.0,10.14)) = 1,
-    NSAllScrollerParts			= 2
+    NSOnlyScrollerArrows API_DEPRECATED("Scroller arrows are not used anymore.", macos(10.0,10.14)) = 1,
+    NSAllScrollerParts			= 2,
 };
 
 typedef NS_ENUM(NSUInteger, NSScrollerPart) {
@@ -23,20 +23,20 @@
     NSScrollerDecrementPage		= 1,
     NSScrollerKnob			= 2,
     NSScrollerIncrementPage		= 3,
-    NSScrollerDecrementLine API_DEPRECATED("", macos(10.0,10.14)) = 4,
-    NSScrollerIncrementLine API_DEPRECATED("", macos(10.0,10.14)) = 5,
-    NSScrollerKnobSlot			= 6
+    NSScrollerDecrementLine API_DEPRECATED("Scroller arrows are not used anymore.", macos(10.0,10.14)) = 4,
+    NSScrollerIncrementLine API_DEPRECATED("Scroller arrows are not used anymore.", macos(10.0,10.14)) = 5,
+    NSScrollerKnobSlot			= 6,
 };
 
 typedef NS_ENUM(NSInteger, NSScrollerStyle) {
     NSScrollerStyleLegacy       = 0,
-    NSScrollerStyleOverlay      = 1
+    NSScrollerStyleOverlay      = 1,
 } API_AVAILABLE(macos(10.7));
 
 typedef NS_ENUM(NSInteger, NSScrollerKnobStyle) {
-    NSScrollerKnobStyleDefault  = 0,    // dark with light border; good against any background
+    NSScrollerKnobStyleDefault  = 0,    // uses the default look for the appearance
     NSScrollerKnobStyleDark     = 1,    // dark; good against a light background
-    NSScrollerKnobStyleLight    = 2     // light; good against a dark background
+    NSScrollerKnobStyleLight    = 2,    // light; good against a dark background
 } API_AVAILABLE(macos(10.7));
 
 @interface NSScroller : NSControl
@@ -101,12 +101,12 @@
     NSScrollerArrowsMinEnd        = 1,    /* previously deprecated */
     NSScrollerArrowsDefaultSetting    = 0,
     NSScrollerArrowsNone               = 2
-} API_DEPRECATED("", macos(10.0,10.14));
+} API_DEPRECATED("Scroller arrows are not used anymore.", macos(10.0,10.14));
 
 typedef NS_ENUM(NSUInteger, NSScrollerArrow) {
     NSScrollerIncrementArrow        = 0,
     NSScrollerDecrementArrow        = 1
-} API_DEPRECATED("", macos(10.0,10.14));
+} API_DEPRECATED("Scroller arrows are not used anymore.", macos(10.0,10.14));
 
 @interface NSScroller(NSDeprecated)
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubber.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubber.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubber.h	2021-03-16 09:54:12.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubber.h	2021-06-02 11:06:44.000000000 -0400
@@ -67,7 +67,7 @@
  * @abstract @c NSScrubberSelectionStyle is an abstract class that provides decorative accessory views for selected and highlighted items within a NSScrubber control. Class properties provide convenient access to built-in styles. For a completely custom style, subclassers can override @c -makeSelectionView to create and configure arbitrary @c NSScrubberSelectionView subclasses.
  *
  */
-API_AVAILABLE(macos(10.12.2))
+API_AVAILABLE(macos(10.12.2)) NS_SWIFT_UI_ACTOR
 @interface NSScrubberSelectionStyle : NSObject <NSCoding>
 
 #pragma mark Built-in Styles
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubberLayout.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubberLayout.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubberLayout.h	2021-03-16 09:54:09.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSScrubberLayout.h	2021-06-02 11:06:40.000000000 -0400
@@ -38,7 +38,7 @@
  @class NSScrubberLayout
  @abstract @c NSScrubberLayout is an abstract class that describes the layout of items within a @c NSScrubber control.
  */
-API_AVAILABLE(macos(10.12.2))
+API_AVAILABLE(macos(10.12.2)) NS_SWIFT_UI_ACTOR
 @interface NSScrubberLayout : NSObject <NSCoding>
 
 #pragma mark Base Implementation
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchField.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchField.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchField.h	2021-03-16 09:54:12.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchField.h	2021-06-02 11:06:44.000000000 -0400
@@ -54,13 +54,13 @@
 @end
 
 @interface NSSearchField (NSSearchField_Deprecated)
-- (NSRect)rectForSearchTextWhenCentered:(BOOL)isCentered API_DEPRECATED_WITH_REPLACEMENT("searchTextBounds", macos(10.11, API_TO_BE_DEPRECATED));
+- (NSRect)rectForSearchTextWhenCentered:(BOOL)isCentered API_DEPRECATED_WITH_REPLACEMENT("searchTextBounds", macos(10.11, 12.0));
 
-- (NSRect)rectForSearchButtonWhenCentered:(BOOL)isCentered API_DEPRECATED_WITH_REPLACEMENT("searchButtonBounds", macos(10.11, API_TO_BE_DEPRECATED));
+- (NSRect)rectForSearchButtonWhenCentered:(BOOL)isCentered API_DEPRECATED_WITH_REPLACEMENT("searchButtonBounds", macos(10.11, 12.0));
 
-- (NSRect)rectForCancelButtonWhenCentered:(BOOL)isCentered API_DEPRECATED_WITH_REPLACEMENT("cancelButtonBounds", macos(10.11, API_TO_BE_DEPRECATED));
+- (NSRect)rectForCancelButtonWhenCentered:(BOOL)isCentered API_DEPRECATED_WITH_REPLACEMENT("cancelButtonBounds", macos(10.11, 12.0));
 
-@property BOOL centersPlaceholder API_DEPRECATED("The placeholder centering UI design is no longer available. Setting this property is no-op.", macos(10.11, API_TO_BE_DEPRECATED));
+@property BOOL centersPlaceholder API_DEPRECATED("The placeholder centering UI design is no longer available. Setting this property is no-op.", macos(10.11, 12.0));
 @end
 
 API_UNAVAILABLE_END
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchToolbarItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchToolbarItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchToolbarItem.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSearchToolbarItem.h	2021-06-02 11:06:50.000000000 -0400
@@ -13,6 +13,7 @@
 @class NSView;
 
 NS_ASSUME_NONNULL_BEGIN
+
 APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST
 
 // NSSearchToolbarItem provides the standard UI behavior for integrating a search field into the toolbar.
@@ -20,7 +21,7 @@
 @interface NSSearchToolbarItem : NSToolbarItem
 
 // An NSSearchField displayed in the toolbar item. While inside the toolbar item, the field properties and layout constraints are managed by the item. The field should be configured before assigned. The width constraint for the field could be updated after assigned. When set to nil, will reset to a search field with the default configuration.
-@property (strong) NSSearchField *searchField;
+@property (strong) NSSearchField *searchField API_UNAVAILABLE(macCatalyst);
 
 // The base view property is owned by the toolbar item and not available for customization.
 @property (nullable, strong) NSView *view NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSliderAccessory.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSliderAccessory.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSliderAccessory.h	2021-03-16 09:54:18.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSSliderAccessory.h	2021-06-02 11:06:49.000000000 -0400
@@ -16,7 +16,7 @@
 
 @class NSSlider, NSSliderAccessoryBehavior, NSImage;
 
-API_AVAILABLE(macos(10.12), ios(13.0))
+API_AVAILABLE(macos(10.12), ios(13.0)) NS_SWIFT_UI_ACTOR
 @interface NSSliderAccessory : NSObject <NSCoding>
 
 /// Creates an image-based accessory
@@ -39,7 +39,7 @@
 @end
 #endif
 
-API_AVAILABLE(macos(10.12), ios(13.0))
+API_AVAILABLE(macos(10.12), ios(13.0)) NS_SWIFT_UI_ACTOR
 @interface NSSliderAccessoryBehavior : NSObject <NSCoding, NSCopying>
 
 /// The behavior is automatically picked to be the system standard for the slider's current context, e.g. NSTouchBarItems have `.valueStep` behavior.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTableView.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTableView.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTableView.h	2021-03-16 09:54:12.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTableView.h	2021-06-02 11:06:43.000000000 -0400
@@ -32,7 +32,7 @@
      */
     NSTableViewNoColumnAutoresizing = 0,
     
-    /* Autoresize all columns by distributing equal shares of space simultaeously
+    /* Autoresize all columns by distributing equal shares of space simultaneously
      */
     NSTableViewUniformColumnAutoresizingStyle,
     
@@ -75,11 +75,14 @@
 } API_AVAILABLE(macos(10.7));
 
 typedef NS_ENUM(NSInteger, NSTableViewStyle) {
-    // Automatically infers the effectiveStyle from the table view hierarchy.
+    /* Automatically infers the effectiveStyle from the table view hierarchy.
+     */
     NSTableViewStyleAutomatic,
-    // Edge-to-edge style with standard content padding at the ends of each row. This content padding is constant and independent of intercellSpacing.
+    /* Edge-to-edge style with standard content padding at the ends of each row. This content padding is constant and independent of intercellSpacing.
+     */
     NSTableViewStyleFullWidth,
-    // Inset style with rounded corners selection
+    /* Inset style with rounded corners selection
+     */
     NSTableViewStyleInset,
     /* The source list style of NSTableView. Setting this style will have the side effect of setting the background color to "source list".
      Additionally in NSOutlineView, the following properties may change to get the standard "source list" look: indentationPerLevel, rowHeight and intercellSpacing. After setting the style it is possible to change any of the other properties as required.
@@ -87,7 +90,8 @@
      This replaces NSTableViewSelectionHighlightStyleSourceList which is to be deprecated.
      */
     NSTableViewStyleSourceList,
-    // A plain style. No insets, padding or any other kind of decoration applied to the row or its background. The cells are equally spaced in the row using intercellSpacing.width.
+    /* A plain style. No insets, padding or any other kind of decoration applied to the row or its background. The cells are equally spaced in the row using intercellSpacing.width.
+     */
     NSTableViewStylePlain
 } API_AVAILABLE(macos(11.0));
 
@@ -100,8 +104,9 @@
      */
     NSTableViewSelectionHighlightStyleRegular = 0,
     
-    // To be deprecated. See NSTableViewStyleSourceList.
-    NSTableViewSelectionHighlightStyleSourceList API_DEPRECATED("Set the NSTableView.style property to NSTableViewStyleSourceList instead.", macos(10.5, API_TO_BE_DEPRECATED)) = 1,
+    /* Deprecated. See NSTableViewStyleSourceList.
+     */
+    NSTableViewSelectionHighlightStyleSourceList API_DEPRECATED("Set the NSTableView.style property to NSTableViewStyleSourceList instead.", macos(10.5, 12.0)) = 1,
 };
 
 
@@ -150,7 +155,7 @@
  */
 @property (nullable, strong) NSTableHeaderView *headerView;
 
-/* Get and set the cornerView. The cornerView is the view that appears directly to the right of the headerView above the vertical NSScroller. The scroller must be present for the cornerView to be shown. Calling -setCornerView: may have the side effect of tiling the enclosingScrollView to accomodate the size change. The default value is an internal class that properly fills in the corner.
+/* Get and set the cornerView. The cornerView is the view that appears directly to the right of the headerView above the vertical NSScroller. The scroller must be present for the cornerView to be shown. Calling -setCornerView: may have the side effect of tiling the enclosingScrollView to accommodate the size change. The default value is an internal class that properly fills in the corner.
  */
 @property (nullable, strong) NSView *cornerView;
 
@@ -212,7 +217,7 @@
  */
 @property (readonly) NSInteger numberOfColumns;
 
-/* Returns the numberOfRows. It may call to the dataSource to aquire the count. numberOfRows will return 0 if there are no visible columns.
+/* Returns the numberOfRows. It may call to the dataSource to acquire the count. numberOfRows will return 0 if there are no visible columns.
  */
 @property (readonly) NSInteger numberOfRows;
 
@@ -367,10 +372,12 @@
 
 @property BOOL allowsTypeSelect API_AVAILABLE(macos(10.5));
 
-// The table view style. Defaults to NSTableViewStyleAutomatic
+/* The table view style. Defaults to NSTableViewStyleAutomatic
+ */
 @property NSTableViewStyle style API_AVAILABLE(macos(11.0));
 
-// The effective style when style is NSTableViewStyleAutomatic. Otherwise, it returns the same value as style.
+/* The effective style when style is NSTableViewStyleAutomatic. Otherwise, it returns the same value as style.
+ */
 @property (readonly) NSTableViewStyle effectiveStyle API_AVAILABLE(macos(11.0));
 
 /* Gets and sets the current selection highlight style. The default value is NSTableViewSelectionHighlightStyleRegular.
@@ -563,7 +570,6 @@
  */
 @property BOOL usesAutomaticRowHeights API_AVAILABLE(macos(10.13));
 
-
 @end
 
 #pragma mark -
@@ -640,7 +646,7 @@
 */
 - (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row;
 
-/* Optional - Return a set of new indexes to select when the user changes the selection with the keyboard or mouse. If implemented, this method will be called instead of tableView:shouldSelectRow:. This method may be called multiple times with one new index added to the existing selection to find out if a particular index can be selected when the user is extending the selection with the keyboard or mouse. Note that 'proposedSelectionIndexes' will contain the entire newly suggested selection, and you can return the exsiting selection to avoid changing the selection.
+/* Optional - Return a set of new indexes to select when the user changes the selection with the keyboard or mouse. If implemented, this method will be called instead of tableView:shouldSelectRow:. This method may be called multiple times with one new index added to the existing selection to find out if a particular index can be selected when the user is extending the selection with the keyboard or mouse. Note that 'proposedSelectionIndexes' will contain the entire newly suggested selection, and you can return the existing selection to avoid changing the selection.
 */
 - (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes API_AVAILABLE(macos(10.5));
 
@@ -651,7 +657,7 @@
 - (void)tableView:(NSTableView *)tableView didDragTableColumn:(NSTableColumn *)tableColumn;
 
 /* Optional - Variable Row Heights
-    Implement this method to support a table with varying row heights. The height returned by this method should not include intercell spacing. Returning a height of -1 will default to the rowHeight of the tableView for normal rows, and the system defined height for group rows. Performance Considerations: For large tables in particular, you should make sure that this method is efficient. NSTableView may cache the values this method returns, but this should NOT be depended on, as all values may not be cached. To signal a row height change, call -noteHeightOfRowsWithIndexesChanged:. For a given row, the same row height should always be returned until -noteHeightOfRowsWithIndexesChanged: is called, otherwise unpredicable results will happen. NSTableView automatically invalidates its entire row height cache in -reloadData, and -noteNumberOfRowsChanged.
+    Implement this method to support a table with varying row heights. The height returned by this method should not include intercell spacing. Returning a height of -1 will default to the rowHeight of the tableView for normal rows, and the system defined height for group rows. Performance Considerations: For large tables in particular, you should make sure that this method is efficient. NSTableView may cache the values this method returns, but this should NOT be depended on, as all values may not be cached. To signal a row height change, call -noteHeightOfRowsWithIndexesChanged:. For a given row, the same row height should always be returned until -noteHeightOfRowsWithIndexesChanged: is called, otherwise unpredictable results will happen. NSTableView automatically invalidates its entire row height cache in -reloadData, and -noteNumberOfRowsChanged.
 */
 - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row;
 
@@ -676,7 +682,7 @@
 - (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row API_AVAILABLE(macos(10.5));
 
 /* Optional - Autosizing table columns
- Implement this method if you want to control how wide a column is made when the user double clicks on the resize divider. By default, NSTableView iterates every row in the table, accesses a cell via preparedCellAtRow:column:, and requests the "cellSize" to find the appropriate largest width to use. For large row counts, a monte carlo simulation is done instead of interating every row. For performance and accurate results, it is recommended that this method is implemented when using large tables.
+ Implement this method if you want to control how wide a column is made when the user double clicks on the resize divider. By default, NSTableView iterates every row in the table, accesses a cell via preparedCellAtRow:column:, and requests the "cellSize" to find the appropriate largest width to use. For large row counts, a monte carlo simulation is done instead of iterating every row. For performance and accurate results, it is recommended that this method is implemented when using large tables.
  */
 - (CGFloat)tableView:(NSTableView *)tableView sizeToFitWidthOfColumn:(NSInteger)column API_AVAILABLE(macos(10.6));
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSText.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSText.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSText.h	2021-03-16 09:54:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSText.h	2021-06-02 11:06:50.000000000 -0400
@@ -9,36 +9,13 @@
 #import <AppKit/NSView.h>
 #import <AppKit/NSSpellProtocol.h>
 #import <AppKit/AppKitDefines.h>
+#import <AppKit/NSTextTypes.h>
 
 @class NSColor, NSFont, NSNotification;
 @protocol NSTextDelegate;
 
 NS_ASSUME_NONNULL_BEGIN
 
-#if !TARGET_OS_IPHONE
-
-/* Values for NSTextAlignment */
-typedef NS_ENUM(NSInteger, NSTextAlignment) {
-    NSTextAlignmentLeft      = 0,    // Visually left aligned
-#if TARGET_ABI_USES_IOS_VALUES
-    NSTextAlignmentCenter    = 1,    // Visually centered
-    NSTextAlignmentRight     = 2,    // Visually right aligned
-#else /* !TARGET_ABI_USES_IOS_VALUES */
-    NSTextAlignmentRight     = 1,    // Visually right aligned
-    NSTextAlignmentCenter    = 2,    // Visually centered
-#endif
-    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.
-    NSTextAlignmentNatural   = 4     // Indicates the default alignment for script
-} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0));
-
-/* Values for NSWritingDirection */
-typedef NS_ENUM(NSInteger, NSWritingDirection) {
-    NSWritingDirectionNatural       = -1,   // Determines direction using the Unicode Bidi Algorithm rules P2 and P3
-    NSWritingDirectionLeftToRight   = 0,    // Left to right writing direction
-    NSWritingDirectionRightToLeft   = 1     // Right to left writing direction
-} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0));
-#endif // !TARGET_OS_IPHONE
-
 APPKIT_API_UNAVAILABLE_BEGIN_MACCATALYST
 @interface NSText : NSView <NSChangeSpelling, NSIgnoreMisspelledWords>
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContainer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContainer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContainer.h	2021-03-16 09:54:10.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContainer.h	2021-06-02 11:06:41.000000000 -0400
@@ -11,6 +11,7 @@
 #import <AppKit/NSLayoutManager.h>
 
 @class NSBezierPath;
+@class NSTextLayoutManager;
 
 NS_ASSUME_NONNULL_BEGIN
 #if !TARGET_OS_IPHONE
@@ -32,6 +33,8 @@
 // This method should be used instead of the primitive -setLayoutManager: if you need to replace a container's layoutManager with a new one leaving the rest of the web intact.  All the NSTextContainers on the old NSLayoutManager get transferred to the new one.  This method deals with all the work of making sure the containers don't get deallocated and removing the old layoutManager from the text storage and replacing it with the new one.
 - (void)replaceLayoutManager:(NSLayoutManager *)newLayoutManager API_AVAILABLE(macos(10.0), ios(9.0), tvos(9.0));
 
+// Returns NSTextLayoutManager owning the text container. When non-nil, -layoutManager should be nil.
+@property (weak, nullable, readonly) NSTextLayoutManager *textLayoutManager API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 /************************* Container shape properties *************************/
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContentManager.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContentManager.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContentManager.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextContentManager.h	2021-06-02 11:06:51.000000000 -0400
@@ -0,0 +1,150 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextContentManager.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextContentManager.h
+//  Text Kit
+//
+//  Copyright (c) 2018-2021, Apple Inc. All rights reserved.
+//
+
+#import <Foundation/NSArray.h>
+#import <Foundation/NSNotification.h>
+#import <AppKit/AppKitDefines.h>
+
+@class NSTextRange;
+@class NSTextElement;
+@class NSTextParagraph;
+@class NSTextLayoutManager;
+@class NSTextStorage;
+@class NSTextContentStorage;
+@protocol NSTextLocation;
+@protocol NSTextContentManagerDelegate;
+@protocol NSTextStorageObserving;
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma mark NSTextElementProvider
+typedef NS_OPTIONS(NSUInteger, NSTextElementProviderEnumerationOptions) {
+  NSTextElementProviderEnumerationOptionsNone = 0,
+  NSTextElementProviderEnumerationOptionsReverse = (1 << 0)
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+// NSTextElementProvider is a protocol conformed by NSTextContentManager and its concrete subclasses. It defines the base interface for interacting with a custom text document content type.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextElementProvider <NSObject>
+// Declares the starting and ending locations for the document. The subclass could use its own implementation of a location object conforming to NSTextRange.
+@property (strong, readonly) NSTextRange *documentRange;
+
+// Enumerates the text elements starting at textLocation. If textLocation=nil, it assumes self.documentRange.location for forward enumeration; uses self.documentRange.endLocation for reverse enumeration. When enumerating backward, it starts with the element preceding the one containing textLocation. If enumerated at least one element, it returns the edge of the enumerated range. Note that the enumerated range might not match the range of the last element returned. It enumerates the elements in the sequence, but it can skip a range (it can limit the maximum number of text elements enumerated for a single invocation or hide some elements from the layout). Returning NO from block breaks out of the enumeration.
+- (nullable id <NSTextLocation>)enumerateTextElementsFromLocation:(nullable id <NSTextLocation>)textLocation options:(NSTextElementProviderEnumerationOptions)options usingBlock:(BOOL (NS_NOESCAPE ^)(NSTextElement *element))block;
+
+// Replaces the characters specified by range with textElements. If the edges of range is not at existing element range boundaries, it either split the element if it allows the operation (i.e. NSTextParagraph) or adjust the replacement range. This method is intended to be used only by NSTextLayoutManager.
+- (void)replaceContentsInRange:(NSTextRange *)range withTextElements:(nullable NSArray<NSTextElement *> *)textElements;
+
+//  Synchronizes changes to the backing store. If completionHandler=nil, performs the operation synchronously. completionHandler gets passed error if failed. It should block (or fail if synchronous) when there is an active transaction.
+- (void)synchronizeToBackingStore:(nullable void (^)(NSError * _Nullable error))completionHandler;
+
+// Returns a new location from location with offset. The offset value could be positive or negative indicating the logical direction. Could return nil when the inputs don't produce any legal location (i.e. out of bounds index).
+- (nullable id <NSTextLocation>)locationFromLocation:(id <NSTextLocation>)location withOffset:(NSInteger)offset;
+
+// Returns the offset between from and to. The return value could be positive or negative. Could return NSNotFound when the offset cannot be represented in an integer value (i.e. locations are not in the same document).
+- (NSInteger)offsetFromLocation:(id <NSTextLocation>)from toLocation:(id <NSTextLocation>)to;
+
+@optional
+// Should be implemented if the location backing store requires manual adjustment after editing. When textRange is intersecting or following the current edited range, the method returns the range adjusted for the modification in the editing session. Returns nil, when no adjustment necessary. inEditingTextSelection indicates if textRange is for the text selection associated with the edit session.
+- (nullable NSTextRange *)adjustedRangeFromRange:(NSTextRange *)textRange inEditingTextSelection:(BOOL)inEditingTextSelection;
+@end
+
+#pragma mark NSTextContentManager
+// NSTextContentManager is an abstract class defining the interface for managing the text document contents and the default implementation. The concrete subclass overrides NSTextElementProvider for managing the content backing store. It is the root object strongly referencing the rest of objects in the TextKit network via an array of NSTextLayoutManager. Also, it manages the editing transaction by tracking the active NSTextLayoutManager focused to be editing.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextContentManager : NSObject <NSTextElementProvider, NSSecureCoding>
+#pragma mark Initialization
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
+
+#pragma mark Basic properties
+@property (weak, nullable) id <NSTextContentManagerDelegate> delegate;
+
+#pragma mark NSTextLayoutManager management
+// An array of NSTextLayoutManager. KVO-compliant
+@property (copy, readonly) NSArray<NSTextLayoutManager *> *textLayoutManagers;
+
+- (void)addTextLayoutManager:(NSTextLayoutManager *)textLayoutManager;
+- (void)removeTextLayoutManager:(NSTextLayoutManager *)textLayoutManager;
+
+// The primary NSTextLayoutManager interacting with the user allowing to edit. Setting an NSTextLayoutManager not in textLayoutManagers will reset to nil. It automatically synchronizes pending edits before switching to a new primary object. The operation is synchronous. KVO-compliant
+@property (nullable, strong) NSTextLayoutManager *primaryTextLayoutManager;
+
+//  Synchronizes changes to all non-primary text layout managers. If completionHandler=nil, performs the operation synchronously. completionHandler gets passed error if failed. It should block (or fail if synchronous) when there is an active transaction.
+- (void)synchronizeTextLayoutManagers:(nullable void (^)(NSError * _Nullable error))completionHandler;
+
+#pragma mark Element access
+// Returns an array of NSTextElement intersecting the specified range in sequence. It can return a set of elements not filling the entire range specified if the entire range is not synchronously available. Uses -enumerateTextElementsFromLocation:options:usingBlocK: to fill the array.
+- (NSArray<NSTextElement *> *)textElementsForRange:(NSTextRange *)range;
+
+#pragma mark Transaction
+// When YES, there is an active editing transaction from primaryTextLayoutManager. the synchronization operations to non-primary text layout managers and the backing store block (or fails when synchronous) while this property is YES. Non-primary text layout managers should avoid accessing the elements while this is YES. KVO-compliant
+@property (readonly) BOOL hasEditingTransaction;
+
+// Invoked by primaryTextLayoutManager controlling the active editing transaction. Can be nested. The outer most transaction toggles hasEditingTransaction and sends synchronization messages if enabled after invoking transaction.
+- (void)performEditingTransactionWithBlock:(void (NS_NOESCAPE ^) (void))transaction;
+
+// Records information about an edit action to the transaction. originalTextRange is the range edited before the action, and newTextRange is the corresponding range after the action. The concrete subclass should invoke this method for each edit action.
+- (void)recordEditActionInRange:(NSTextRange *)originalTextRange newTextRange:(NSTextRange *)newTextRange;
+
+// Automatically synchronizes all text layout managers when hasEditingTransaction becoming NO. YES by default.
+@property BOOL synchronizesTextLayoutManagersAutomatically;
+
+// Automatically synchronizes the backing store when hasEditingTransaction becoming NO. NO by default.
+@property BOOL synchronizesToBackingStoreAutomatically;
+@end
+
+#pragma mark NSTextContentManagerDelegate
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextContentManagerDelegate <NSObject>
+@optional
+// Returns a custom element for location. When non-nil, textContentManager uses the element instead of creating based on its standard mapping logic.
+- (nullable NSTextElement *)textContentManager:(NSTextContentManager *)textContentManager textElementAtLocation:(id <NSTextLocation>)location;
+
+// Gives delegate a chance to validate textElement right before block() invocation with -enumerateTextElementsFromLocation:options:usingBlock:. Returning NO indicates textElement to be skipped from the enumeration.
+- (BOOL)textContentManager:(NSTextContentManager *)textContentManager shouldEnumerateTextElement:(NSTextElement *)textElement withOptions:(NSTextElementProviderEnumerationOptions)options;
+@end
+
+#pragma mark NSTextContentStorageDelegate
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextContentStorageDelegate <NSTextContentManagerDelegate>
+@optional
+// Returns a custom NSTextParagraph for range in NSTextContentStorage.attributedString. When non-nil, textContentStorage uses the text paragraph instead of creating the standard NSTextParagraph with the attributed substring in range. The attributed string for a custom text paragraph must have range.length.
+- (nullable NSTextParagraph *)textContentStorage:(NSTextContentStorage *)textContentManager textParagraphWithRange:(NSRange)range;
+@end
+
+#pragma mark NSTextContentStorage
+// NSTextContentStorage is a concrete subclass of NSTextContentManager providing support for NSAttributedString backing-store. It also implements NSTextStorageObserving participating as a client of NSTextStorage. The facility only supports a single NSTextContentStorage associated with a text storage. When -textStorage!=nil, -attributedString is ignored. By default, NSTextContentStorage is initialized with NSTextStorage as the backing-store.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextContentStorage : NSTextContentManager <NSTextStorageObserving>
+#pragma mark Basic properties
+@property (weak, nullable) id <NSTextContentStorageDelegate> delegate;
+
+#pragma mark Document contents
+// The document contents. KVO-compliant
+@property (nullable, copy) NSAttributedString *attributedString;
+
+#pragma mark NSAttributedString utils
+// Returns a new attributed string for textElement. Returns if textElement cannot be mapped to NSAttributedString.
+- (nullable NSAttributedString *)attributedStringForTextElement:(NSTextElement *)textElement;
+
+// Returns NSTextElement corresponding to attributedString. Returns nil when attributedString contains attributes not mappable to NSTextElement.
+- (nullable NSTextElement *)textElementForAttributedString:(NSAttributedString *)attributedString;
+@end
+
+// Posted by NSTextContentStorage when a text attribute unsupported by NSTextContentStorage is added to the underlying text storage.
+APPKIT_EXTERN NSNotificationName NSTextContentStorageUnsupportedAttributeAddedNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextContentManager.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextElement.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextElement.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextElement.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextElement.h	2021-06-02 11:06:40.000000000 -0400
@@ -0,0 +1,52 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextElement.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextElement.h
+//  Text Kit
+//
+//  Copyright (c) 2018-2021, Apple Inc. All rights reserved.
+//
+
+
+#import <Foundation/NSObject.h>
+
+@class NSTextRange;
+@class NSTextContentManager;
+
+NS_ASSUME_NONNULL_BEGIN
+
+// NSTextElement is an abstract base class for representing the smallest text layout unit typically paragraphs, tables, or attachments. A text element is associated with an NSTextContentManager.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextElement : NSObject
+#pragma mark Initialization
+- (instancetype)initWithTextContentManager:(nullable NSTextContentManager *)textContentManager NS_DESIGNATED_INITIALIZER;
+
+#pragma mark Properties
+// Returns the owner NSTextContentManager. A text element can migrate between text content managers.
+@property (nullable, weak) NSTextContentManager *textContentManager;
+
+// Represents the range of the element inside the document.
+@property (nullable, strong) NSTextRange *elementRange;
+@end
+
+#pragma mark NSTextParagraph
+// NSTextParagraph represents a single paragraph backed by NSAttributedString as the contents.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextParagraph : NSTextElement
+#pragma mark Initialization
+- (instancetype)initWithAttributedString:(nullable NSAttributedString *)attributedString NS_DESIGNATED_INITIALIZER;
+
+#pragma mark Contents
+@property (copy, readonly) NSAttributedString *attributedString;
+
+// The paragraph ranges are derived from elementRange and attributedString.
+@property (nullable, strong, readonly) NSTextRange *paragraphContentRange;
+@property (nullable, strong, readonly) NSTextRange *paragraphSeparatorRange;
+@end
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextElement.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutFragment.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutFragment.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutFragment.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutFragment.h	2021-06-02 11:06:41.000000000 -0400
@@ -0,0 +1,90 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextLayoutFragment.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextLayoutFragment.h
+//  Text Kit
+//
+//  Copyright (c) 2017-2021, Apple Inc. All rights reserved.
+//
+
+#import <Foundation/NSArray.h>
+#import <CoreGraphics/CoreGraphics.h>
+
+@class NSTextLayoutManager;
+@class NSTextElement;
+@class NSTextRange;
+@class NSTextParagraph;
+@class NSTextLineFragment;
+@class NSOperationQueue;
+@class NSTextAttachmentViewProvider;
+@protocol NSTextLocation;
+
+NS_ASSUME_NONNULL_BEGIN
+
+// NSTextLayoutFragment represents the layout fragment typically corresponding to a rendering surface such as CALayer or UIView/NSView subclasses.
+
+typedef NS_OPTIONS(NSUInteger, NSTextLayoutFragmentEnumerationOptions) {
+  NSTextLayoutFragmentEnumerationOptionsNone = 0,
+  NSTextLayoutFragmentEnumerationOptionsReverse = (1 << 0),
+  NSTextLayoutFragmentEnumerationOptionsEstimatesSize = (1 << 1), // When enumerating, the layout fragments will be asked to estimate their size.
+  NSTextLayoutFragmentEnumerationOptionsEnsuresLayout = (1 << 2), // When enumerating, the layout fragments will be asked to layout.
+  NSTextLayoutFragmentEnumerationOptionsEnsuresExtraLineFragment = (1 << 3), // It synthesizes the extra line fragment when necessary.
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+typedef NS_ENUM(NSUInteger, NSTextLayoutFragmentState) {
+  NSTextLayoutFragmentStateNone = 0, // No layout information
+  NSTextLayoutFragmentStateEstimatedUsageBounds = 1, // When associated with NSTextLayoutManager, filled with an estimated rect if no layout
+  NSTextLayoutFragmentStateCalculatedUsageBounds = 2, // layout fragment measurements available without textLineFragments
+  NSTextLayoutFragmentStateLayoutAvailable = 3 // textLineFragments and layout fragment measurements available
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextLayoutFragment : NSObject <NSSecureCoding>
+#pragma mark Initialization
+- (instancetype)initWithTextElement:(NSTextElement *)textElement range:(nullable NSTextRange *)rangeInElement NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+#pragma mark Properties
+@property (nullable, weak, readonly) NSTextLayoutManager *textLayoutManager;
+
+#pragma mark Contents
+// The parent text element
+@property (weak, readonly) NSTextElement *textElement;
+
+// range inside textElement relative to the document origin
+@property (strong, readonly) NSTextRange *rangeInElement;
+
+#pragma mark Layout
+// An array of NSTextLineFragments. Valid when NSTextLayoutFragmentStateLayoutAvailable. KVO-compliant
+@property (copy, readonly) NSArray<NSTextLineFragment *> *textLineFragments;
+
+// When non-nil, the layout operation is dispatched to the queue asynchronously.
+@property (nullable, strong) NSOperationQueue *layoutQueue;
+
+// The layout information state. KVO-compliant
+@property (readonly) NSTextLayoutFragmentState state;
+
+// Invalidates any layout information associated with the receiver
+- (void)invalidateLayout;
+
+#pragma mark Layout information
+// The rect for tiling the layout fragment inside the target layout coordinate system typically in an NSTextContainer.
+@property (readonly) CGRect layoutFragmentFrame;
+
+// The bounds defining the area required for rendering the contents. The coordinate system is vertically flipped from the layoutFragmentFrame origin ({0,0} is at the upper left corner). The size should be larger than layoutFragmentFrame.size. The origin could be in the negative coordinate since the rendering could be stretched out of layoutFragmentFrame. Only valid when state > NSTextLayoutFragmentStateEstimatedUsageBounds.
+@property (readonly) CGRect renderingSurfaceBounds;
+
+#pragma mark Rendering
+// Renders the visual representation of this element in the specified graphics context.
+- (void)drawAtPoint:(CGPoint)renderingOrigin inContext:(CGContextRef)ctx;
+
+@end
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextLayoutFragment.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutManager.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutManager.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutManager.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLayoutManager.h	2021-06-02 11:06:39.000000000 -0400
@@ -0,0 +1,172 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextLayoutManager.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextLayoutManager.h
+//  Text Kit
+//
+//  Copyright (c) 2017-2021, Apple Inc. All rights reserved.
+//
+
+
+#import <Foundation/NSAttributedString.h>
+#import <CoreGraphics/CGGeometry.h>
+#import <AppKit/NSTextLayoutFragment.h>
+
+@class NSTextRange;
+@class NSTextContentManager;
+@class NSTextElement;
+@class NSTextContainer;
+@class NSTextSelection;
+@class NSTextSelectionNavigation;
+@class NSTextViewportLayoutController;
+@protocol NSTextLocation;
+@protocol NSTextLayoutManagerDelegate;
+@protocol NSTextSelectionDataSource;
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, NSTextLayoutManagerSegmentType) {
+    NSTextLayoutManagerSegmentTypeStandard = 0, // The standard segment matching the typographic bounds of range.
+    NSTextLayoutManagerSegmentTypeSelection = 1, // The segment behavior suitable for the selection rendering. Extends the last segment in a line fragment to the trailing edge if continuing to the next line.
+    NSTextLayoutManagerSegmentTypeHighlight = 2, // The segment behavior suitable for highlighting.
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+typedef NS_OPTIONS(NSUInteger, NSTextLayoutManagerSegmentOptions) {
+    NSTextLayoutManagerSegmentOptionsNone = 0,
+    NSTextLayoutManagerSegmentOptionsRangeNotRequired = (1 << 0), // Does not allocate and pass to the enumerator
+    NSTextLayoutManagerSegmentOptionsMiddleFragmentsExcluded = (1 << 1), // Only enumerates segments in the first and last line fragments.
+    NSTextLayoutManagerSegmentOptionsHeadSegmentExtended = (1 << 2), // When specified, the segment is extended to the head edge
+    NSTextLayoutManagerSegmentOptionsTailSegmentExtended = (1 << 3), // When specified, the segment is extended to the tail edge.
+    NSTextLayoutManagerSegmentOptionsUpstreamAffinity = (1 << 4), // When specified, the segment is placed based on the upstream affinity for an empty range.
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+// NSTextLayoutManager is the center piece of the TextKit object network maintaining the layout geometry via an array of NSTextContainer and layout results with NSTextLayoutFragment associated with NSTextElement vended from the owner NSTextContentManager.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextLayoutManager : NSObject <NSSecureCoding, NSTextSelectionDataSource>
+#pragma mark Initialization
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
+
+#pragma mark Basic properties
+@property (nullable, weak) id <NSTextLayoutManagerDelegate> delegate;
+
+// If YES, uses the leading as specified by the font. However, this is not appropriate for most UI text. YES by default.
+@property BOOL usesFontLeading;
+
+// When YES, enables internal security analysis for malicious inputs and activates defensive behaviors. By enabling this functionality, it's possible certain text such as a very long paragraph might result in unexpected layout. NO by default.
+@property BOOL limitsLayoutForSuspiciousContents;
+
+// When YES, NSTextLayoutManager will attempt to hyphenate when wrapping lines. May be overridden on a per-paragraph basis by the NSParagraphStyle's usesDefaultHyphenation. The receiver makes the best effort to decide the exact logic including the hyphenation factor based on the context. The default value is NO. Can be overridden by the preference key @"NSUsesDefaultHyphenation".
+@property BOOL usesHyphenation;
+
+#pragma mark NSTextContentManager interface
+// Pointing to the NSTextContentManager object strongly referencing the text layout manager.
+@property (nullable, weak, readonly) NSTextContentManager *textContentManager;
+
+// This method should be used in order to replace an NSTextContentManager with a new one, leaving all related objects intact.  This method makes sure the NSTextLayoutManager doesn't get deallocated while migrating to the new manager.
+- (void)replaceTextContentManager:(NSTextContentManager *)textContentManager;
+
+#pragma mark NSTextContainer interface
+// The text container object providing geometric information for the layout destination. If isSimpleRectangularTextContainer=NO, NSTextLayoutManager always fill from the top instead of allowing non-contiguous layout support.
+@property (nullable, strong, readwrite) NSTextContainer *textContainer;
+
+// The usage bounds for textContainer. KVO-compliant. Views can observe this property in order to trigger a resize operation. For example, UIView/NSView should call setNeedsUpdateConstraints() when the usage bounds changes.
+@property (readonly) CGRect usageBoundsForTextContainer;
+
+#pragma mark Layout
+// Returns NSTextViewportLayoutController associated with textContainer.
+@property (readonly, strong) NSTextViewportLayoutController *textViewportLayoutController;
+
+// If non-nil, it performs layout in the specified queue until estimatedUsageBounds=NO.
+@property (nullable, strong) NSOperationQueue *layoutQueue;
+
+// Performs the layout for textRange.
+- (void)ensureLayoutForRange:(NSTextRange *)range;
+
+// Performs the layout for filling bounds inside the last text container.
+- (void)ensureLayoutForBounds:(CGRect)bounds;
+
+// Invalidates layout information for textRange
+- (void)invalidateLayoutForRange:(NSTextRange *)range;
+
+// Returns the text layout fragment containing position inside the coordinate system for textContainer.
+- (nullable NSTextLayoutFragment *)textLayoutFragmentForPosition:(CGPoint)position;
+
+// Returns the text layout fragment containing the document location, location.
+- (nullable NSTextLayoutFragment *)textLayoutFragmentForLocation:(id <NSTextLocation>)location;
+
+// Enumerates the text layout fragments starting at textLocation. If textLocation=nil, it assumes self.textContentManager.documentRange.location; uses self.documentRange.endLocation for reverse enumeration. When enumerating backward, it starts with the fragment preceding the one containing textLocation.  If enumerated at least one fragment, it returns the edge of the enumerated range. Note that the enumerated range might not match the range of the last element returned. It enumerates the elements in the sequence, but it can skip a range (it can limit the maximum number of text elements enumerated for a single invocation or hide some elements from the layout). Returning NO from block breaks out of the enumeration.
+- (nullable id <NSTextLocation>)enumerateTextLayoutFragmentsFromLocation:(nullable id <NSTextLocation>)location options:(NSTextLayoutFragmentEnumerationOptions)options usingBlock:(BOOL (^)(NSTextLayoutFragment *layoutFragment))block;
+
+#pragma mark Text Selection
+// An array of NSTextSelections associated by the text layout manager. Each NSTextSelection represents an insertion point. The selection state is shared among all view ports connected to the text layout manager via text containers.
+@property (strong) NSArray<NSTextSelection *> *textSelections;
+
+// Returns an NSTextSelectionNavigation configured to have the text layout manager as NSTextSelectionDataSource
+@property (strong) NSTextSelectionNavigation *textSelectionNavigation;
+
+#pragma mark Rendering Attributes
+// Rendering attributes overrides the document text attributes stored in NSTextParagraphs supplied by NSTextContentManager. NSTextLayoutFragment associated with a text paragraph applies the overriding attributes before executing layout. Specifying NSNull to an attribute indicates removing it from the document attributes. Rendering attributes are invalidated upon re-layout of the text layout fragment that they belong to.
+
+// Enumerates the rendering attributes from location. It enumerates only ranges with rendering attributes specified. Returning NO from block breaks out of the enumeration.
+- (void)enumerateRenderingAttributesFromLocation:(id <NSTextLocation> )location reverse:(BOOL)reverse usingBlock:(BOOL (NS_NOESCAPE ^)(NSTextLayoutManager *textLayoutManager, NSDictionary<NSAttributedStringKey, id> *attributes, NSTextRange *textRange))block;
+
+// Sets the rendering attributes.
+- (void)setRenderingAttributes:(NSDictionary<NSAttributedStringKey, id> *)renderingAttributes forTextRange:(NSTextRange *)textRange;
+
+// Sets the rendering attribute. Passing nil value indicates overriding the specified attribute by removing from the final attributes passed to the layout and rendering engine. This is a convenience over -setRenderingAttributes:forTextRange:.
+- (void)addRenderingAttribute:(NSAttributedStringKey)renderingAttribute value:(nullable id)value forTextRange:(NSTextRange *)textRange;
+
+// Removes attribute from textRange.  This is a convenience over -setRenderingAttributes:forTextRange:.
+- (void)removeRenderingAttribute:(NSAttributedStringKey)renderingAttribute forTextRange:(NSTextRange *)textRange;
+
+// Invalidates the rendering attributes in textRange. Enumerating rendering attributes will skip the invalidated range.
+- (void)invalidateRenderingAttributesForTextRange:(NSTextRange *)textRange;
+
+// A callback block invoked whenever NSTextLayoutManager needs to validate the rendering attributes for the range. The validator should use -setRenderingAttributes:forTextRange: to fill the rendering attributes appropriate for the range inside textLayoutFragment.
+@property (nullable, copy) void (^renderingAttributesValidator)(NSTextLayoutManager *textLayoutManager, NSTextLayoutFragment *textLayoutFragment);
+
+#pragma mark Link Attributes
+// The default set of attributes for rendering NSLinkAttributeName. The base NSTextLayoutManager class returns with NSUnderlineStyleSingle for NSUnderlineStyleAttributeName and the platform link color for NSForegroundColorAttributeName. The platform color for macOS is +linkColor. Other platforms uses +blueColor.
+@property (class, readonly) NSDictionary<NSAttributedStringKey, id> *linkRenderingAttributes;
+
+// Returns a dictionary of rendering attributes for rendering NSLinkAttributeName. Just as other rendering attributes, specifying NSNull removes the attribute from the final attributes used for rendering. It has priority over the general rendering attributes.
+- (NSDictionary<NSAttributedStringKey, id> *)renderingAttributesForLink:(id)link atLocation:(id <NSTextLocation>)location;
+
+#pragma mark Text Segments
+// Enumerates text segments of type in textRange. A text segment is both logically and visually contiguous portion of the text content inside a line fragment. It can be defined with a single text range. The segments are enumerated visually from left to right. Returning NO from block breaks out of the enumeration.
+- (void)enumerateTextSegmentsInRange:(NSTextRange *)textRange type:(NSTextLayoutManagerSegmentType)type options:(NSTextLayoutManagerSegmentOptions)options usingBlock:(BOOL (NS_NOESCAPE ^)(NSTextRange * _Nullable textSegmentRange, CGRect textSegmentFrame, CGFloat baselinePosition, NSTextContainer *textContainer))block;
+
+#pragma mark Editing
+- (void)replaceContentsInRange:(NSTextRange *)range withTextElements:(NSArray<NSTextElement *> *)textElements;
+- (void)replaceContentsInRange:(NSTextRange *)range withAttributedString:(NSAttributedString *)attributedString;
+@end
+
+#pragma mark NSTextLayoutManagerDelegate
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextLayoutManagerDelegate <NSObject>
+@optional
+// NSTextContainer management
+// Returns the next text container that will be added to textContainers. If this method returns nil, templateTextContainer will be consulted next.
+- (NSTextContainer *)textLayoutManager:(NSTextLayoutManager *)textLayoutManager textContainerForLocation:(id <NSTextLocation>)location;
+
+// NSTextLayoutFragment management
+// Returns NSTextLayoutFragment for location in textElement. NSTextLayoutManagerDelegate could provide an NSTextLayoutFragment specialized for an NSTextElement subclass targeted for the rendering surface.
+- (NSTextLayoutFragment *)textLayoutManager:(NSTextLayoutManager *)textLayoutManager textLayoutFragmentForLocation:(id <NSTextLocation>)location inTextElement:(NSTextElement *)textElement;
+
+// Layout behavior
+// Invoked while determining the soft line break point.  When hyphenating=NO, NSTextLayoutManager tries to find the next line break opportunity before location. When hyphenating=YES, it is an auto-hyphenation point.
+- (BOOL)textLayoutManager:(NSTextLayoutManager *)textLayoutManager shouldBreakLineBeforeLocation:(id <NSTextLocation>)location hyphenating:(BOOL)hyphenating;
+
+// Rendering attributes
+// Returns a dictionary of rendering attributes for rendering NSLinkAttributeName. Just as other rendering attributes, specifying NSNull removes the attribute from the final attributes used for rendering. It has priority over the general rendering attributes.
+- (nullable NSDictionary<NSAttributedStringKey, id> *)textLayoutManager:(NSTextLayoutManager *)textLayoutManager renderingAttributesForLink:(id)link atLocation:(id <NSTextLocation>)location defaultAttributes:(NSDictionary<NSAttributedStringKey, id> *)renderingAttributes;
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextLayoutManager.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLineFragment.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLineFragment.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLineFragment.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextLineFragment.h	2021-06-02 11:06:46.000000000 -0400
@@ -0,0 +1,61 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextLineFragment.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextLineFragment.h
+//  Text Kit
+//
+//  Copyright (c) 2017-2021, Apple Inc. All rights reserved.
+//
+
+#import <Foundation/NSArray.h>
+#import <Foundation/NSAttributedString.h>
+#import <CoreGraphics/CoreGraphics.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma mark NSTextLineFragment
+// NSTextLineFragment represents a single textual layout and rendering unit inside NSTextLayoutFragment.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextLineFragment : NSObject <NSSecureCoding>
+#pragma mark Initialization
+- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString range:(NSRange)range NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithString:(NSString *)string attributes:(NSDictionary<NSAttributedStringKey, id> *)attributes range:(NSRange)range;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+#pragma mark Basic properties
+// The source attributed string
+@property (readonly, copy) NSAttributedString *attributedString;
+
+// The string range for the source attributed string corresponding to this line fragment
+@property (readonly) NSRange characterRange;
+
+#pragma mark Typographic bounds
+// The typographic bounds specifying the dimensions of the line fragment for laying out line fragments to each other. The origin value is offset from the beginning of the line fragment group belonging to the parent layout fragment.
+@property (readonly) CGRect typographicBounds;
+
+#pragma mark Rendering
+// Rendering origin for the left most glyph in the line fragment coordinate system
+@property (readonly) CGPoint glyphOrigin;
+
+// Renders the line fragment contents at the rendering origin. The origin can be specified as (NSMinX(typographicBounds) + glyphOrigin.x, NSMinY(typographicBounds) + glyphOrigin.y) relative to the line fragment group coordinate system
+- (void)drawAtPoint:(CGPoint)point inContext:(CGContextRef)context;
+
+#pragma mark Character and point mappings
+// The location of the character at the specified index. It is on the upstream edge of the glyph. It is in the coordinate system relative to the line fragment origin
+- (CGPoint)locationForCharacterAtIndex:(NSInteger)index;
+
+// The character index for point inside the line fragment coordinate system. The fraction of distance is from the upstream edge
+- (NSInteger)characterIndexForPoint:(CGPoint)point fractionOfDistanceThroughGlyph:(nullable CGFloat *)partialFraction;
+
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextLineFragment.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextRange.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextRange.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextRange.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextRange.h	2021-06-02 11:06:40.000000000 -0400
@@ -0,0 +1,63 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextRange.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextRange.h
+//  Text Kit
+//
+//  Copyright (c) 2018-2021, Apple Inc. All rights reserved.
+//
+
+#import <Foundation/NSObject.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma mark NSTextLocation
+// NSTextLocation represents an abstract location inside document contents. A concrete class conforming to the protocol should be associated with a particular document backing store type. The interpretation of a location in enumeration operations is depending on the logical direction. When enumerating forward, it should start with the item containing the location. The enumeration should start with an item preceding the location for reverse operations.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos) NS_PROTOCOL_REQUIRES_EXPLICIT_IMPLEMENTATION
+@protocol NSTextLocation <NSObject>
+
+// Compares and returns the logical ordering to location
+- (NSComparisonResult)compare:(id <NSTextLocation>)location API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+@end
+
+#pragma mark NSTextRange
+// NSTextRange represents a contiguous range between two locations inside document contents. It consists of the starting location and terminating location. They are the two basic properties, location and endLocation, respectively. The terminating location, endLocation, is directly following the last location in the range. So, a location is contained in a range if (range.location <= location) && (location < range.endLocation).
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextRange : NSObject
+#pragma mark Initialization
+// Returns an empty range when endLocation=nil
+- (nullable instancetype)initWithLocation:(id <NSTextLocation>)location endLocation:(nullable id <NSTextLocation>)endLocation NS_DESIGNATED_INITIALIZER;
+- (instancetype)initWithLocation:(id <NSTextLocation>)location;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+#pragma mark Basic properties
+// An empty range when location == endLocation
+@property (readonly, getter=isEmpty) BOOL empty;
+
+// Represented with the inclusive location and the exclusive endLocation
+@property (strong, readonly) id <NSTextLocation> location;
+@property (strong, readonly) id <NSTextLocation> endLocation;
+
+- (BOOL)isEqualToTextRange:(NSTextRange *)textRange;
+
+#pragma mark Basic operations
+- (BOOL)containsLocation:(id <NSTextLocation>)location;
+- (BOOL)containsRange:(NSTextRange *)textRange;
+- (BOOL)intersectsWithTextRange:(NSTextRange *)textRange;
+
+#pragma mark Basic mutations
+// Returns nil when two ranges are not intersecting
+- (nullable instancetype)textRangeByIntersectingWithTextRange:(NSTextRange *)textRange;
+- (instancetype)textRangeByFormingUnionWithTextRange:(NSTextRange *)textRange;
+@end
+
+
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextRange.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelection.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelection.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelection.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelection.h	2021-06-02 11:06:46.000000000 -0400
@@ -0,0 +1,87 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextSelection.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextSelection.h
+//  Text Kit
+//
+//  Copyright (c) 2018-2021, Apple Inc. All rights reserved.
+//
+
+#import <Foundation/NSAttributedString.h>
+#import <CoreGraphics/CGGeometry.h>
+
+@class NSTextRange;
+@protocol NSTextLocation;
+
+NS_ASSUME_NONNULL_BEGIN
+
+// NSTextSelection represents a single logical selection context corresponding to an insertion point.
+#pragma mark NSTextSelection
+
+typedef NS_ENUM(NSInteger, NSTextSelectionGranularity) {
+    NSTextSelectionGranularityCharacter,
+    NSTextSelectionGranularityWord,
+    NSTextSelectionGranularityParagraph,
+    NSTextSelectionGranularityLine,
+    NSTextSelectionGranularitySentence
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+typedef NS_ENUM(NSInteger, NSTextSelectionAffinity) {
+    NSTextSelectionAffinityUpstream = 0,
+    NSTextSelectionAffinityDownstream = 1
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextSelection : NSObject <NSSecureCoding>
+#pragma mark Initialization
+// textRanges should be ordered and not overlapping. Otherwise, textRanges would get normalized by reordered and merging overlapping ranges.
+- (instancetype)initWithRanges:(NSArray<NSTextRange *> *)textRanges affinity:(NSTextSelectionAffinity)affinity granularity:(NSTextSelectionGranularity)granularity NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithRange:(NSTextRange *)range affinity:(NSTextSelectionAffinity)affinity granularity:(NSTextSelectionGranularity)granularity;
+
+- (instancetype)initWithLocation:(id <NSTextLocation>)location affinity:(NSTextSelectionAffinity)affinity;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+#pragma mark Basic properties
+// Represents an array of disjoint logical ranges in the selection. The array must be logically ordered. When editing, all ranges in a text selection constitute a single insertion point.
+@property (copy, readonly) NSArray<NSTextRange *> *textRanges;
+
+// The granularity of the selection. NSTextSelectionGranularityByCharacter by default. Extending operations should modify the selection by the granularity.
+@property (readonly) NSTextSelectionGranularity granularity;
+
+// Either upstream or downstream selection. NSTextSelectionAffinityDownstream by default. For a 0-length selection, it describes the visual location of the text cursor between the head of line containing the selection location (downstream) or tail of the previous line (upstream). For a selection with contents, it describes the logical direction of non-anchored edge of the selection.
+@property (readonly) NSTextSelectionAffinity affinity;
+
+// Transient text selection during drag handling
+@property (readonly, getter=isTransient) BOOL transient;
+
+#pragma mark Navigation properties
+// Represents the anchor position offset from the beginning of a line fragment in the visual order for the initial tap or mouse down. That is from the left for a horizontal line fragment and from the top for a vertical. Navigating between lines uses this point when the current line fragment associated with the selection is shorter than the next line visited. 0.0 by default.
+@property CGFloat anchorPositionOffset;
+
+#pragma mark Visual selection
+// Indicates whether the selection should be interpreted as logical or visual.
+@property (getter=isLogical) BOOL logical;
+
+// Specifies the secondary character location when user taps/clicks at a directional boundary. Setting non-nil location has a side effect of making -logical=NO.
+@property (strong, nullable) id <NSTextLocation> secondarySelectionLocation;
+
+#pragma mark Typing attributes
+// The template attributes used for characters replacing the contents of this selection.
+@property (copy) NSDictionary<NSAttributedStringKey, id> *typingAttributes;
+
+#pragma mark Selection manipulation
+// Returns a selection with textRanges. Copying properties appropriate for the new instance.
+- (NSTextSelection *)textSelectionWithTextRanges:(NSArray<NSTextRange *> *)textRanges;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextSelection.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelectionNavigation.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelectionNavigation.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelectionNavigation.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextSelectionNavigation.h	2021-06-02 11:06:40.000000000 -0400
@@ -0,0 +1,136 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextSelectionNavigation.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextSelectionNavigation.h
+//  Text Kit
+//
+//  Copyright (c) 2019-2021, Apple Inc. All rights reserved.
+//
+
+#import <Foundation/NSObject.h>
+#import <CoreGraphics/CGGeometry.h>
+#import <AppKit/NSTextTypes.h>
+#import <AppKit/NSTextSelection.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class NSTextSelection;
+@class NSTextRange;
+@class NSTextLineFragment;
+@protocol NSTextLocation;
+@protocol NSTextSelectionDataSource;
+
+// NSTextSelectionNavigation is an interface exposing methods for obtaining results from actions performed on text selections. It returns the essential information necessary for editing, selecting, and navigating operations.
+
+typedef NS_ENUM(NSInteger, NSTextSelectionNavigationDirection) {
+    // Logical directions
+    // Works with just character information
+    NSTextSelectionNavigationDirectionForward,
+    NSTextSelectionNavigationDirectionBackward,
+    
+    // Visual directions
+    // Requires layout information if the direction is along the line (i.e. right and left for a horizontal line). Otherwise, it gets resolved to the corresponding logical direction except for NSTextSelectionNavigationDestinationCharacter
+    NSTextSelectionNavigationDirectionRight,
+    NSTextSelectionNavigationDirectionLeft,
+    NSTextSelectionNavigationDirectionUp,
+    NSTextSelectionNavigationDirectionDown
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+typedef NS_ENUM(NSInteger, NSTextSelectionNavigationDestination) {
+    NSTextSelectionNavigationDestinationCharacter, // Moving to the next extended grapheme cluster boundary. Could result in a location inside a cluster depending on operations. When the movement direction is not along the line (i.e. up and down for a horizontal line), it moves to the adjacent line using the anchor point instead of resolving to the logical direction
+    NSTextSelectionNavigationDestinationWord, // Moving to the next word boundary. Ignores punctuations, whitespaces, and format characters preceding the next word
+    NSTextSelectionNavigationDestinationLine, // Moving to the next line boundary. The boundary can be logical based on the line separator characters as well as visual with soft line wrapping
+    NSTextSelectionNavigationDestinationSentence, // Moving to the next sentence boundary. Ignores punctuations, whitespaces, and format characters preceding the next sentence
+    NSTextSelectionNavigationDestinationParagraph, // Moving to the next paragraph boundary. Ignores the end of line elastic characters and paragraph separators
+    NSTextSelectionNavigationDestinationContainer, // Moving to the next container/page boundary. Ignores the end of line elastic characters and container/page separators
+    NSTextSelectionNavigationDestinationDocument, // Moving to the document boundary
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+typedef NS_OPTIONS(NSUInteger, NSTextSelectionNavigationModifier) {
+    NSTextSelectionNavigationModifierExtend = (1 << 0), // Extends the selection by not moving the initial location while drag selection
+    NSTextSelectionNavigationModifierVisual = (1 << 1), // Extends the selection visually inside the rectangular area defined by the anchor and dragged positions
+    NSTextSelectionNavigationModifierMultiple = (1 << 2), // Extends the selection visually inside the rectangular area defined by the anchor and dragged positions and produces an NSTextSelection per line
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextSelectionNavigation : NSObject
+#pragma mark Initialization
+- (instancetype)initWithDataSource:(id <NSTextSelectionDataSource>)dataSource NS_DESIGNATED_INITIALIZER;
+- (instancetype)init NS_UNAVAILABLE;
+
+#pragma mark Properties
+// The data source object providing the layout and document content information.
+@property (readonly, weak) id <NSTextSelectionDataSource> textSelectionDataSource;
+
+// If YES, the object could produce selections with multiple disjoint ranges.
+@property BOOL allowsNonContiguousRanges;
+
+// If YES, rotates the coordinate system for arguments passed to the navigation methods such as -textSelectionsInteractingAtPoint:inContainerAtLocation:anchors:modifiers:selecting:bounds: based on the text container layout orientation. NO by default.
+@property BOOL rotatesCoordinateSystemForLayoutOrientation;
+
+#pragma mark Layout Information Cache
+// Flushes cached layout information. Should be called whenever the document contents get changed.
+- (void)flushLayoutCache;
+
+#pragma mark Selection & Cursor Navigation
+// Returns a text selection moved from textSelection by the navigating operation presented by direction, destination, and extending. Returns nil when the requested operation does not produce any logically valid result. If 'confined' is YES, confine any movement to the text element that the selection already lies within.
+- (nullable NSTextSelection *)destinationSelectionForTextSelection:(NSTextSelection *)textSelection direction:(NSTextSelectionNavigationDirection)direction destination:(NSTextSelectionNavigationDestination)destination extending:(BOOL)extending confined:(BOOL)confined;
+
+// Returns an array of text selections produced with tap/mouse down at point. anchors defines the last text selection state if selecting=YES or NSTextSelectionNavigationModifierExtend. selecting=YES indicates it's in a text selection dragging session. bounds defines the view area in the container coordinate system that can interact with events. It is typically the view's visible area.
+- (NSArray<NSTextSelection *> *)textSelectionsInteractingAtPoint:(CGPoint)point inContainerAtLocation:(id <NSTextLocation>)containerLocation anchors:(NSArray <NSTextSelection *> *)anchors modifiers:(NSTextSelectionNavigationModifier)modifiers selecting:(BOOL)selecting bounds:(CGRect)bounds;
+
+// Returns a text selection expanded to the nearest boundaries for selectionGranularity enclosing textSelection.textRanges. The returned selection will have granularity=selectionGranularity.
+- (NSTextSelection *)textSelectionForSelectionGranularity:(NSTextSelectionGranularity)selectionGranularity enclosingTextSelection:(NSTextSelection *)textSelection;
+
+- (nullable NSTextSelection *)textSelectionForSelectionGranularity:(NSTextSelectionGranularity)granularity enclosingPoint:(CGPoint)point inContainerAtLocation:(id <NSTextLocation>)containerLocation;
+
+#pragma mark Editing
+// Returns the resolved location for inserting the next input if textSelection is isLogical=NO && secondarySelectionLocation!=nil. If not, returns nil.
+- (nullable id <NSTextLocation>)resolvedInsertionPointForTextSelection:(NSTextSelection *)textSelection writingDirection:(NSWritingDirection)writingDirection;
+
+// Returns the ranges that should be deleted based on textSelection and movement arguments. The selection after deletion should contain a 0-length range starting at the location of the first range returned. destination is ignored when textSelection has a non-empty selection. allowsDecomposition only applies to NSTextSelectionNavigationDirectionBackward and NSTextSelectionNavigationDestinationCharacter with 0-length selection.
+- (NSArray<NSTextRange *> *)deletionRangesForTextSelection:(NSTextSelection *)textSelection direction:(NSTextSelectionNavigationDirection)direction destination:(NSTextSelectionNavigationDestination)destination allowsDecomposition:(BOOL)allowsDecomposition;
+@end
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextSelectionDataSource <NSObject>
+@required
+// Declares the starting and ending locations for the document.
+@property (strong, readonly) NSTextRange *documentRange;
+
+// Enumerating the textual segment boundaries starting at location. The segmentation logic should be based on the natural language semantics and rules such as Unicode Text Segmentation UAX 29. It is allowed to have custom text segmentation behavior for specialized document contents (i.e. text editors with structured document contents such as a programming language). NSStringEnumerationByLines should be aware of the visual line boundaries based on soft line wrapping.
+- (void)enumerateSubstringsFromLocation:(id <NSTextLocation>)location options:(NSStringEnumerationOptions)opts usingBlock:(void (NS_NOESCAPE ^)(NSString * _Nullable substring, NSTextRange *substringRange, NSTextRange * _Nullable enclosingRange, BOOL *stop))block;
+
+// Returns a text range corresponding to selectionGranularity enclosing location. Returns nil when documentRange.isEmpty=YES.
+- (nullable NSTextRange *)textRangeForSelectionGranularity:(NSTextSelectionGranularity)selectionGranularity enclosingLocation:(id <NSTextLocation>)location;
+
+// Returns a new location from location with offset. The offset value could be positive or negative indicating the logical direction. Could return nil when the inputs don't produce any legal location (i.e. out of bounds index).
+- (nullable id <NSTextLocation>)locationFromLocation:(id <NSTextLocation>)location withOffset:(NSInteger)offset;
+
+// Returns the offset between from and to. The return value could be positive or negative. Could return NSNotFound when the offset cannot be represented in an integer value (i.e. locations are not in the same document).
+- (NSInteger)offsetFromLocation:(id <NSTextLocation>)from toLocation:(id <NSTextLocation>)to;
+
+// Returns the base writing direction at location. It is recommended to return the resolved base direction either NSWritingDirectionLeftToRight or NSWritingDirectionRightToLeft.
+- (NSWritingDirection)baseWritingDirectionAtLocation:(id <NSTextLocation>)location;
+
+// Layout
+// Enumerates all the caret offset from left to right in visual order. caretOffset should be in the coordinate system for the text container. When leadingEdge=YES, it indicates caretOffset is at the edge logically preceding the character. For LTR characters, it is on the left, and on the right for RTL characters.
+- (void)enumerateCaretOffsetsInLineFragmentAtLocation:(id<NSTextLocation>)location usingBlock:(void (NS_NOESCAPE ^)(CGFloat caretOffset, id <NSTextLocation> location, BOOL leadingEdge, BOOL * stop))block;
+
+// Returns the range of the line fragment containing point inside the coordinate system containing location.
+- (nullable NSTextRange *)lineFragmentRangeForPoint:(CGPoint)point inContainerAtLocation:(id <NSTextLocation>)location;
+
+@optional
+// This optional method should be implemented enumerating the text container/page boundary when the text selection data provider supports such a layout functionality.
+- (void)enumerateContainerBoundariesFromLocation:(id <NSTextLocation>)location reverse:(BOOL)isBackward usingBlock:(void (NS_NOESCAPE ^)(id <NSTextLocation> boundaryLocation, BOOL *stop))block;
+
+// Returns the text writing mode at location. If not implemented, NSTextSelectionNavigation assumes it is NSTextWritingModeHorizontal.
+- (NSTextWritingMode)textWritingModeAtLocation:(id <NSTextLocation>)location;
+@end
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextSelectionNavigation.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextStorage.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextStorage.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextStorage.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextStorage.h	2021-06-02 11:06:40.000000000 -0400
@@ -12,6 +12,7 @@
 @class NSArray, NSLayoutManager, NSNotification;
 
 @protocol NSTextStorageDelegate;
+@protocol NSTextStorageObserving;
 
 NS_ASSUME_NONNULL_BEGIN
 #if !TARGET_OS_IPHONE
@@ -84,6 +85,10 @@
 
 // Ensures all attributes in range are validated and ready to be used.  An NSTextStorage that is lazy is required to call the following method before accessing any attributes.  This gives the attribute fixing a chance to occur if necessary.  NSTextStorage subclasses that wish to support laziness must call it from all attribute accessors that they implement.  The default concrete subclass does call this from its accessors.
 - (void)ensureAttributesAreFixedInRange:(NSRange)range;
+
+/**************************** NSTextStorageObserving ****************************/
+// An object conforming to NSTextStorageObserving observing and retaining NSTextStorage
+@property (nullable, weak) id <NSTextStorageObserving> textStorageObserver API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 @end
 
 
@@ -105,6 +110,20 @@
 APPKIT_EXTERN NSNotificationName  NSTextStorageWillProcessEditingNotification API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0));
 APPKIT_EXTERN NSNotificationName  NSTextStorageDidProcessEditingNotification API_AVAILABLE(macos(10.0), ios(7.0), tvos(9.0));
 
+#pragma mark NSTextStorageObserving
+// NSTextStorageObserving defines the protocol for NSTextStorage controller objects observing changes in the text backing-store.
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextStorageObserving <NSObject>
+// The document object
+@property (nullable, strong) NSTextStorage *textStorage;
+
+// The newCharRange is the range in the final string which was explicitly edited.  The invalidatedRange includes portions that changed as a result of attribute fixing. invalidatedRange is either equal to newCharRange or larger.  Controllers should not change the contents of the text storage during the execution of this message.
+- (void)processEditingForTextStorage:(NSTextStorage *)textStorage edited:(NSTextStorageEditActions)editMask range:(NSRange)newCharRange changeInLength:(NSInteger)delta invalidatedRange:(NSRange)invalidatedCharRange;
+
+// Transactional editing support
+- (void)performEditingTransactionForTextStorage:(NSTextStorage *)textStorage withBlock:(void (NS_NOESCAPE ^) (void))transaction;
+@end
+
 /**** Deprecations ****/
 // NSTextStorageEditedOptions is deprecated along with -[NSLayoutManager textStorage:edited:range:changeInLength:invalidatedRange:. Use NSTextStorageEditActions.
 typedef NSUInteger NSTextStorageEditedOptions;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextTypes.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextTypes.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextTypes.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextTypes.h	2021-06-02 11:06:41.000000000 -0400
@@ -0,0 +1,56 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextTypes.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+//
+//  NSTextTypes.h
+//  Text Kit
+//
+//  Copyright (c) 2021, Apple Inc. All rights reserved.
+//
+
+
+#import <Foundation/NSObject.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+#if !__NSTEXT_SHARED_SECTION__
+#define __NSTEXT_SHARED_SECTION__ 1
+#pragma mark NSTextAlignment
+typedef NS_ENUM(NSInteger, NSTextAlignment) {
+    NSTextAlignmentLeft      = 0,    // Visually left aligned
+#if TARGET_ABI_USES_IOS_VALUES
+    NSTextAlignmentCenter    = 1,    // Visually centered
+    NSTextAlignmentRight     = 2,    // Visually right aligned
+#else /* !TARGET_ABI_USES_IOS_VALUES */
+    NSTextAlignmentRight     = 1,    // Visually right aligned
+    NSTextAlignmentCenter    = 2,    // Visually centered
+#endif
+    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.
+    NSTextAlignmentNatural   = 4     // Indicates the default alignment for script
+} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0));
+
+#pragma mark NSWritingDirection
+typedef NS_ENUM(NSInteger, NSWritingDirection) {
+    NSWritingDirectionNatural       = -1,   // Determines direction using the Unicode Bidi Algorithm rules P2 and P3
+    NSWritingDirectionLeftToRight   = 0,    // Left to right writing direction
+    NSWritingDirectionRightToLeft   = 1     // Right to left writing direction
+} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0));
+#endif // __NSTEXT_SHARED_SECTION__
+
+#pragma mark NSTextWritingMode
+typedef NS_ENUM(NSInteger, NSTextWritingMode) {
+    NSTextWritingModeHorizontal = 0, // Lines rendered horizontally, grow top to bottom
+    NSTextWritingModeVertical = 1, // Lines rendered vertically, grow right to left
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+@protocol NSTextWritingModeProvider <NSObject>
+// A property describing the receiver's writing mode.  This property defines the default value for the range of string laid out in the receiver in absence of explicit NSVerticalGlyphFormAttributeName attribute.  For example, when NSTextWritingModeVertical, the default value for NSVerticalGlyphFormAttributeName is 1.  When rendering into the receiver, the Text System assumes the coordinate system is appropriately rotated.
+@property (readonly) NSTextWritingMode textWritingMode API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+@end
+
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextTypes.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextView.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextView.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextView.h	2021-03-16 09:54:13.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextView.h	2021-06-02 11:06:44.000000000 -0400
@@ -39,6 +39,8 @@
 @class NSTextContainer;
 @class NSTextStorage;
 @class NSLayoutManager;
+@class NSTextContentStorage;
+@class NSTextLayoutManager;
 @class NSRulerView;
 @class NSRulerMarker;
 @class NSUndoManager;
@@ -102,6 +104,12 @@
 
 @property (nullable, readonly, assign) NSTextStorage *textStorage;
 
+// The text views's text layout manager, if its text container is configured with one; null otherwise.
+@property (nullable, readonly, assign) NSTextLayoutManager *textLayoutManager API_AVAILABLE(macos(12.0));
+
+// The text view's text layout storage, if its text container is configured with one; null otherwise.
+@property (nullable, readonly, assign) NSTextContentStorage *textContentStorage API_AVAILABLE(macos(12.0));
+
 /************************* Key binding entry-point *************************/
 
 - (void)insertText:(id)insertString API_DEPRECATED("Use -insertText:replacementRange: from NSTextInputClient instead. Since the method is designed to be used solely by the input system, the message should never be sent to a text view from applications. Any content modifications should be via either NSTextStorage or NSText methods.", macos(10.0,10.11));
@@ -650,6 +658,9 @@
 
 APPKIT_EXTERN NSNotificationName NSTextViewDidChangeTypingAttributesNotification;
 
+APPKIT_EXTERN NSNotificationName NSTextViewWillSwitchToNSLayoutManagerNotification;
+APPKIT_EXTERN NSNotificationName NSTextViewDidSwitchToNSLayoutManagerNotification;
+
 
 /* These constants are deprecated in favor of their NSTextFinder equivalents. */
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextViewportLayoutController.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextViewportLayoutController.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextViewportLayoutController.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTextViewportLayoutController.h	2021-06-02 11:06:51.000000000 -0400
@@ -0,0 +1,91 @@
+#if (defined(USE_APPKIT_PUBLIC_HEADERS) && USE_APPKIT_PUBLIC_HEADERS) || !__has_include(<UIFoundation/NSTextViewportLayoutController.h>)
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_IPHONE
+/*
+    NSTextViewportLayoutController.h
+    Text Kit
+    Copyright (c) 2017-2021, Apple Inc.
+    All rights reserved.
+*/
+
+#import <Foundation/NSObject.h>
+#import <CoreGraphics/CGGeometry.h>
+
+@class NSTextRange;
+@class NSTextLayoutManager;
+@class NSTextLayoutFragment;
+@class NSTextViewportLayoutController;
+@protocol NSTextLocation;
+
+NS_ASSUME_NONNULL_BEGIN
+
+// A viewport is a rectangular area within a flipped coordinate system expanding along the y-axis. With text contents, lines advance along the expanding direction typically. It defines the active area where text layout fragments laid out. The area corresponds to the user visible area with additional over-scroll region in most cases. NSTextViewportLayoutController manages the layout process inside the viewport interacting with its delegate.
+
+#pragma mark NSTextViewportLayoutControllerDelegate
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol NSTextViewportLayoutControllerDelegate <NSObject>
+
+#pragma mark Viewport layout
+// The current viewport, typically the view visible bounds with overdraw.
+- (CGRect)viewportBoundsForTextViewportLayoutController:(NSTextViewportLayoutController *)textViewportLayoutController;
+
+// Called when textViewportLayoutController lays out a given textLayoutFragment.
+// The delegate should arrange to present the text layout fragment in the UI, e.g. a sublayer/subview.
+// Layout information such as viewportBounds on textViewportLayoutController is not up-to-date at the point of this call.
+- (void)textViewportLayoutController:(NSTextViewportLayoutController *)textViewportLayoutController configureRenderingSurfaceForTextLayoutFragment:(NSTextLayoutFragment *)textLayoutFragment;
+
+@optional
+
+#pragma mark Layout Process Observation
+// Called when textViewportLayoutController is about to layout.
+// Layout information on textViewportLayoutController is up-to-date at the point of this call.
+- (void)textViewportLayoutControllerWillLayout:(NSTextViewportLayoutController *)textViewportLayoutController;
+
+// Called when textViewportLayoutController is about to layout.
+// Layout information on textViewportLayoutController is up-to-date at the point of this call.
+- (void)textViewportLayoutControllerDidLayout:(NSTextViewportLayoutController *)textViewportLayoutController;
+@end
+
+#pragma mark NSTextViewportLayoutController
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface NSTextViewportLayoutController : NSObject
+#pragma mark Initialization
+- (instancetype)initWithTextLayoutManager:(NSTextLayoutManager *)textLayoutManager NS_DESIGNATED_INITIALIZER;
+- (instancetype)init NS_UNAVAILABLE;
+
+#pragma mark Properties
+// The viewport layout delegate.
+@property (nullable, weak) id <NSTextViewportLayoutControllerDelegate> delegate;
+
+// The provider of layout fragments.
+@property (weak, readonly) NSTextLayoutManager *textLayoutManager;
+
+#pragma mark Viewport layout state
+// The viewport of the current layout.
+// Not KVO-compliant.
+@property (readonly) CGRect viewportBounds;
+
+// The text range of the current viewport layout.
+// Not KVO-compliant.
+@property (nullable, readonly) NSTextRange *viewportRange;
+
+#pragma mark Viewport layout
+// Performs layout in the viewport.
+- (void)layoutViewport;
+
+// Relocates the viewport to start with the specified *location*.
+// This is used to programmatically scroll to the specified *location*.
+// Returns the suggested viewport anchor point.
+- (CGFloat)relocateViewport:(id<NSTextLocation>)location;
+
+// Adjusts the viewport rect by the specified offset if needed.
+// This is used to artificially move the viewport without affecting viewport content, can be both positive/negative offset.
+- (void)adjustViewport:(CGFloat)verticalOffset;
+
+@end
+NS_ASSUME_NONNULL_END
+#endif // !TARGET_OS_IPHONE
+#else
+#import <UIFoundation/NSTextViewportLayoutController.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbar.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbar.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbar.h	2021-03-16 09:54:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbar.h	2021-06-02 11:06:39.000000000 -0400
@@ -30,7 +30,7 @@
     NSToolbarSizeModeSmall
 };
 
-API_AVAILABLE(ios(13.0))
+API_AVAILABLE(ios(13.0)) NS_SWIFT_UI_ACTOR
 @interface NSToolbar : NSObject
 
 /* The identifier is used to form the toolbar's autosave name.  Also, toolbars with the same identifier are implicitly synchronized so that they maintain the same state. */
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbarItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbarItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbarItem.h	2021-03-16 09:54:11.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSToolbarItem.h	2021-06-02 11:06:42.000000000 -0400
@@ -30,7 +30,7 @@
 static const NSToolbarItemVisibilityPriority NSToolbarItemVisibilityPriorityHigh API_AVAILABLE(ios(13.0)) = 1000;
 static const NSToolbarItemVisibilityPriority NSToolbarItemVisibilityPriorityUser API_AVAILABLE(ios(13.0)) = 2000;
 
-API_AVAILABLE(ios(13.0))
+API_AVAILABLE(ios(13.0)) NS_SWIFT_UI_ACTOR
 @interface NSToolbarItem : NSObject <NSCopying>
 
 /* Initialize the toolbar item with an identifier which is a development language string used by the toolbar and its delegate for identification purposes.  */
@@ -96,8 +96,8 @@
  If you do not set a min/max size, the view's size properties will be calculated using constraints. Apps linked before 10.14 will use the view's current size.
  In general, apps should rely on the automatic measurements and constraints to define min/max sizes rather than setting these properties since this will account for localizations.
  */
-@property NSSize minSize API_DEPRECATED("This property is no longer recommended. Instead, let the system automatically measure the size of the view using constraints.", macos(10.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(ios);
-@property NSSize maxSize API_DEPRECATED("This property is no longer recommended. Instead, let the system automatically measure the size of the view using constraints.", macos(10.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(ios);
+@property NSSize minSize API_DEPRECATED("This property is no longer recommended. Instead, let the system automatically measure the size of the view using constraints.", macos(10.0, 12.0)) API_UNAVAILABLE(ios);
+@property NSSize maxSize API_DEPRECATED("This property is no longer recommended. Instead, let the system automatically measure the size of the view using constraints.", macos(10.0, 12.0)) API_UNAVAILABLE(ios);
 
 /* When a toolbar does not have enough space to fit all its items, it must push some into the overflow menu.  Items with the highest visibility priority level are choosen last for the overflow menu.  The default visibilityPriority value is NSToolbarItemVisibilityPriorityStandard.  To suggest that an item always remain visible, give it a value greater than NSToolbarItemVisibilityPriorityStandard, but less than NSToolbarItemVisibilityPriorityUser.   In 10.7, users can no longer modify the toolbar item visibility priority. */
 @property NSToolbarItemVisibilityPriority visibilityPriority;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBar.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBar.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBar.h	2021-03-16 09:54:14.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBar.h	2021-06-02 11:06:45.000000000 -0400
@@ -17,7 +17,7 @@
 
 @protocol NSTouchBarDelegate, NSTouchBarProvider;
 
-API_AVAILABLE(macos(10.12.2), ios(13.0))
+API_AVAILABLE(macos(10.12.2), ios(13.0)) NS_SWIFT_UI_ACTOR
 @interface NSTouchBar : NSObject <NSCoding>
 
 /* 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBarItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBarItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBarItem.h	2021-03-16 09:54:07.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSTouchBarItem.h	2021-06-02 11:06:38.000000000 -0400
@@ -23,7 +23,7 @@
 static const NSTouchBarItemPriority NSTouchBarItemPriorityLow API_AVAILABLE(macos(10.12.2), ios(13.0)) = -1000;
 
 
-API_AVAILABLE(macos(10.12.2), ios(13.0))
+API_AVAILABLE(macos(10.12.2), ios(13.0)) NS_SWIFT_UI_ACTOR
 @interface NSTouchBarItem : NSObject <NSCoding>
 /*
     The designated initializer. This instantiates a new NSTouchBarItem with the specified initializer.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h	2021-03-16 09:54:15.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h	2021-06-02 11:06:46.000000000 -0400
@@ -48,7 +48,7 @@
      */
     NSWindowStyleMaskUnifiedTitleAndToolbar = 1 << 12,
     
-    /* When set, the window will appear full screen. This mask is automatically toggled when toggleFullScreen: is called.
+    /* When present, the window will appear full screen. This mask is automatically toggled when toggleFullScreen: is called.
      */
     NSWindowStyleMaskFullScreen API_AVAILABLE(macos(10.7)) = 1 << 14,
     
@@ -308,7 +308,6 @@
 @property (readonly, weak) NSResponder *firstResponder;
 
 @property (readonly) NSEventModifierFlags resizeFlags;
-- (void)keyDown:(NSEvent *)event;
 - (void)close;
 @property (getter=isReleasedWhenClosed) BOOL releasedWhenClosed;
 - (void)miniaturize:(nullable id)sender;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowController.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowController.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowController.h	2021-03-16 09:54:10.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowController.h	2021-06-02 11:06:41.000000000 -0400
@@ -50,7 +50,7 @@
 */
 @property(copy) NSWindowFrameAutosaveName windowFrameAutosaveName;
 
-/* If this is set to YES then new windows loaded from nibs (only windows from nibs) will be cascaded based on the original frame of the window from the nib.
+/* If this is set to YES then new windows will be cascaded based on the original frame of the window.
 */
 @property BOOL shouldCascadeWindows;
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowRestoration.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowRestoration.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowRestoration.h	2021-03-16 09:54:16.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindowRestoration.h	2021-06-02 11:06:47.000000000 -0400
@@ -93,6 +93,10 @@
 */
 @property (class, readonly, copy) NSArray<NSString *> *restorableStateKeyPaths API_AVAILABLE(macos(10.7));
 
+/** When secure state restoration is used, values at restorableStateKeyPaths must support NSSecureCoding and this method will be consulted when restoring state. Any values not of an allowed class will not be set.
+*/
++ (NSArray<Class> *)allowedClassesForRestorableStateKeyPath:(NSString *)keyPath API_AVAILABLE(macos(12.0));
+
 @end
 
 
@@ -127,6 +131,7 @@
 - (void)restoreStateWithCoder:(NSCoder *)coder API_AVAILABLE(macos(10.7));
 - (void)invalidateRestorableState API_AVAILABLE(macos(10.7));
 @property (class, readonly, copy) NSArray<NSString *> *restorableStateKeyPaths API_AVAILABLE(macos(10.7));
++ (NSArray<Class> *)allowedClassesForRestorableStateKeyPath:(NSString *)keyPath API_AVAILABLE(macos(12.0));
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWorkspace.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWorkspace.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWorkspace.h	2021-03-16 09:54:12.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWorkspace.h	2021-06-02 11:06:43.000000000 -0400
@@ -113,9 +113,33 @@
 /* Get the URL for the application with the given identifier.  This uses various heuristics in case multiple apps have the same bundle ID.  This returns nil if no app has the bundle identifier.*/
 - (nullable NSURL *)URLForApplicationWithBundleIdentifier:(NSString *)bundleIdentifier API_AVAILABLE(macos(10.6));
 
+/* Get the URL for all copies of an application with the given identifier. The system sorts the resulting array based on each application's suitability to launch. The first application is considered the best available match. This returns the empty array if no app has the bundle identifier. */
+- (NSArray<NSURL *> *)URLsForApplicationsWithBundleIdentifier:(NSString *)bundleIdentifier API_AVAILABLE(macos(12.0));
+
 /* Returns the URL to the default application that would be used to open the given URL, as if the file were double clicked in the Finder (for file URLs).  This returns nil if no app can open it, or if the file does not exist. */
 - (nullable NSURL *)URLForApplicationToOpenURL:(NSURL *)url API_AVAILABLE(macos(10.6));
 
+/* Returns URLs to all available applications that can open the given URL. The system sorts the resulting array based on each application's suitability to open the given URL. The first application is considered the best available match. This returns the empty array if no app can open it, or if the file does not exist. */
+- (NSArray<NSURL *> *)URLsForApplicationsToOpenURL:(NSURL *)url API_AVAILABLE(macos(12.0));
+
+/* Sets the default handler for files with the same UTType as the one specified. Does not apply to non-file URLs. Some UTTypes require user consent before you can change their handlers. If a change requires user consent, the system will ask the user asynchronously before invoking the completion handler. */
+- (void)setDefaultApplicationAtURL:(NSURL *)applicationURL toOpenContentTypeOfFileAtURL:(NSURL *)url completionHandler:(void (^_Nullable)(NSError *_Nullable error))completionHandler API_AVAILABLE(macos(12.0));
+
+/* Sets the default handler for URLs with the same scheme as the one specified. Some URL schemes require user consent before you can change their handlers. If a change requires user consent, the system will ask the user asynchronously before invoking the completion handler. */
+- (void)setDefaultApplicationAtURL:(NSURL *)applicationURL toOpenURLsWithScheme:(NSString *)urlScheme completionHandler:(void (^_Nullable)(NSError *_Nullable error))completionHandler API_AVAILABLE(macos(12.0));
+
+/* Sets the default handler for the specified file (rather than all files like it.) Does not apply to non-file URLs. Some files require user consent before you can change their handlers. Write access to the specified URL is required. If a change requires user consent, the system will ask the user asynchronously before invoking the completion handler. */
+- (void)setDefaultApplicationAtURL:(NSURL *)applicationURL toOpenFileAtURL:(NSURL *)url completionHandler:(void (^_Nullable)(NSError *_Nullable error))completionHandler API_AVAILABLE(macos(12.0));
+
+/* Returns the URL to the default application that would be used to open the given URL, as if the file were double clicked in the Finder.  This returns nil if no app can open it. */
+- (nullable NSURL *)URLForApplicationToOpenContentType:(UTType *)contentType API_AVAILABLE(macos(12.0));
+
+/* Returns URLs to all available applications that can open the given UTType. The system sorts the resulting array based on each application's suitability to open the given UTType. The first application is considered the best available match. This returns the empty array if no app can open it. */
+- (NSArray<NSURL *> *)URLsForApplicationsToOpenContentType:(UTType *)contentType API_AVAILABLE(macos(12.0));
+
+/* Sets the default handler for the specified UTType. Some types require user consent before you can change their handlers. If a change requires user consent, the system will ask the user asynchronously before invoking the completion handler. */
+- (void)setDefaultApplicationAtURL:(NSURL *)applicationURL toOpenContentType:(UTType *)contentType completionHandler:(void (^_Nullable)(NSError *_Nullable error))completionHandler API_AVAILABLE(macos(12.0));
+
 /* Gets the frontmost application, which is the application that will receive key events.  This is observable through KVO. */
 @property (nullable, readonly, strong) NSRunningApplication *frontmostApplication API_AVAILABLE(macos(10.7));
 
@@ -426,34 +450,34 @@
 - (BOOL)performFileOperation:(NSWorkspaceFileOperationName)operation source:(NSString *)source destination:(NSString *)destination files:(NSArray *)files tag:(nullable NSInteger *)tag API_DEPRECATED("", macos(10.0,10.11));
 
 /* Get, by reference, the name of the app used to open a file at the given path, and the type of the file.  The type of the file will either be a filename extension or an HFS type encoded with NSFileTypeForHFSTypeCode(). Both strings are returned autoreleased.  The method returns YES if successful, NO if not. */
-- (BOOL)getInfoForFile:(NSString *)fullPath application:(NSString * _Nullable* _Nullable)appName type:(NSString * _Nullable* _Nullable)type API_DEPRECATED("Use -[NSWorkspace URLForApplicationToOpenURL:] to get the URL of an application that will open a given item, or -[NSURL getResourceValue:forKey:error:] with NSURLContentTypeKey to get the type of the given item.", macos(10.0, API_TO_BE_DEPRECATED));
+- (BOOL)getInfoForFile:(NSString *)fullPath application:(NSString * _Nullable* _Nullable)appName type:(NSString * _Nullable* _Nullable)type API_DEPRECATED("Use -[NSWorkspace URLForApplicationToOpenURL:] to get the URL of an application that will open a given item, or -[NSURL getResourceValue:forKey:error:] with NSURLContentTypeKey to get the type of the given item.", macos(10.0, 12.0));
 
 /* Get the icon for a given file type.  The file type may be a filename extension, or a HFS code encoded via NSFileTypeForHFSTypeCode, or a Universal Type Identifier (UTI).   Returns a default icon if the operation fails.  */
-- (NSImage *)iconForFileType:(NSString *)fileType API_DEPRECATED("Use -[NSWorkspace iconForContentType:] instead.", macos(10.0, API_TO_BE_DEPRECATED));
+- (NSImage *)iconForFileType:(NSString *)fileType API_DEPRECATED("Use -[NSWorkspace iconForContentType:] instead.", macos(10.0, 12.0));
 
 /* Given an absolute file path, return the uniform type identifier (UTI) of the file, if one can be determined. Otherwise, return nil after setting *outError to an NSError that encapsulates the reason why the file's type could not be determined. If the file at the end of the path is a symbolic link the type of the symbolic link will be returned.
 
  You can invoke this method to get the UTI of an existing file.  To get the UTI of a URL, use the NSURLTypeIdentifierKey file system resource key from NSURL.h.
  */
-- (nullable NSString *)typeOfFile:(NSString *)absoluteFilePath error:(NSError **)outError API_DEPRECATED("Use -[NSURL getResourceValue:forKey:error:] with NSURLContentTypeKey instead.", macos(10.5, API_TO_BE_DEPRECATED));
+- (nullable NSString *)typeOfFile:(NSString *)absoluteFilePath error:(NSError **)outError API_DEPRECATED("Use -[NSURL getResourceValue:forKey:error:] with NSURLContentTypeKey instead.", macos(10.5, 12.0));
 
 /* Given a UTI, return a string that describes the document type and is fit to present to the user, or nil for failure.
 
  You can invoke this method to get the name of a type that must be shown to the user, in an alert about your application's inability to handle the type, for instance.
  */
-- (nullable NSString *)localizedDescriptionForType:(NSString *)typeName API_DEPRECATED("Use UTType.localizedDescription instead.", macos(10.5, API_TO_BE_DEPRECATED));
+- (nullable NSString *)localizedDescriptionForType:(NSString *)typeName API_DEPRECATED("Use UTType.localizedDescription instead.", macos(10.5, 12.0));
 
 /* Given a UTI, return the best file name extension to use when creating a file of that type, or nil for failure.
 
  You can invoke this method when your application has only the base name of a file that's being written and it has to append a file name extension so that the file's type can be reliably identified later on.
  */
-- (nullable NSString *)preferredFilenameExtensionForType:(NSString *)typeName API_DEPRECATED("Use UTType.preferredFilenameExtension instead.", macos(10.5, API_TO_BE_DEPRECATED));
+- (nullable NSString *)preferredFilenameExtensionForType:(NSString *)typeName API_DEPRECATED("Use UTType.preferredFilenameExtension instead.", macos(10.5, 12.0));
 
 /* Given a file name extension and a UTI, return YES if the file name extension is a valid tag for the identified type, NO otherwise.
 
  You can invoke this method when your application needs to check if a file name extension can be used to reliably identify the type later on. For example, NSSavePanel uses this method to validate any extension that the user types in the panel's file name field.
  */
-- (BOOL)filenameExtension:(NSString *)filenameExtension isValidForType:(NSString *)typeName API_DEPRECATED("Use +[UTType typesWithTag:tagClass:conformingToType:] to get a list of candidate types, then check if the input type conforms to any of them.", macos(10.5, API_TO_BE_DEPRECATED));
+- (BOOL)filenameExtension:(NSString *)filenameExtension isValidForType:(NSString *)typeName API_DEPRECATED("Use +[UTType typesWithTag:tagClass:conformingToType:] to get a list of candidate types, then check if the input type conforms to any of them.", macos(10.5, 12.0));
 
 /* Given two UTIs, return YES if the first "conforms to" to the second in the uniform type identifier hierarchy, NO otherwise. This method will always return YES if the two strings are equal, so you can also use it with other kinds of type name, including those declared in CFBundleTypeName Info.plist entries in apps that don't take advantage of the support for UTIs that was added to Cocoa in Mac OS 10.5.
 
@@ -461,7 +485,7 @@
 
  Use this method instead of merely comparing UTIs for equality.
  */
-- (BOOL)type:(NSString *)firstTypeName conformsToType:(NSString *)secondTypeName API_DEPRECATED("Use -[UTType conformsToType:] instead.", macos(10.5, API_TO_BE_DEPRECATED));
+- (BOOL)type:(NSString *)firstTypeName conformsToType:(NSString *)secondTypeName API_DEPRECATED("Use -[UTType conformsToType:] instead.", macos(10.5, 12.0));
 
 @end
 
Clone this wiki locally