]> git.saurik.com Git - apple/objc4.git/commitdiff
objc4-266.tar.gz mac-os-x-104 mac-os-x-1041 mac-os-x-1042 v266
authorApple <opensource@apple.com>
Fri, 1 Apr 2005 22:01:36 +0000 (22:01 +0000)
committerApple <opensource@apple.com>
Fri, 1 Apr 2005 22:01:36 +0000 (22:01 +0000)
32 files changed:
Makefile
libobjc.order [deleted file]
objc-exports
runtime/Auto.subproj/objc-auto-i386.s [new file with mode: 0644]
runtime/Auto.subproj/objc-auto-ppc.s [new file with mode: 0644]
runtime/Auto.subproj/objc-auto.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg-i386.s
runtime/Messengers.subproj/objc-msg-ppc.s
runtime/Messengers.subproj/objc-msg-stub-i386.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg-stub-ppc.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg-stub.s [new file with mode: 0644]
runtime/Object.m
runtime/hashtable2.m
runtime/objc-auto.h [new file with mode: 0644]
runtime/objc-auto.m [new file with mode: 0644]
runtime/objc-class.h
runtime/objc-class.m
runtime/objc-exception.m
runtime/objc-file.m
runtime/objc-load.m
runtime/objc-private.h
runtime/objc-rtp-sym.s [new file with mode: 0644]
runtime/objc-rtp.h [new file with mode: 0644]
runtime/objc-rtp.m [new file with mode: 0644]
runtime/objc-runtime.h
runtime/objc-runtime.m
runtime/objc-sel-set.h [new file with mode: 0644]
runtime/objc-sel-set.m [new file with mode: 0644]
runtime/objc-sel-table.h
runtime/objc-sel.m
runtime/objc-sync.m
runtime/objc.h

index 3b33ca1adb3c564f012a9139825302827965b39b..00ce383fac0c8267f6e0eb14f466c7ea2fc45f3f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,9 @@
 # use LDFLAGS not LFLAGS
-# seg-addr-table, sect-order
 #
 # Simple makefile for building objc4 on Darwin
 #
 # These make variables (or environment variables) are used
-# if defined:
+# when defined:
 #      SRCROOT         path location of root of source hierarchy;
 #                      defaults to ".", but must be set to a
 #                      destination path for installsrc target.
@@ -77,6 +76,7 @@ CHOWN = /usr/sbin/chown
 TAR = /usr/bin/tar
 STRIP = /usr/bin/strip
 NMEDIT = /usr/bin/nmedit
+LIPO = /usr/bin/lipo
 
 ifeq "$(PLATFORM)" "Darwin"
 WARNING_FLAGS = -Wmost -Wno-precomp -Wno-four-char-constants
@@ -100,13 +100,21 @@ ARCH_FLAGS = $(foreach A, $(ARCH_LIST), $(addprefix -arch , $(A)))
 endif
 
 
+ifeq "$(ORDERFILE)" ""
+ORDERFILE = $(wildcard /usr/local/lib/OrderFiles/libobjc.order)
+endif
+ifneq "$(ORDERFILE)" ""
+ORDER = -sectorder __TEXT __text $(ORDERFILE)
+else 
+ORDER = 
+endif
 
 ifeq "$(USER)" ""
 USER = unknown
 endif
 
-CFLAGS = -g -fno-common -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders
-LDFLAGS = -framework CoreFoundation
+CFLAGS = -g -fno-common -fobjc-exceptions -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders
+LDFLAGS = 
 
 LIBRARY_EXT = .dylib
 
@@ -115,10 +123,10 @@ OTHER_HEADER_INSTALLDIR = usr/local/include/objc
 INSTALLDIR = usr/lib
 
 ifeq "$(PLATFORM)" "Darwin"
-CFLAGS += $(ARCH_FLAGS)
-LDFLAGS += $(ARCH_FLAGS) -dynamiclib -dynamic -compatibility_version 1 -current_version $(CURRENT_PROJECT_VERSION) 
+LDFLAGS += -dynamiclib -dynamic -compatibility_version 1 -current_version $(CURRENT_PROJECT_VERSION) 
 endif
 
+
 CFLAGS += $(OTHER_CFLAGS) $(RC_CFLAGS)
 LDFLAGS += $(OTHER_LDFLAGS)
 
@@ -132,18 +140,20 @@ ifndef PROFILE_CFLAGS
 PROFILE_CFLAGS = -DPROFILE -pg -Os
 endif
 
-CFLAGS_OPTIMIZED = $(CFLAGS) $(OPTIMIZATION_CFLAGS)
-CFLAGS_DEBUG     = $(CFLAGS) $(DEBUG_CFLAGS)
-CFLAGS_PROFILE   = $(CFLAGS) $(PROFILE_CFLAGS)
+CFLAGS_OPTIMIZED = $(OPTIMIZATION_CFLAGS) $(CFLAGS)
+CFLAGS_DEBUG     = $(DEBUG_CFLAGS) $(CFLAGS)
+CFLAGS_PROFILE   = $(PROFILE_CFLAGS) $(CFLAGS)
 
 LDFLAGS_OPTIMIZED = $(LDFLAGS) -g
 LDFLAGS_DEBUG     = $(LDFLAGS) -g
 LDFLAGS_PROFILE   = $(LDFLAGS) -g -pg
 
-SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj
+SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj runtime/Auto.subproj
 
 # files to compile
 SOURCES=
+# files to compile into separate linker modules
+MODULE_SOURCES=
 # files to not compile
 OTHER_SOURCES=
 # headers to install in /usr/include/objc
@@ -155,17 +165,17 @@ OTHER_HEADERS=
 
 # runtime
 SOURCES += $(addprefix runtime/, \
-        Object.m Protocol.m hashtable2.m maptable.m objc-class.m objc-errors.m \
-        objc-file.m objc-load.m objc-moninit.c objc-runtime.m objc-sel.m \
-       objc-sync.m objc-exception.m \
-        )
+       Object.m Protocol.m hashtable2.m maptable.m objc-class.m objc-errors.m \
+       objc-file.m objc-load.m objc-moninit.c objc-runtime.m objc-sel.m \
+       objc-sync.m objc-exception.m objc-auto.m objc-sel-set.m objc-rtp.m \
+       )
 PUBLIC_HEADERS += $(addprefix runtime/, \
-        objc-class.h objc-api.h objc-load.h objc-runtime.h objc.h Object.h \
-       objc-sync.h objc-exception.h \
-        Protocol.h error.h hashtable2.h \
-        )
-PRIVATE_HEADERS += runtime/objc-private.h runtime/objc-config.h runtime/objc-sel-table.h
-OTHER_HEADERS += runtime/maptable.h 
+       objc-class.h objc-api.h objc-load.h objc-runtime.h objc.h Object.h \
+       objc-sync.h objc-exception.h objc-auto.h \
+       Protocol.h error.h hashtable2.h \
+       )
+PRIVATE_HEADERS += runtime/objc-private.h runtime/objc-config.h runtime/objc-sel-table.h runtime/objc-sel-set.h runtime/objc-rtp.h
+OTHER_HEADERS += runtime/maptable.h runtime/objc-auto.h
 
 # OldClasses
 SOURCES += runtime/OldClasses.subproj/List.m
@@ -175,14 +185,33 @@ PUBLIC_HEADERS += runtime/OldClasses.subproj/List.h
 SOURCES += runtime/Messengers.subproj/objc-msg.s
 OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-ppc.s runtime/Messengers.subproj/objc-msg-i386.s
 
+# Auto support
+SOURCES += runtime/Auto.subproj/objc-auto.s
+OTHER_SOURCES += runtime/Auto.subproj/objc-auto-ppc.s runtime/Auto.subproj/objc-auto-i386.s
+
+# RTP symbols for gdb
+# See also $(OBJROOT)/runtime/objc-rtp-sym.ppc.o rule below.
+OTHER_SOURCES += runtime/objc-rtp-sym.s
+
+# Interposing support.
+# This code is built into a second module so dyld's function interposing 
+# can manipulate the calls.
+MODULE_SOURCES += runtime/Messengers.subproj/objc-msg-stub.s
+OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-stub-ppc.s runtime/Messengers.subproj/objc-msg-stub-i386.s
+
 # project root
-OTHER_SOURCES += Makefile APPLE_LICENSE objc-exports libobjc.order
+OTHER_SOURCES += Makefile APPLE_LICENSE objc-exports
 
 OBJECTS = $(addprefix $(OBJROOT)/, $(addsuffix .o, $(basename $(SOURCES) ) ) )
 OBJECTS_OPTIMIZED = $(OBJECTS:.o=.opt.o)
 OBJECTS_DEBUG = $(OBJECTS:.o=.debug.o)
 OBJECTS_PROFILE = $(OBJECTS:.o=.profile.o)
 
+MODULE_OBJECTS = $(addprefix $(OBJROOT)/, $(addsuffix .o, $(basename $(MODULE_SOURCES) ) ) )
+MODULE_OBJECTS_OPTIMIZED = $(MODULE_OBJECTS:.o=.opt.o)
+MODULE_OBJECTS_DEBUG = $(MODULE_OBJECTS:.o=.debug.o)
+MODULE_OBJECTS_PROFILE = $(MODULE_OBJECTS:.o=.profile.o)
+
 # For simplicity, each object target depends on all objc headers. Most of 
 # them come close to requiring this anyway, and rebuild from scratch is fast.
 DEPEND_HEADERS = $(addprefix $(SRCROOT)/, \
@@ -232,6 +261,36 @@ $(OBJROOT)/runtime/Messengers.subproj/objc-msg.profile.o : \
        $(SRCROOT)/runtime/Messengers.subproj/objc-msg-ppc.s \
        $(SRCROOT)/runtime/Messengers.subproj/objc-msg-i386.s
 
+# Additional dependency: objc-msg-sutb.s depends on objc-msg-stub-ppc.s and 
+# objc-msg-stub-i386.s, which it includes.
+$(OBJROOT)/runtime/Messengers.subproj/objc-msg-stub.opt.o \
+$(OBJROOT)/runtime/Messengers.subproj/objc-msg-stub.debug.o \
+$(OBJROOT)/runtime/Messengers.subproj/objc-msg-stub.profile.o : \
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-ppc.s \
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-i386.s
+
+# Additional dependency: objc-auto.s depends on objc-auto-ppc.s and 
+# objc-auto-i386.s, which it includes.
+$(OBJROOT)/runtime/Auto.subproj/objc-auto.opt.o \
+$(OBJROOT)/runtime/Auto.subproj/objc-auto.debug.o \
+$(OBJROOT)/runtime/Auto.subproj/objc-auto.profile.o : \
+       $(SRCROOT)/runtime/Auto.subproj/objc-auto-ppc.s \
+       $(SRCROOT)/runtime/Auto.subproj/objc-auto-i386.s
+
+# Additional rules: objc-rtp-sym.s needs to be built with a per-arch seg1addr, 
+# and need to be stripped here because stripping the dylib does not remove 
+# debug info from the magic sections.
+# objc-rtp-sym.s is not in SOURCES, and objc-rtp-sym.o is not in OBJECTS
+$(OBJROOT)/runtime/objc-rtp-sym.ppc.o: $(SRCROOT)/runtime/objc-rtp-sym.s
+       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch ppc "$<" -c -o "$@.temp"
+       $(SILENT) $(STRIP) -S "$@.temp"
+       $(SILENT) $(LD) -arch ppc -seg1addr 0xfffec000 "$@.temp" -r -o "$@"
+
+$(OBJROOT)/runtime/objc-rtp-sym.i386.o: $(SRCROOT)/runtime/objc-rtp-sym.s
+       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch i386 "$<" -c -o "$@.temp"
+       $(SILENT) $(STRIP) -S "$@.temp"
+       $(SILENT) $(LD) -arch i386 -seg1addr 0xfffe8000 "$@.temp" -r -o "$@"
+
 
 # These are the main targets:
 #    build             builds the library to OBJROOT and SYMROOT
@@ -257,7 +316,7 @@ ifeq "$(SRCROOT)" "."
        $(SILENT) $(ECHO) "SRCROOT must be defined to be the destination directory; it cannot be '.'"
        exit 1
 endif
-       $(SILENT) $(TAR) -cf $(SRCROOT)/objc4.sources.tar $(SOURCES) $(PUBLIC_HEADERS) $(PRIVATE_HEADERS) $(OTHER_HEADERS) $(OTHER_SOURCES)
+       $(SILENT) $(TAR) -cf $(SRCROOT)/objc4.sources.tar $(SOURCES) $(PUBLIC_HEADERS) $(PRIVATE_HEADERS) $(OTHER_HEADERS) $(OTHER_SOURCES) $(MODULE_SOURCES)
        $(SILENT) $(CD) $(SRCROOT) && $(TAR) -xf $(SRCROOT)/objc4.sources.tar 
        $(SILENT) $(REMOVE) -f $(SRCROOT)/objc4.sources.tar
 
@@ -325,8 +384,14 @@ install: build installhdrs
 
 clean:
        $(SILENT) $(ECHO) "Deleting build products..."
-       $(foreach A, $(ARCH_LIST), \
-               $(SILENT) $(REMOVE) -f $(OBJROOT)/libobjc_debug.$A.o $(OBJROOT)/libobjc_profile.$A.o $(OBJROOT)/libobjc.$A.o ; )
+       $(SILENT) $(REMOVE) -f \
+         $(foreach A, $(ARCH_LIST), \
+           $(OBJROOT)/libobjc_debug.$A.$(VERSION_NAME)$(LIBRARY_EXT) \
+           $(OBJROOT)/libobjc_profile.$A.$(VERSION_NAME)$(LIBRARY_EXT) \
+           $(OBJROOT)/libobjc.$A.$(VERSION_NAME)$(LIBRARY_EXT) \
+           $(OBJROOT)/runtime/objc-rtp-sym.$A.o \
+           $(OBJROOT)/runtime/objc-rtp-sym.$A.o.temp \
+         )
 
        $(SILENT) $(REMOVE) -f $(SYMROOT)/libobjc.optimized.o
        $(SILENT) $(REMOVE) -f $(SYMROOT)/libobjc.debug.o
@@ -340,6 +405,10 @@ clean:
        $(SILENT) $(REMOVE) -f $(OBJECTS_DEBUG)
        $(SILENT) $(REMOVE) -f $(OBJECTS_PROFILE)
 
+       $(SILENT) $(REMOVE) -f $(MODULE_OBJECTS_OPTIMIZED)
+       $(SILENT) $(REMOVE) -f $(MODULE_OBJECTS_DEBUG)
+       $(SILENT) $(REMOVE) -f $(MODULE_OBJECTS_PROFILE)
+
        $(SILENT) $(REMOVE) -rf $(SYMROOT)/ProjectHeaders
 
 prebuild:
@@ -376,24 +445,33 @@ prebuild-profile:
        $(SILENT) $(MKDIRS) $(foreach S, $(SUBDIRS), $(OBJROOT)/$(S) )
 
 
-compile-optimized: $(OBJECTS_OPTIMIZED)
-compile-debug: $(OBJECTS_DEBUG)
-compile-profile: $(OBJECTS_PROFILE)
+compile-optimized: $(OBJECTS_OPTIMIZED) $(MODULE_OBJECTS_OPTIMIZED) $(foreach A, $(ARCH_LIST), $(OBJROOT)/runtime/objc-rtp-sym.$A.o )
+compile-debug: $(OBJECTS_DEBUG) $(MODULE_OBJECTS_DEBUG) $(foreach A, $(ARCH_LIST), $(OBJROOT)/runtime/objc-rtp-sym.$A.o )
+compile-profile: $(OBJECTS_PROFILE) $(MODULE_OBJECTS_PROFILE) $(foreach A, $(ARCH_LIST), $(OBJROOT)/runtime/objc-rtp-sym.$A.o )
 
 
-# link lib-suffix, LDFLAGS, OBJECTS
+# link lib-suffix, LDFLAGS, OBJECTS, MODULE_OBJECTS
 #  libsuffix should be "" or _debug or _profile
 ifeq "$(PLATFORM)" "Darwin"
 
 define link
-       $(SILENT) $(CC) $2 \
-          -Wl,-init,__objcInit \
-          -Wl,-single_module \
-          -Wl,-exported_symbols_list,$(SRCROOT)/objc-exports \
-          -Wl,-sectorder,__TEXT,__text,$(SRCROOT)/libobjc.order \
-          -install_name /$(INSTALLDIR)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \
-          -o $(SYMROOT)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \
-          $3
+       $(foreach A, $(ARCH_LIST), \
+         $(SILENT) $(LD) -r \
+           -arch $A \
+           -o $(OBJROOT)/libobjc$1.$A.o \
+           $3 ; \
+         $(SILENT) $(CC) $2 \
+           -arch $A \
+           -Wl,-exported_symbols_list,$(SRCROOT)/objc-exports \
+           $(ORDER) \
+           -sectcreate __DATA __commpage $(OBJROOT)/runtime/objc-rtp-sym.$A.o \
+           -install_name /$(INSTALLDIR)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \
+           -o $(OBJROOT)/libobjc$1.$A.$(VERSION_NAME)$(LIBRARY_EXT) \
+           $(OBJROOT)/libobjc$1.$A.o $4 ; \
+         )
+       $(SILENT) $(LIPO) \
+         -create -output $(SYMROOT)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \
+         $(foreach A, $(ARCH_LIST), -arch $A $(OBJROOT)/libobjc$1.$A.$(VERSION_NAME)$(LIBRARY_EXT) )
 endef
 
 else
@@ -407,15 +485,15 @@ endif
 
 link-optimized:
        $(SILENT) $(ECHO) "Linking (optimized)..."
-       $(call link,,$(LDFLAGS_OPTIMIZED),$(OBJECTS_OPTIMIZED) )
+       $(call link,,$(LDFLAGS_OPTIMIZED),$(OBJECTS_OPTIMIZED),$(MODULE_OBJECTS_OPTIMIZED) )
 
 link-debug:
        $(SILENT) $(ECHO) "Linking (debug)..."
-       $(call link,_debug,$(LDFLAGS_DEBUG),$(OBJECTS_DEBUG) )
+       $(call link,_debug,$(LDFLAGS_DEBUG),$(OBJECTS_DEBUG),$(MODULE_OBJECTS_DEBUG) )
 
 link-profile:
        $(SILENT) $(ECHO) "Linking (profile)..."
-       $(call link,_profile,$(LDFLAGS_PROFILE),$(OBJECTS_PROFILE))
+       $(call link,_profile,$(LDFLAGS_PROFILE),$(OBJECTS_PROFILE),$(MODULE_OBJECTS_PROFILE) )
 
 
 postbuild:
diff --git a/libobjc.order b/libobjc.order
deleted file mode 100644 (file)
index 177aa69..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-# objc4 order file
-# Updated August 2003 (Panther)
-# Start with automatic order file, then:
-# 1. move or add _objc_msgSendNonNil immediately after _objc_msgSend
-# 2. move or add _objc_msgSendNonNil_stret immediately after _objc_msgSend_stret
-# msgSend and msgSendNonNil must not be separated by the linker.
-libobjc.o:_objc_msgSend
-libobjc.o:_objc_msgSendNonNil
-libobjc.o:_objc_msgSend_stret
-libobjc.o:_objc_msgSendNonNil_stret
-libobjc.o:__class_lookupMethodAndLoadCache
-libobjc.o:__cache_fill
-libobjc.o:__internal_object_dispose
-libobjc.o:___sel_registerName
-libobjc.o:__cache_getMethod
-libobjc.o:__internal_class_createInstanceFromZone
-libobjc.o:__cache_getImp
-libobjc.o:_objc_msgSendSuper
-libobjc.o:__objc_search_builtins
-libobjc.o:_sel_registerNameNoCopyNoLock
-libobjc.o:_NXHashGet
-libobjc.o:_class_respondsToMethod
-libobjc.o:_object_getClassName
-libobjc.o:_objc_getClass
-libobjc.o:__objc_getFreedObjectClass
-libobjc.o:__objc_fixup_selector_refs
-libobjc.o:_class_lookupMethod
-libobjc.o:_NXNextHashState
-libobjc.o:_class_poseAs
-libobjc.o:_classIsEqual
-libobjc.o:_classHash
-libobjc.o:__objcTweakMethodListPointerForClass
-libobjc.o:_class_initialize
-libobjc.o:_objc_lookUpClass
-libobjc.o:-[Protocol conformsTo:]
-libobjc.o:__objc_create_zone
-libobjc.o:_NXHashInsert
-libobjc.o:__objc_add_classes_from_image
-libobjc.o:__cache_collect_free
-libobjc.o:__objc_hash_selector
-libobjc.o:__class_install_relationships
-libobjc.o:__objc_register_category
-libobjc.o:__mapStrIsEqual
-libobjc.o:__cache_malloc
-libobjc.o:__cache_expand
-libobjc.o:_objc_msgSendSuper_stret
-libobjc.o:_NXMapInsert
-libobjc.o:__fetchInitializingClassList
-libobjc.o:__NXMapMember
-libobjc.o:_map_method_descs
-libobjc.o:__mapStrHash
-libobjc.o:__objc_call_loads_for_image
-libobjc.o:_objc_getClassList
-libobjc.o:__objc_equal_selector
-libobjc.o:__cache_addForwardEntry
-libobjc.o:_NXMapGet
-libobjc.o:__objc_checkForPendingClassReferences
-libobjc.o:_NXMapRemove
-libobjc.o:_get_base_method_list
-libobjc.o:__objc_resolve_categories_for_class
-libobjc.o:__objc_insertMethods
-libobjc.o:_sel_lock
-libobjc.o:_sel_unlock
-libobjc.o:__cache_create
-libobjc.o:__thisThreadIsInitializingClass
-libobjc.o:__garbage_make_room
-libobjc.o:__objcInit
-libobjc.o:__objc_map_class_refs_for_image
-libobjc.o:_class_lookupNamedMethodInMethodList
-libobjc.o:_sel_registerName
-libobjc.o:__collecting_in_critical
-libobjc.o:__objc_add_categories_from_image
-libobjc.o:+[Object alloc]
-libobjc.o:__setThisThreadIsInitializingClass
-libobjc.o:__setThisThreadIsNotInitializingClass
-libobjc.o:_NXUniqueString
-libobjc.o:_NXStrIsEqual
-libobjc.o:__get_pc_for_thread
-libobjc.o:__objc_map_image
-libobjc.o:__objc_addHeader
-libobjc.o:-[Object init]
-libobjc.o:__objc_fixup_protocol_objects_for_image
-libobjc.o:__objc_bindClassIfNeeded
-libobjc.o:_class_getInstanceMethod
-libobjc.o:_NXStrHash
-libobjc.o:-[Object free]
-libobjc.o:__getObjcModules
-libobjc.o:__getObjcImageInfo
-libobjc.o:_class_getVariable
-libobjc.o:-[Protocol descriptionForInstanceMethod:]
-libobjc.o:__NXMapRehash
-libobjc.o:__internal_object_copyFromZone
-libobjc.o:_NXPtrHash
-libobjc.o:__NXHashRehash
-libobjc.o:__getObjcClassRefs
-libobjc.o:_sel_getName
-libobjc.o:_CopyIntoReadOnly
-libobjc.o:_hashPrototype
-libobjc.o:_lookup_method
-libobjc.o:_class_nextMethodList
-libobjc.o:__objc_addOrigClass
-libobjc.o:_NXHashRemove
-libobjc.o:_objc_msgSendv
-libobjc.o:__objc_msgForward
-libobjc.o:-[Object class]
-libobjc.o:+[Object name]
-libobjc.o:_objc_getOrigClass
-libobjc.o:_object_setInstanceVariable
-libobjc.o:_NXCreateHashTableFromZone
-libobjc.o:_hashPrototype
-libobjc.o:__objc_add_category_flush_caches
-libobjc.o:-[Object perform:with:with:]
-libobjc.o:__objc_defaultClassHandler
-libobjc.o:_class_getInstanceVariable
-libobjc.o:_freeBuckets
-libobjc.o:_freeBucketPairs
-libobjc.o:_NXNoEffectFree
-libobjc.o:__getObjcHeaderData
-libobjc.o:__getObjcMessageRefs
-libobjc.o:_NXCreateMapTableFromZone
-libobjc.o:_flush_caches
-libobjc.o:_objc_msgSendv_stret
-libobjc.o:-[Object respondsTo:]
-libobjc.o:-[Object perform:]
-libobjc.o:-[Object self]
-libobjc.o:+[Object class]
-libobjc.o:-[Object isMemberOf:]
-libobjc.o:__objc_init_class_hash
-libobjc.o:_bootstrap
-libobjc.o:_isEqualPrototype
-libobjc.o:_NXInitHashState
-libobjc.o:_log2
-libobjc.o:_exp2m1
-libobjc.o:_objc_setConfiguration
-libobjc.o:_NXCreateHashTable
-libobjc.o:_log2
-libobjc.o:__objc_fixup_string_objects_for_image
-libobjc.o:__getObjcStringObjects
-libobjc.o:__getObjcProtocols
-libobjc.o:+[Object initialize]
-libobjc.o:+[Protocol _fixup:numElements:]
-libobjc.o:__objc_flush_caches
-libobjc.o:+[Protocol load]
-libobjc.o:__getObjcHeaders
-libobjc.o:_objc_exception_set_functions
-libobjc.o:_isEqualPrototype
-libobjc.o:_objc_getClasses
-libobjc.o:_addClassToOriginalClass
-libobjc.o:__mapPtrHash
-libobjc.o:_objc_setMultithreaded
-libobjc.o:__objc_unmap_image
-libobjc.o:__objc_fatalHeader
-libobjc.o:__objc_headerStart
-libobjc.o:__mapPtrIsEqual
-libobjc.o:_lookup_instance_method
-libobjc.o:_NXCountHashTable
-libobjc.o:_objc_pendClassReference
-libobjc.o:__objc_getNonexistentClass
-libobjc.o:__cache_flush
-libobjc.o:__objc_pthread_destroyspecific
-libobjc.o:__destroyInitializingClassList
-libobjc.o:_objc_loadModule
index 6e0945f3531664472ca04f364c4389ce8413d6ea..7ae4460a3a3b225e9c0d210fbed1240c80bce724 100644 (file)
@@ -21,6 +21,25 @@ _method_getNumberOfArguments
 _method_getSizeOfArguments
 _method_getArgumentInfo
 _class_nextMethodList
+# objc-auto.h - actually, everything possible for now
+_objc_collect
+_objc_collect_generation
+_objc_numberAllocated
+_objc_isAuto
+_objc_collecting_enabled
+_objc_allocate_object
+_objc_assign_strongCast
+_objc_assign_global
+_objc_assign_ivar
+_objc_assign_strongCast_generic
+_objc_assign_global_generic
+_objc_assign_ivar_generic
+_objc_assign_strongCast_CF
+_objc_assign_ivar_address_CF
+_objc_collect_init
+_objc_is_finalized
+_objc_memmove_collectable
+_objc_collect_if_needed
 # objc-exception.h
 _objc_exception_throw
 _objc_exception_try_enter
@@ -54,6 +73,7 @@ _objc_msgSendv_stret
 _objc_getClassList
 _objc_getClasses
 _objc_lookUpClass
+_objc_getRequiredClass
 _objc_addClass
 _objc_setClassHandler
 _objc_setMultithreaded
@@ -162,4 +182,4 @@ _do_not_remove_this_dummy_function
 # used by debugging tools like heap
 __objc_debug_class_hash
 # used by Foundation's NSAutoreleaseFreedObjectCheckEnabled
-__objc_getFreedObjectClass
\ No newline at end of file
+__objc_getFreedObjectClass
diff --git a/runtime/Auto.subproj/objc-auto-i386.s b/runtime/Auto.subproj/objc-auto-i386.s
new file mode 100644 (file)
index 0000000..082949e
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#warning Intel version needs to be implemented.
diff --git a/runtime/Auto.subproj/objc-auto-ppc.s b/runtime/Auto.subproj/objc-auto-ppc.s
new file mode 100644 (file)
index 0000000..33eb98f
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+ ;
+ ; This section includes declarations of routines that will be used to populate
+ ; the runtime pages during auto initialization.  Each wb_routine definition 
+ ; creates an absolute branch into the rtp plus a non-gc version of code for
+ ; non collecting apps.  Note - the blr is necessary at the end of the non-gc 
+ ; routine for code copying to behave correctly. 
+ ;
+#undef  OBJC_ASM
+#define OBJC_ASM
+#include "objc-rtp.h"
+    .macro  wb_routine
+    .globl  _$0                ; primary entry name
+;   .abs    _abs_$0,kRTAddress_$0
+_$0:                           ; primary entry point
+    ba      $1                 ; branch to runtime page
+    
+    .globl  _$0_non_gc         ; non_gc entry point name
+_$0_non_gc:                    ; non_gc entry point
+    .endmacro
+
+    .text
+    
+// note - unfortunately ba does not accept constant expressions
+    
+    ; non-gc routines
+    
+    ; id objc_assign_strongCast(id value, id *dest)
+    wb_routine  objc_assign_strongCast,0xfffefea0
+    stw         r3,0(r4)        ; store value at dest
+    blr                         ; return
+    
+    ; id objc_assign_global(id value, id *dest)
+    wb_routine  objc_assign_global,0xfffefeb0
+    stw         r3,0(r4)        ; store value at dest
+    blr                         ; return
+
+    ; id objc_assign_ivar(id value, id dest, unsigned int offset)
+    wb_routine  objc_assign_ivar,0xfffefec0
+    stwx        r3,r4,r5        ; store value at (dest+offset)
+    blr                         ; return
+    
\ No newline at end of file
diff --git a/runtime/Auto.subproj/objc-auto.s b/runtime/Auto.subproj/objc-auto.s
new file mode 100644 (file)
index 0000000..220e3d0
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
+ * Reserved.  This file contains Original Code and/or Modifications of
+ * Original Code as defined in and that are subject to the Apple Public
+ * Source License Version 1.1 (the "License").  You may not use this file
+ * except in compliance with the License.  Please obtain a copy of the
+ * License at http://www.apple.com/publicsource and read it before using
+ * this file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT.  Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+
+#if defined (__i386__) || defined (i386)
+    #include "objc-auto-i386.s"
+#elif defined (__ppc__) || defined(ppc)
+    #include "objc-auto-ppc.s"
+#else
+    #error Architecture not supported
+#endif
index fbb8c038e75ba931817b73d10daaa8aa15b0d606..100ace5d684d2cd1e608dc1afefc2f232f8facc8 100644 (file)
 // assembler is fixed we have to find another way.
 #define NO_MACRO_CONSTS
 #ifdef NO_MACRO_CONSTS
+       kOne        = 1
        kTwo        = 2
+       kFour       = 4
        kEight      = 8
+       kTwelve     = 12
 #endif
 
 /********************************************************************
@@ -77,6 +80,21 @@ _objc_exitPoints:
        .long   LMsgSendSuperStretExit
        .long   0
 
+
+#if defined(__DYNAMIC__)
+
+/* 
+ * Thunk to retrieve PC.
+ * `call 1; 1: pop` sequence breaks any branch-prediction stack. 
+ */
+
+.align 4, 0x90
+L_get_pc_thunk.edx:
+       movl    (%esp,1), %edx
+       ret
+
+#endif
+
 /*
  * Handcrafted dyld stubs for each external call.
  * They should be converted into a local branch after linking. aB.
@@ -94,15 +112,15 @@ _objc_exitPoints:
 .picsymbol_stub               ;\
 L ## name ## $stub:           ;\
        .indirect_symbol name     ;\
-       call    L0$ ## name       ;\
+       call    L_get_pc_thunk.edx ;\
 L0$ ## name:                  ;\
-       popl    %eax              ;\
-       movl    L ## name ## $lz-L0$ ## name(%eax),%edx ;\
-       jmp     %edx              ;\
+       movl    L ## name ## $lz-L0$ ## name(%edx),%ecx ;\
+       jmp     %ecx              ;\
 L ## name ## $stub_binder:    ;\
-    lea     L ## name ## $lz-L0$ ## name(%eax),%eax ;\
+    lea     L ## name ## $lz-L0$ ## name(%edx),%eax ;\
     pushl   %eax              ;\
     jmp     dyld_stub_binding_helper ;\
+    nop                       ;\
 .data                         ;\
 .lazy_symbol_pointer          ;\
 L ## name ## $lz:             ;\
@@ -226,8 +244,8 @@ EXTERNAL_SYMBOL     = 1
 .macro LOAD_STATIC_WORD
 
 #if defined(__DYNAMIC__)
-       call    1f
-1:     popl    %edx
+       call    L_get_pc_thunk.edx
+1:     
 .if $2 == EXTERNAL_SYMBOL
        movl    L$1-1b(%edx),$0
        movl    0($0),$0
@@ -258,8 +276,8 @@ EXTERNAL_SYMBOL     = 1
 
 .macro LEA_STATIC_DATA
 #if defined(__DYNAMIC__)
-       call    1f
-1:     popl    %edx
+       call    L_get_pc_thunk.edx
+1:     
 .if $2 == EXTERNAL_SYMBOL
        movl    L$1-1b(%edx),$0
 .elseif $2 == LOCAL_SYMBOL
@@ -410,7 +428,7 @@ CACHE_GET     = 2   // first argument is class, search that class
 // search the receiver's cache
 LMsgSendProbeCache_$0_$1_$2:
 #if defined(OBJC_INSTRUMENTED)
-       inc     %ebx                    // probeCount += 1
+       addl    $kOne, %ebx                     // probeCount += 1
 #endif
        andl    %esi, %edx              // index &= mask
        movl    (%edi, %edx, 4), %eax   // method = buckets[index]
@@ -419,7 +437,7 @@ LMsgSendProbeCache_$0_$1_$2:
        je      LMsgSendCacheMiss_$0_$1_$2      // go to cache miss code
        cmpl    method_name(%eax), %ecx // check for method name match
        je      LMsgSendCacheHit_$0_$1_$2       // go handle cache hit
-       inc     %edx                    // bump index ...
+       addl    $kOne, %edx                     // bump index ...
        jmp     LMsgSendProbeCache_$0_$1_$2 // ... and loop
 
 // not found in cache: restore state and go to callers handler
@@ -431,7 +449,7 @@ LMsgSendCacheMiss_$0_$1_$2:
        je      LMsgSendMissInstrumentDone_$0_$1_$2     // ... emptyCache, do not record anything
 
        // locate and update the CacheInstrumentation structure
-       inc     %esi                    // entryCount = mask + 1
+       addl    $kOne, %esi                     // entryCount = mask + 1
 #ifdef NO_MACRO_CONSTS
        shll    $kTwo, %esi             // tableSize = entryCount * sizeof(entry)
 #else
@@ -441,7 +459,7 @@ LMsgSendCacheMiss_$0_$1_$2:
        addl    %edx, %esi              // cacheData = &cache->buckets[mask+1]
 
        movl    missCount(%esi), %edi   // 
-       inc     %edi                    // 
+       addl    $kOne, %edi                     // 
        movl    %edi, missCount(%esi)   // cacheData->missCount += 1
        movl    missProbes(%esi), %edi  // 
        addl    %ebx, %edi              // 
@@ -465,7 +483,7 @@ LMsgSendMissHistoIndexSet_$0_$1_$2:
 #endif
        addl    %ebx, %esi              // calculate &CacheMissHistogram[probeCount<<2]
        movl    0(%esi), %edi           // get current tally
-       inc     %edi                    // 
+       addl    $kOne, %edi                     // 
        movl    %edi, 0(%esi)           // tally += 1
 LMsgSendMissInstrumentDone_$0_$1_$2:
        popl    %ebx                    // restore non-volatile register
@@ -520,7 +538,7 @@ LMsgSendCacheHit_$0_$1_$2:
        je      LMsgSendHitInstrumentDone_$0_$1_$2      // ... emptyCache, do not record anything
 
        // locate and update the CacheInstrumentation structure
-       inc     %esi                    // entryCount = mask + 1
+       addl    $kOne, %esi                     // entryCount = mask + 1
 #ifdef NO_MACRO_CONSTS
        shll    $kTwo, %esi             // tableSize = entryCount * sizeof(entry)
 #else
@@ -530,7 +548,7 @@ LMsgSendCacheHit_$0_$1_$2:
        addl    %edx, %esi              // cacheData = &cache->buckets[mask+1]
 
        movl    hitCount(%esi), %edi
-       inc     %edi
+       addl    $kOne, %edi
        movl    %edi, hitCount(%esi)    // cacheData->hitCount += 1
        movl    hitProbes(%esi), %edi
        addl    %ebx, %edi
@@ -554,7 +572,7 @@ LMsgSendHitHistoIndexSet_$0_$1_$2:
 #endif
        addl    %ebx, %esi              // calculate &CacheHitHistogram[probeCount<<2]
        movl    0(%esi), %edi           // get current tally
-       inc     %edi                    // 
+       addl    $kOne, %edi                     // 
        movl    %edi, 0(%esi)           // tally += 1
 LMsgSendHitInstrumentDone_$0_$1_$2:
        popl    %ebx                    // restore non-volatile register
@@ -598,6 +616,8 @@ LMsgSendHitInstrumentDone_$0_$1_$2:
 //       MSG_SEND      (first parameter is receiver)
 //       MSG_SENDSUPER (first parameter is address of objc_super structure)
 //
+// Stack must be at 0xXXXXXXXc on entrance.
+//
 // On exit: Register parameters restored from CacheLookup
 //       imp in eax
 //
@@ -605,14 +625,19 @@ LMsgSendHitInstrumentDone_$0_$1_$2:
 
 .macro MethodTableLookup
 
+#ifdef NO_MACRO_CONSTS
+       subl    $kFour, %esp            // 16-byte align the stack
+#else
+       subl    $4, %esp                // 16-byte align the stack
+#endif
        // push args (class, selector)
        pushl   %ecx
        pushl   %eax
        CALL_EXTERN(__class_lookupMethodAndLoadCache)
 #ifdef NO_MACRO_CONSTS
-       addl    $kEight, %esp                           // pop parameters
+       addl    $kTwelve, %esp          // pop parameters and alignment
 #else
-       addl    $8, %esp                                        // pop parameters
+       addl    $12, %esp               // pop parameters and alignment
 #endif
 .endmacro
 
@@ -712,9 +737,8 @@ LMsgSendCacheMiss:
 
 // message sent to nil: redirect to nil receiver, if any
 LMsgSendNilSelf:
-       call    1f                      // load new receiver
-1:     popl    %edx
-       movl    __objc_nilReceiver-1b(%edx),%eax
+       call    L_get_pc_thunk.edx      // load new receiver
+1:     movl    __objc_nilReceiver-1b(%edx),%eax
        testl   %eax, %eax              // return nil if no new receiver
        je      LMsgSendDone
        movl    %eax, self(%esp)        // send to new receiver
@@ -781,9 +805,18 @@ LMsgSendSuperExit:
        movl    (marg_list+4)(%ebp), %edx
        addl    $8, %edx                        // skip self & selector
        movl    (marg_size+4)(%ebp), %ecx
-       subl    $5, %ecx                        // skip self & selector
+       subl    $8, %ecx                        // skip self & selector
        shrl    $2, %ecx
-       jle     LMsgSendvArgsOK
+       je      LMsgSendvArgsOK
+
+       // %esp = %esp - (16 - ((numVariableArguments && 3) << 2))
+       movl    %ecx, %eax                      // 16-byte align stack
+       andl    $3, %eax
+       shll    $2, %eax
+       neg     %eax
+       addl    $16, %eax
+       subl    %eax, %esp
+
 LMsgSendvArgLoop:
        decl    %ecx
        movl    0(%edx, %ecx, 4), %eax
@@ -841,9 +874,8 @@ LMsgSendStretCacheMiss:
 
 // message sent to nil: redirect to nil receiver, if any
 LMsgSendStretNilSelf:
-       call    1f                      // load new receiver
-1:     popl    %edx
-       movl    __objc_nilReceiver-1b(%edx),%eax
+       call    L_get_pc_thunk.edx      // load new receiver
+1:     movl    __objc_nilReceiver-1b(%edx),%eax
        testl   %eax, %eax              // return nil if no new receiver
        je      LMsgSendStretDone
        movl    %eax, self_stret(%esp)  // send to new receiver
@@ -928,6 +960,13 @@ LMsgSendSuperStretExit:
        subl    $5, %ecx                        // skip self & selector
        shrl    $2, %ecx
        jle     LMsgSendvStretArgsOK
+
+       movl    %ecx, %eax                      // 16-byte align stack
+       andl    $3, %eax
+       shll    $2, %eax
+       subl    $12, %esp
+       addl    %eax, %esp
+
 LMsgSendvStretArgLoop:
        decl    %ecx
        movl    0(%edx, %ecx, 4), %eax
@@ -983,11 +1022,10 @@ LUnkSelStr:    .ascii    "Does not recognize selector %s\0"
        // non-stret version ...
        pushl   %ebp
        movl    %esp,%ebp
-       movl    (selector+4)(%esp), %eax
+       movl    (selector+4)(%ebp), %eax
 #if defined(__DYNAMIC__)
-       call    L__objc_msgForward$pic_base
+       call    L_get_pc_thunk.edx
 L__objc_msgForward$pic_base:
-       popl    %edx
        leal    LFwdSel-L__objc_msgForward$pic_base(%edx),%ecx
        cmpl    %ecx, %eax
 #else
@@ -995,7 +1033,8 @@ L__objc_msgForward$pic_base:
 #endif
        je      LMsgForwardError
 
-       leal    (self+4)(%esp), %ecx
+       subl    $8, %esp                // 16-byte align the stack
+       leal    (self+4)(%ebp), %ecx
        pushl   %ecx
        pushl   %eax
 #if defined(__DYNAMIC__)
@@ -1004,7 +1043,7 @@ L__objc_msgForward$pic_base:
        movl    LFwdSel,%ecx
 #endif
        pushl   %ecx
-       pushl   (self+16)(%esp)
+       pushl   (self+4)(%ebp)
        call    _objc_msgSend
        movl    %ebp,%esp
        popl    %ebp
@@ -1013,6 +1052,7 @@ L__objc_msgForward$pic_base:
 // call error handler with unrecognized selector message
        .align  4, 0x90
 LMsgForwardError:
+       subl    $12, %esp               // 16-byte align the stack
 #if defined(__DYNAMIC__)
        leal    LFwdSel-L__objc_msgForward$pic_base(%edx),%eax
        pushl   %eax
@@ -1022,7 +1062,7 @@ LMsgForwardError:
        pushl   $LFwdSel
        pushl   $LUnkSelStr
 #endif
-       pushl   (self+12)(%esp)
+       pushl   (self+4)(%ebp)
        CALL_EXTERN(___objc_error)      // volatile, will not return
 
 // ***** Stret version of function below
@@ -1032,12 +1072,11 @@ LMsgForwardError:
 LForwardStretVersion:
        pushl   %ebp
        movl    %esp,%ebp
-       movl    (selector_stret+4)(%esp), %eax
+       movl    (selector_stret+4)(%ebp), %eax
 
 #if defined(__DYNAMIC__)
-       call    L__objc_msgForwardStret$pic_base
+       call    L_get_pc_thunk.edx
 L__objc_msgForwardStret$pic_base:
-       popl    %edx
        leal    LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx
        cmpl    %ecx, %eax
 #else
@@ -1045,7 +1084,8 @@ L__objc_msgForwardStret$pic_base:
 #endif
        je      LMsgForwardStretError
 
-       leal    (self_stret+4)(%esp), %ecx
+       subl    $8, %esp                // 16-byte align the stack
+       leal    (self_stret+4)(%ebp), %ecx
        pushl   %ecx
        pushl   %eax
 #if defined(__DYNAMIC__)
@@ -1054,7 +1094,7 @@ L__objc_msgForwardStret$pic_base:
        movl    LFwdSel,%ecx
 #endif
        pushl   %ecx
-       pushl   (self_stret+16)(%esp)
+       pushl   (self_stret+4)(%ebp)
        call    _objc_msgSend
        movl    %ebp,%esp
        popl    %ebp
@@ -1063,6 +1103,7 @@ L__objc_msgForwardStret$pic_base:
 // call error handler with unrecognized selector message
        .align  4, 0x90
 LMsgForwardStretError:
+       subl    $12, %esp               // 16-byte align the stack
 #if defined(__DYNAMIC__)
        leal    LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%eax
        pushl   %eax
@@ -1072,9 +1113,16 @@ LMsgForwardStretError:
        pushl   $LFwdSel
        pushl   $LUnkSelStr
 #endif
-       pushl   (self_stret+12)(%esp)
+       pushl   (self_stret+4)(%ebp)
        CALL_EXTERN(___objc_error)      // volatile, will not return
 
 #endif /* defined (KERNEL) */
        END_ENTRY       __objc_msgForward
 
+
+// Special section containing a function pointer that dyld will call
+// when it loads new images.
+LAZY_PIC_FUNCTION_STUB(__objc_notify_images)
+.data
+.section __DATA,__image_notify
+.long L__objc_notify_images$stub
index 029a2bdd2218a015eefe112088cbd8c7e69fdefa..61b0bb0894d3cf336e9b916a300f1521612bc596 100644 (file)
  *  31-Dec-96  Umesh Vaishampayan  (umeshv@NeXT.com)
  *             Created from m98k.
  ********************************************************************/
+#undef  OBJC_ASM
+#define OBJC_ASM
+#include "objc-rtp.h"
 
 /********************************************************************
  * Data used by the ObjC runtime.
@@ -84,6 +88,7 @@ _objc_entryPoints:
        .long   _objc_msgSend_stret
        .long   _objc_msgSendSuper
        .long   _objc_msgSendSuper_stret
+       .long   _objc_msgSend_rtp
        .long   0
 
 .globl _objc_exitPoints
@@ -94,6 +99,7 @@ _objc_exitPoints:
        .long   LMsgSendStretExit
        .long   LMsgSendSuperExit
        .long   LMsgSendSuperStretExit
+       .long   _objc_msgSend_rtp_exit
        .long   0
 
 /*
@@ -199,6 +205,7 @@ LAZY_PIC_FUNCTION_STUB(mcount)
 #define kFwdMsgSend          1
 #define kFwdMsgSendStret     0
 
+
 /********************************************************************
  *
  * Useful macros.  Macros are used instead of subroutines, for speed.
@@ -362,41 +369,20 @@ $0:
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;
-; CacheLookup WORD_RETURN | STRUCT_RETURN, MSG_SEND | MSG_SENDSUPER | CACHE_GET, cacheMissLabel
+; CacheLookup selectorRegister, cacheMissLabel
 ;
 ; Locate the implementation for a selector in a class method cache.
 ;
-; Takes: WORD_RETURN    (r3 is first parameter)
-;        STRUCT_RETURN  (r3 is structure return address, r4 is first parameter)
-;        MSG_SEND       (first parameter is receiver)
-;        MSG_SENDSUPER  (first parameter is address of objc_super structure)
-;        CACHE_GET      (first parameter is class; return method triplet)
-;
-;        cacheMissLabel = label to branch to iff method is not cached
+; Takes: 
+;       $0 = register containing selector (r4 or r5 ONLY);
+;       cacheMissLabel = label to branch to iff method is not cached
+;       r12 = class whose cache is to be searched
 ;
-; Eats: r0, r11, r12
-; On exit: (found) MSG_SEND and MSG_SENDSUPER: return imp in r12 and ctr
-;          (found) CACHE_GET: return method triplet in r12
+; On exit: (found) method triplet in r2, imp in r12, r11 is non-zero
 ;          (not found) jumps to cacheMissLabel
 ;
-; For MSG_SEND and MSG_SENDSUPER, the messenger jumps to the imp 
-; in ctr. The same imp in r12 is used by the method itself for its
-; relative addressing. This saves the usual "jump to next line and 
-; fetch link register" construct inside the method.
-;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-; Values to specify to method lookup macros whether the return type of
-; the method is an integer or structure.
-#define WORD_RETURN   0
-#define STRUCT_RETURN 1
-
-; Values to specify to method lookup macros whether the return type of
-; the method is an integer or structure.
-#define MSG_SEND      0
-#define MSG_SENDSUPER 1
-#define CACHE_GET     2
-
 .macro CacheLookup
 
 #if defined(OBJC_INSTRUMENTED)
@@ -406,55 +392,22 @@ $0:
        li      r7,0                    ; no probes so far!
 #endif
 
-.if $1 == CACHE_GET         ; Only WORD_RETURN applies
-       lwz     r12,CACHE(r3)   ; cache = class->cache (class = 1st parameter)
-.else
-
-.if $0 == WORD_RETURN          ; WORD_RETURN
-
-.if $1 == MSG_SEND                             ; MSG_SEND
-       lwz     r12,ISA(r3)                             ; class = receiver->isa
-.elseif $1 == MSG_SENDSUPER            ; MSG_SENDSUPER
-       lwz     r12,CLASS(r3)                   ; class = super->class
-.else
-       trap                                            ; Should not happen
-.endif
-
-.else                                          ; STRUCT_RETURN
-
-.if $1 == MSG_SEND                             ; MSG_SEND
-       lwz     r12,ISA(r4)                             ; class = receiver->isa
-.elseif $1 == MSG_SENDSUPER            ; MSG_SENDSUPER
-       lwz     r12,CLASS(r4)                   ; class = super->class
-.else
-       trap                                            ; Should not happen
-.endif
-
-.endif
-
-       lwz     r12,CACHE(r12)          ; cache = class->cache
-
-.endif ; CACHE_GET
-
+       lwz     r2,CACHE(r12)           ; cache = class->cache
        stw     r9,48(r1)               ; save r9
 
 #if defined(OBJC_INSTRUMENTED)
-       mr      r6,r12                  ; save cache pointer
+       mr      r6,r                  ; save cache pointer
 #endif
-       lwz     r11,MASK(r12)   ; mask = cache->mask
 
-       addi    r9,r12,BUCKETS  ; buckets = cache->buckets
+       lwz     r11,MASK(r2)            ; mask = cache->mask
+       addi    r0,r2,BUCKETS           ; buckets = cache->buckets
        slwi    r11,r11,2               ; r11 = mask << 2 
-.if $0 == WORD_RETURN          ; WORD_RETURN
-       and     r12,r4,r11                      ; bytes = sel & (mask<<2)
-.else                                          ; STRUCT_RETURN
-       and     r12,r5,r11                      ; bytes = sel & (mask<<2)
-.endif
+       and     r9,$0,r11               ; bytes = sel & (mask<<2)
 
 #if defined(OBJC_INSTRUMENTED)
-       b       LLoop_$0_$1_$2
+       b       LLoop_$0_$1
 
-LMiss_$0_$1_$2:
+LMiss_$0_$1:
        ; r6 = cache, r7 = probeCount
        lwz     r9,MASK(r6)             ; entryCount = mask + 1
        addi    r9,r9,1                 ;
@@ -475,43 +428,32 @@ LMiss_$0_$1_$2:
        lwz     r6,36(r1)               ; restore r6
        lwz     r7,40(r1)               ; restore r7
 
-       b       $2                              ; goto cacheMissLabel
+       b       $1                      ; goto cacheMissLabel
 #endif
 
 ; search the cache
-LLoop_$0_$1_$2:
+LLoop_$0_$1:
 #if defined(OBJC_INSTRUMENTED)
        addi    r7,r7,1                 ; probeCount += 1
 #endif
 
-       lwzx    r2,r9,r12               ; method = buckets[bytes/4]
-       addi    r12,r12,4               ; bytes += 4
+       lwzx    r2,r9,r               ; method = buckets[bytes/4]
+       addi    r9,r9,4                 ; bytes += 4
        cmplwi  r2,0                    ; if (method == NULL)
 #if defined(OBJC_INSTRUMENTED)
-       beq     LMiss_$0_$1_$2
+       beq-    LMiss_$0_$1
 #else
-       beq     $2                      ; goto cacheMissLabel
+       beq-    $1                      ; goto cacheMissLabel
 #endif
 
-       lwz     r0,METHOD_NAME(r2)      ; name  = method->method_name
-       and     r12,r12,r11             ; bytes &= (mask<<2)
-.if $0 == WORD_RETURN                          ; WORD_RETURN
-       cmplw   r0,r4                   ; if (name != selector)
-.else                                          ; STRUCT_RETURN
-       cmplw   r0,r5                   ; if (name != selector)
-.endif
-       bne     LLoop_$0_$1_$2          ; goto loop
+       lwz     r12,METHOD_NAME(r2)     ; name  = method->method_name
+       and     r9,r9,r11               ; bytes &= (mask<<2)
+       cmplw   r12,$0                  ; if (name != selector)
+       bne-    LLoop_$0_$1             ; goto loop
 
 ; cache hit, r2 == method triplet address
-.if $1 == CACHE_GET
-       ; return method triplet in r12
-       ; N.B. A better way to do this is have CACHE_GET swap the use of r12 and r2.
-       mr      r12,r2
-.else
-       ; return method imp in ctr and r12
-       lwz     r12,METHOD_IMP(r2)      ; imp = method->method_imp (in r12)
-       mtctr   r12                                     ; ctr = imp
-.endif
+; Return triplet in r2 and imp in r12
+       lwz     r12,METHOD_IMP(r2)      ; imp = method->method_imp
 
 #if defined(OBJC_INSTRUMENTED)
        ; r6 = cache, r7 = probeCount
@@ -592,6 +534,16 @@ LLoop_$0_$1_$2:
 ;          imp in ctr
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+; Values to specify to method lookup macros whether the return type of
+; the method is an integer or structure.
+#define WORD_RETURN   0
+#define STRUCT_RETURN 1
+
+; Values to specify to method lookup macros whether the return type of
+; the method is an integer or structure.
+#define MSG_SEND      0
+#define MSG_SENDSUPER 1
+
 .macro MethodTableLookup
        mflr    r0              ; save lr
        stw     r0,   8(r1)     ;
@@ -803,12 +755,12 @@ LLoop_$0_$1_$2:
     CALL_MCOUNT
 
 ; do lookup
-    CacheLookup WORD_RETURN, CACHE_GET, LGetMethodMiss
+    mr     r12,r3      ; move class to r12 for CacheLookup
+    CacheLookup r4, LGetMethodMiss
 
-; cache hit, method triplet in r12
-    lwz     r11, METHOD_IMP(r12)    ; get the imp
-    cmplw   r11, r5                 ; check for _objc_msgForward
-    mr      r3, r12                 ; optimistically get the return value
+; cache hit, method triplet in r2 and imp in r12
+    cmplw   r12, r5                 ; check for _objc_msgForward
+    mr      r3, r2                  ; optimistically get the return value
     bnelr                           ; Not _objc_msgForward, return the triplet address
 
 LGetMethodMiss:
@@ -834,10 +786,11 @@ LGetMethodExit:
     CALL_MCOUNT
 
 ; do lookup
-    CacheLookup WORD_RETURN, CACHE_GET, LGetImpMiss
+    mr     r12,r3      ; move class to r12 for CacheLookup
+    CacheLookup r4, LGetImpMiss
 
-; cache hit, method triplet in r12
-    lwz     r3, METHOD_IMP(r12)    ; return method imp address
+; cache hit, method triplet in r2 and imp in r12
+    mr      r3, r12    ; return method imp address
     blr
 
 LGetImpMiss:
@@ -858,10 +811,25 @@ LGetImpExit:
  *           r4 is the selector
  ********************************************************************/
 
+; WARNING - This code may be copied as is to the Objective-C runtime pages.
+;           The code is copied by rtp_set_up_objc_msgSend() from the 
+;           beginning to the blr marker just prior to the cache miss code.  
+;           Do not add callouts, global variable accesses, or rearrange
+;           the code without updating rtp_set_up_objc_msgSend. 
+
+; Absolute symbols bounding the runtime page version of objc_msgSend.
+_objc_msgSend_rtp = 0xfffeff00
+_objc_msgSend_rtp_exit = 0xfffeff00+0x100
+
+       
        ENTRY _objc_msgSend
-; check whether receiver is nil
-       cmplwi  r3,0                            ; receiver nil?
-       beq-    LMsgSendNilSelf         ; if so, call handler or return nil
+; check whether receiver is nil or selector is to be ignored
+       cmplwi  r3,0            ; receiver nil?
+       xoris   r11,r4,((kIgnore>>16) & 0xffff) ; clear hi if equal to ignored
+       cmplwi  cr1,r11,(kIgnore & 0xffff)      ; selector is to be ignored?
+       beq-    LMsgSendNilSelf ; if nil receiver, call handler or return nil
+       lwz     r12,ISA(r3)     ; class = receiver->isa
+       beqlr-  cr1             ; if ignored selector, return self immediately
 
 ; guaranteed non-nil entry point (disabled for now)
 ; .globl _objc_msgSendNonNil
@@ -872,32 +840,51 @@ LGetImpExit:
 
 ; receiver is non-nil: search the cache
 LMsgSendReceiverOk:
-       CacheLookup WORD_RETURN, MSG_SEND, LMsgSendCacheMiss
+       ; class is already in r12
+       CacheLookup r4, LMsgSendCacheMiss
+       ; CacheLookup placed imp in r12
+       mtctr   r12
        ; r11 guaranteed non-zero on exit from CacheLookup with a hit
        // li      r11,kFwdMsgSend              ; indicate word-return to _objc_msgForward
        bctr                                            ; goto *imp;
 
-; cache miss: go search the method lists
-LMsgSendCacheMiss:
-       MethodTableLookup WORD_RETURN, MSG_SEND
-       li      r11,kFwdMsgSend         ; indicate word-return to _objc_msgForward
-       bctr                                    ; goto *imp;
+; WARNING - The first six instructions of LMsgSendNilSelf are
+;       rewritten when objc_msgSend is copied to the runtime pages.
+;       These instructions must be maintained AS IS unless the code in
+;       rtp_set_up_objc_msgSend is also updated.
+;       * `mflr r0` must not be changed (not even to use a different register)
+;       * the load of _objc_nilReceiver value must remain six insns long
+;       * the value of _objc_nilReceiver must continue to be loaded into r11
 
 ; message sent to nil: redirect to nil receiver, if any
 LMsgSendNilSelf:
-       mflr    r0                      ; load new receiver
+       ; DO NOT CHANGE THE NEXT SIX INSTRUCTIONS - see note above
+       mflr    r0                      ; save return address
        bcl     20,31,1f                ; 31 is cr7[so]
 1:     mflr    r11
        addis   r11,r11,ha16(__objc_nilReceiver-1b)
        lwz     r11,lo16(__objc_nilReceiver-1b)(r11)
-       mtlr    r0
+       mtlr    r0                      ; restore return address
+       ; DO NOT CHANGE THE PREVIOUS SIX INSTRUCTIONS - see note above
 
        cmplwi  r11,0                   ; return nil if no new receiver
        beqlr
 
        mr      r3,r11                  ; send to new receiver
+       lwz     r12,ISA(r11)            ; class = receiver->isa
        b       LMsgSendReceiverOk
 
+; WARNING - This blr marks the end of the copy to the ObjC runtime pages and
+;           also marks the beginning of the cache miss code.  Do not move
+;           around without checking the ObjC runtime pages initialization code.
+       blr
+
+; cache miss: go search the method lists
+LMsgSendCacheMiss:
+       MethodTableLookup WORD_RETURN, MSG_SEND
+       li      r11,kFwdMsgSend         ; indicate word-return to _objc_msgForward
+       bctr                                    ; goto *imp;
+
 LMsgSendExit:
        END_ENTRY _objc_msgSend
 
@@ -930,7 +917,10 @@ LMsgSendExit:
 
 ; receiver is non-nil: search the cache
 LMsgSendStretReceiverOk:
-       CacheLookup STRUCT_RETURN, MSG_SEND, LMsgSendStretCacheMiss
+       lwz     r12, ISA(r4)            ; class = receiver->isa
+       CacheLookup r5, LMsgSendStretCacheMiss
+       ; CacheLookup placed imp in r12
+       mtctr   r12
        li      r11,kFwdMsgSendStret    ; indicate struct-return to _objc_msgForward
        bctr                                    ; goto *imp;
 
@@ -974,8 +964,17 @@ LMsgSendStretExit:
 ; do profiling when enabled
        CALL_MCOUNT
 
+; check whether selector is to be ignored
+       xoris   r11,r4,((kIgnore>>16) & 0xffff) ; clear hi if to be ignored
+       cmplwi  r11,(kIgnore & 0xffff)          ; selector is to be ignored?
+       lwz     r12,CLASS(r3)                   ;     class = super->class
+       beq-    LMsgSendSuperIgnored            ; if ignored, return self
+
 ; search the cache
-       CacheLookup WORD_RETURN, MSG_SENDSUPER, LMsgSendSuperCacheMiss
+       ; class is already in r12
+       CacheLookup r4, LMsgSendSuperCacheMiss
+       ; CacheLookup placed imp in r12
+       mtctr   r12
        lwz     r3,RECEIVER(r3)         ; receiver is the first arg
        ; r11 guaranteed non-zero after cache hit
        ; li      r11,kFwdMsgSend               ; indicate word-return to _objc_msgForward
@@ -988,6 +987,11 @@ LMsgSendSuperCacheMiss:
        li      r11,kFwdMsgSend         ; indicate word-return to _objc_msgForward
        bctr                                    ; goto *imp;
 
+; ignored selector: return self
+LMsgSendSuperIgnored:
+       lwz     r3,RECEIVER(r3)
+       blr
+
 LMsgSendSuperExit:
        END_ENTRY _objc_msgSendSuper
 
@@ -1017,7 +1021,10 @@ LMsgSendSuperExit:
        CALL_MCOUNT
 
 ; search the cache
-       CacheLookup STRUCT_RETURN, MSG_SENDSUPER, LMsgSendSuperStretCacheMiss
+       lwz     r12,CLASS(r4)                   ; class = super->class
+       CacheLookup r5, LMsgSendSuperStretCacheMiss
+       ; CacheLookup placed imp in r12
+       mtctr   r12
        lwz     r4,RECEIVER(r4)         ; receiver is the first arg
        li      r11,kFwdMsgSendStret    ; indicate struct-return to _objc_msgForward
        bctr                                    ; goto *imp;
@@ -1385,3 +1392,11 @@ LMsgSendvStretSendIt:
 #endif /* !KERNEL */
 
        END_ENTRY _objc_msgSendv_stret
+
+
+// Special section containing a function pointer that dyld will call
+// when it loads new images.
+LAZY_PIC_FUNCTION_STUB(__objc_notify_images)
+.data
+.section __DATA,__image_notify
+.long L__objc_notify_images$stub
diff --git a/runtime/Messengers.subproj/objc-msg-stub-i386.s b/runtime/Messengers.subproj/objc-msg-stub-i386.s
new file mode 100644 (file)
index 0000000..ff8549a
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/* 
+ * Interposing support.
+ * When OBJC_ALLOW_INTERPOSING is set, calls to objc_msgSend_rtp
+ * jump to the ordinary messenger via this stub. If objc_msgSend 
+ * itself is interposed, dyld will find and change this stub.
+ * This stub must be compiled into a separate linker module.
+ */
+
+       .data
+       .align 4, 0x90
+L_get_pc_thunk.edx:
+       movl    (%esp,1), %edx
+       ret
+
+       .data
+       .picsymbol_stub
+L_objc_msgSend$stub:
+       .indirect_symbol _objc_msgSend
+       call    L_get_pc_thunk.edx
+1:
+       movl    L_objc_msgSend$lz-1b(%edx),%ecx
+       jmp     %ecx
+L_objc_msgSend$stub_binder:
+       lea     L_objc_msgSend$lz-1b(%edx),%eax
+       pushl   %eax
+       jmp     dyld_stub_binding_helper
+       nop
+
+       .data
+       .lazy_symbol_pointer
+L_objc_msgSend$lz:
+       .indirect_symbol _objc_msgSend
+       .long L_objc_msgSend$stub_binder
+
+       .text
+       .align 4, 0x90
+       .globl _objc_msgSend_stub               
+_objc_msgSend_stub:
+       jmp     L_objc_msgSend$stub
diff --git a/runtime/Messengers.subproj/objc-msg-stub-ppc.s b/runtime/Messengers.subproj/objc-msg-stub-ppc.s
new file mode 100644 (file)
index 0000000..9b2a768
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ * Interposing support.
+ * When OBJC_ALLOW_INTERPOSING is set, calls to objc_msgSend_rtp
+ * jump to the ordinary messenger via this stub. If objc_msgSend 
+ * itself is interposed, dyld will find and change this stub.
+ * This stub must be compiled into a separate linker module.
+ */
+
+       .data
+       .picsymbol_stub
+L_objc_msgSend$stub:
+       .indirect_symbol _objc_msgSend
+       mflr    r0
+       bcl     20,31,1f
+1:
+       mflr    r11
+       addis   r11,r11,ha16(L_objc_msgSend$lazy_ptr-1b)
+       mtlr    r0
+       lwz     r12,lo16(L_objc_msgSend$lazy_ptr-1b)(r11)
+       mtctr   r12
+       addi    r11,r11,lo16(L_objc_msgSend$lazy_ptr-1b)
+       bctr
+
+       .data
+       .lazy_symbol_pointer
+L_objc_msgSend$lazy_ptr:
+       .indirect_symbol _objc_msgSend
+       .long dyld_stub_binding_helper
+       
+       .text
+       .align 4
+       .globl _objc_msgSend_stub
+
+_objc_msgSend_stub:
+       b       L_objc_msgSend$stub
diff --git a/runtime/Messengers.subproj/objc-msg-stub.s b/runtime/Messengers.subproj/objc-msg-stub.s
new file mode 100644 (file)
index 0000000..9111c26
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+       
+#import "../objc-config.h"
+
+#if defined (__i386__) || defined (i386)
+    #include "objc-msg-stub-i386.s"
+#elif defined (__ppc__) || defined(ppc)
+    #include "objc-msg-stub-ppc.s"
+
+#else
+    #error Architecture not supported
+#endif
index b3bfa6876b91e642833bd2db4c79e3f6c4a00832..8abc26ea926879275e4717fe6813f16c3cf2a20d 100644 (file)
@@ -29,6 +29,7 @@
 
 #import <objc/Object.h>
 #import "objc-private.h"
+#import <objc/objc-auto.h>
 #import <objc/objc-runtime.h>
 #import <objc/Protocol.h>
 #import <stdarg.h> 
@@ -801,7 +802,7 @@ typedef struct {
         void *iterator = 0;
        int i;
         struct objc_method_list *mlist;
-        while ( (mlist = _class_inlinedNextMethodList( cls, &iterator )) ) {
+        while ( (mlist = class_nextMethodList( cls, &iterator )) ) {
             for (i = 0; i < mlist->method_count; i++)
                 if (mlist->method_list[i].method_name == aSelector) {
                    struct objc_method_description *m;
@@ -851,7 +852,7 @@ typedef struct {
         void *iterator = 0;
        int i;
         struct objc_method_list *mlist;
-        while ( (mlist = _class_inlinedNextMethodList( cls, &iterator )) ) {
+        while ( (mlist = class_nextMethodList( cls, &iterator )) ) {
             for (i = 0; i < mlist->method_count; i++)
                 if (mlist->method_list[i].method_name == aSelector) {
                    struct objc_method_description *m;
@@ -934,6 +935,7 @@ static id _internal_object_copy(Object *anObject, unsigned nBytes)
 static id _internal_object_dispose(Object *anObject) 
 {
        if (anObject==nil) return nil;
+       object_cxxDestruct((id)anObject);
        anObject->isa = _objc_getFreedObjectClass (); 
        free(anObject);
        return nil;
@@ -1010,11 +1012,8 @@ Ivar object_setInstanceVariable(id obj, const char *name, void *value)
        Ivar ivar = 0;
 
        if (obj && name) {
-               void **ivaridx;
-
                if ((ivar = class_getInstanceVariable(((Object*)obj)->isa, name))) {
-                      ivaridx = (void **)((char *)obj + ivar->ivar_offset);
-                      *ivaridx = value;
+                       objc_assign_ivar((id)value, obj, ivar->ivar_offset);
                }
        }
        return ivar;
index 52112517cf5377b2f1e3617437a7c2440e36fe41..451455e350515c3fee4426debcdc73aa2bbd6299 100644 (file)
@@ -99,7 +99,7 @@ static NXHashTablePrototype protoPrototype = {
     hashPrototype, isEqualPrototype, NXNoEffectFree, 0
     };
 
-static NXHashTable *prototypes = NULL;
+static NXHashTable *prototypes NOBSS = NULL;
        /* table of all prototypes */
 
 static void bootstrap (void) {
@@ -289,7 +289,11 @@ void *NXHashGet (NXHashTable *table, const void *data) {
     return NULL;
     }
 
-static void _NXHashRehash (NXHashTable *table) {
+__private_extern__ unsigned _NXHashCapacity (NXHashTable *table) {
+    return table->nbBuckets;
+    }
+
+__private_extern__ void _NXHashRehashToCapacity (NXHashTable *table, unsigned newCapacity) {
     /* Rehash: we create a pseudo table pointing really to the old guys,
     extend self, copy the old pairs, and free the pseudo table */
     NXHashTable        *old;
@@ -300,7 +304,7 @@ static void _NXHashRehash (NXHashTable *table) {
     old = ALLOCTABLE(z);
     old->prototype = table->prototype; old->count = table->count; 
     old->nbBuckets = table->nbBuckets; old->buckets = table->buckets;
-    table->nbBuckets += table->nbBuckets + 1; /* 2 times + 1 */
+    table->nbBuckets = newCapacity;
     table->count = 0; table->buckets = ALLOCBUCKETS(z, table->nbBuckets);
     state = NXInitHashState (old);
     while (NXNextHashState (old, &state, &aux))
@@ -310,7 +314,11 @@ static void _NXHashRehash (NXHashTable *table) {
        _objc_syslog("*** hashtable: count differs after rehashing; probably indicates a broken invariant: there are x and y such as isEqual(x, y) is TRUE but hash(x) != hash (y)\n");
     free (old->buckets); 
     free (old);
-    };
+    }
+
+static void _NXHashRehash (NXHashTable *table) {
+    _NXHashRehashToCapacity (table, table->nbBuckets*2 + 1);
+    }
 
 void *NXHashInsert (NXHashTable *table, const void *data) {
     HashBucket *bucket = BUCKETOF(table, data);
diff --git a/runtime/objc-auto.h b/runtime/objc-auto.h
new file mode 100644 (file)
index 0000000..4c28c0b
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+ *     objc-auto.h
+ *     Copyright 2004 Apple Computer, Inc.
+ */
+
+#ifndef _OBJC_AUTO_H_
+#define _OBJC_AUTO_H_
+
+#import <objc/objc.h>
+#include <sys/types.h>
+
+/* Collection utilities */
+
+enum {
+    OBJC_GENERATIONAL = (1 << 0)
+};
+
+OBJC_EXPORT void objc_collect_if_needed(unsigned long options);
+OBJC_EXPORT unsigned int objc_numberAllocated(void);
+OBJC_EXPORT BOOL objc_collecting_enabled(void);
+
+/* Memory management */
+OBJC_EXPORT id objc_allocate_object(Class cls, int extra);
+
+/* Write barriers */
+OBJC_EXPORT id objc_assign_strongCast(id val, id *dest);
+OBJC_EXPORT id objc_assign_global(id val, id *dest);
+OBJC_EXPORT id objc_assign_ivar(id value, id dest, unsigned int offset);
+OBJC_EXPORT void *objc_memmove_collectable(void *dst, const void *src, size_t size);
+
+/* Testing tools */
+OBJC_EXPORT BOOL objc_is_finalized(void *ptr);
+
+
+#endif
diff --git a/runtime/objc-auto.m b/runtime/objc-auto.m
new file mode 100644 (file)
index 0000000..d0d08a8
--- /dev/null
@@ -0,0 +1,1840 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+ *  objc-auto.m
+ *  Copyright 2004 Apple Computer, Inc.
+ */
+
+#import "objc-auto.h"
+
+#import <stdint.h>
+#import <stdbool.h>
+#import <fcntl.h>
+#import <mach/mach.h>
+#import <mach-o/dyld.h>
+
+#import "objc-private.h"
+#import "objc-rtp.h"
+#import "maptable.h"
+
+
+
+// Types and prototypes from non-open-source auto_zone.h
+
+#include <sys/types.h>
+#include <malloc/malloc.h>
+
+typedef malloc_zone_t auto_zone_t;
+
+typedef uint64_t auto_date_t;
+
+typedef struct {
+    unsigned    version; // reserved - 0 for now
+    /* Memory usage */
+    unsigned long long  num_allocs; // number of allocations performed
+    volatile unsigned   blocks_in_use;// number of pointers in use
+    unsigned    bytes_in_use;       // sum of the sizes of all pointers in use
+    unsigned    max_bytes_in_use;   // high water mark
+    unsigned    bytes_allocated;
+    /* GC stats */
+    /* When there is an array, 0 stands for full collection, 1 for generational */
+    unsigned    num_collections[2];
+    boolean_t   last_collection_was_generational;
+    unsigned    bytes_in_use_after_last_collection[2];
+    unsigned    bytes_allocated_after_last_collection[2];
+    unsigned    bytes_freed_during_last_collection[2];
+    auto_date_t duration_last_collection[2];
+    auto_date_t duration_all_collections[2];
+} auto_statistics_t;
+
+typedef enum {
+    AUTO_COLLECTION_NO_COLLECTION = 0,
+    AUTO_COLLECTION_GENERATIONAL_COLLECTION,
+    AUTO_COLLECTION_FULL_COLLECTION
+} auto_collection_mode_t;
+
+typedef enum {
+    AUTO_LOG_COLLECTIONS = (1 << 1),    // log whenever a collection occurs
+    AUTO_LOG_COLLECT_DECISION = (1 << 2), // logs when deciding whether to collect
+    AUTO_LOG_GC_IMPL = (1 << 3),    // logs to help debug GC
+    AUTO_LOG_REGIONS = (1 << 4),    // log whenever a new region is allocated
+    AUTO_LOG_UNUSUAL = (1 << 5),    // log unusual circumstances
+    AUTO_LOG_WEAK = (1 << 6),        // log weak reference manipulation
+    AUTO_LOG_ALL = (~0u)
+} auto_log_mask_t;
+
+typedef struct auto_zone_cursor *auto_zone_cursor_t;
+
+typedef void (*auto_zone_foreach_object_t) (auto_zone_cursor_t cursor, void (*op) (void *ptr, void *data), void* data);
+
+typedef struct {
+    unsigned        version; // reserved - 0 for now
+    boolean_t       trace_stack_conservatively;
+    boolean_t       (*should_collect)(auto_zone_t *, const auto_statistics_t *stats, boolean_t about_to_create_a_new_region); 
+        // called back when a threshold is reached; must say whether to collect (and what type)
+        // all locks are released when that call back is called
+        // callee is free to call for statistics or reset the threshold
+    unsigned        ask_should_collect_frequency;
+       // should_collect() is called each <N> allocations or free, where <N> is this field
+    unsigned        full_vs_gen_frequency;
+       // ratio of generational vs. full GC for the frequency based ones
+    int             (*collection_should_interrupt)(void);
+        // called during scan to see if garbage collection should be aborted
+    void        (*invalidate)(auto_zone_t *zone, void *ptr, void *collection_context);
+    void        (*batch_invalidate) (auto_zone_t *zone, auto_zone_foreach_object_t foreach, auto_zone_cursor_t cursor);
+        // called back with an object that is unreferenced
+        // callee is responsible for invalidating object state
+    void        (*resurrect) (auto_zone_t *zone, void *ptr);
+        // convert the object into a safe-to-use, but otherwise "undead" object. no guarantees are made about the
+        // contents of this object, other than its liveness.
+    unsigned        word0_mask; // mask for defining class
+    void        (*note_unknown_layout)(auto_zone_t *zone, unsigned class_field);
+        // called once for each class encountered for which we don't know the layout
+        // callee can decide to register class with auto_zone_register_layout(), or do nothing
+        // Note that this function is called during GC and therefore should not do any auto-allocation
+    char*       (*name_for_address) (auto_zone_t *zone, vm_address_t base, vm_address_t offset);
+    auto_log_mask_t log;
+       // set to auto_log_mask_t bits as desired
+    boolean_t           disable_generational;
+       // if true, ignores requests to do generational GC.
+    boolean_t           paranoid_generational;
+       // if true, always compares generational GC result to full GC garbage list
+    boolean_t           malloc_stack_logging;
+       // if true, uses malloc_zone_malloc() for stack logging.
+} auto_collection_control_t;
+
+typedef enum {
+    AUTO_TYPE_UNKNOWN = -1,                                 // this is an error value
+    AUTO_UNSCANNED = 1,
+    AUTO_OBJECT = 2,
+    AUTO_MEMORY_SCANNED = 0,                                // holds conservatively scanned pointers
+    AUTO_MEMORY_UNSCANNED = AUTO_UNSCANNED,                 // holds unscanned memory (bits)
+    AUTO_OBJECT_SCANNED = AUTO_OBJECT,                      // first word is 'isa', may have 'exact' layout info elsewhere
+    AUTO_OBJECT_UNSCANNED = AUTO_OBJECT | AUTO_UNSCANNED,   // first word is 'isa', good for bits or auto_zone_retain'ed items
+} auto_memory_type_t;
+
+typedef struct 
+{
+    vm_address_t referent;
+    vm_address_t referrer_base;
+    intptr_t     referrer_offset;
+} auto_reference_t;
+
+typedef void (*auto_reference_recorder_t)(auto_zone_t *zone, void *ctx, 
+                                          auto_reference_t reference);
+
+
+static void auto_collect(auto_zone_t *zone, auto_collection_mode_t mode, void *collection_context);
+static auto_collection_control_t *auto_collection_parameters(auto_zone_t *zone);
+static const auto_statistics_t *auto_collection_statistics(auto_zone_t *zone);
+static void auto_enumerate_references(auto_zone_t *zone, void *referent, 
+                                      auto_reference_recorder_t callback, 
+                                      void *stack_bottom, void *ctx);
+static void auto_enumerate_references_no_lock(auto_zone_t *zone, void *referent, auto_reference_recorder_t callback, void *stack_bottom, void *ctx);
+static auto_zone_t *auto_zone(void);
+static void auto_zone_add_root(auto_zone_t *zone, void *root, size_t size);
+static void* auto_zone_allocate_object(auto_zone_t *zone, size_t size, auto_memory_type_t type, boolean_t initial_refcount_to_one, boolean_t clear);
+static const void *auto_zone_base_pointer(auto_zone_t *zone, const void *ptr);
+static auto_memory_type_t auto_zone_get_layout_type(auto_zone_t *zone, void *ptr);
+static auto_memory_type_t auto_zone_get_layout_type_no_lock(auto_zone_t *zone, void *ptr);
+static boolean_t auto_zone_is_finalized(auto_zone_t *zone, const void *ptr);
+static boolean_t auto_zone_is_valid_pointer(auto_zone_t *zone, const void *ptr);
+static unsigned int auto_zone_release(auto_zone_t *zone, void *ptr);
+static void auto_zone_retain(auto_zone_t *zone, void *ptr);
+static unsigned int auto_zone_retain_count_no_lock(auto_zone_t *zone, const void *ptr);
+static void auto_zone_set_class_list(int (*get_class_list)(void **buffer, int count));
+static size_t auto_zone_size_no_lock(auto_zone_t *zone, const void *ptr);
+static void auto_zone_start_monitor(boolean_t force);
+static void auto_zone_write_barrier(auto_zone_t *zone, void *recipient, const unsigned int offset_in_bytes, const void *new_value);
+static void *auto_zone_write_barrier_memmove(auto_zone_t *zone, void *dst, const void *src, size_t size);
+
+
+
+static void record_allocation(Class cls);
+static auto_zone_t *gc_zone_init(void);
+
+
+__private_extern__ BOOL UseGC NOBSS = NO;
+static BOOL RecordAllocations = NO;
+static int IsaStompBits = 0x0;
+
+static auto_zone_t *gc_zone = NULL;
+static BOOL gc_zone_finalizing = NO;
+static intptr_t gc_collection_threshold = 128 * 1024;
+static size_t gc_collection_ratio = 100, gc_collection_counter = 0;
+static NXMapTable *gc_finalization_safe_classes = NULL;
+static BOOL gc_roots_retained = YES;
+
+/***********************************************************************
+* Internal utilities
+**********************************************************************/
+
+#define ISAUTOOBJECT(x) (auto_zone_is_valid_pointer(gc_zone, (x)))
+
+
+// A should-collect callback that never allows collection.
+// Currently used to prevent on-demand collection.
+static boolean_t objc_never_collect(auto_zone_t *zone, const auto_statistics_t *stats, boolean_t about_to_create_a_new_region)
+{
+    return false;
+}
+
+
+/***********************************************************************
+* Utility exports
+* Called by various libraries.
+**********************************************************************/
+
+void objc_collect(void) 
+{
+    if (UseGC) {
+        auto_collect(gc_zone, AUTO_COLLECTION_FULL_COLLECTION, NULL);
+    }
+}
+
+void objc_collect_if_needed(unsigned long options) {
+    if (UseGC) {
+        const auto_statistics_t *stats = auto_collection_statistics(gc_zone);
+        if (options & OBJC_GENERATIONAL) {
+            // use an absolute memory allocated threshold to decide when to generationally collect.
+            intptr_t bytes_allocated_since_last_gc = stats->bytes_in_use - stats->bytes_in_use_after_last_collection[stats->last_collection_was_generational];
+            if (bytes_allocated_since_last_gc >= gc_collection_threshold) {
+                // malloc_printf("bytes_allocated_since_last_gc = %ld\n", bytes_allocated_since_last_gc);
+                // periodically run a full collection until to keep memory usage down, controlled by OBJC_COLLECTION_RATIO (100 to 1 is the default).
+                auto_collection_mode_t mode = AUTO_COLLECTION_GENERATIONAL_COLLECTION;
+                if (gc_collection_counter++ >= gc_collection_ratio) {
+                    mode = AUTO_COLLECTION_FULL_COLLECTION;
+                    gc_collection_counter = 0;
+                }
+                auto_collect(gc_zone, mode, NULL);
+            }
+        } else {
+            // Run full collections until we no longer recover additional objects. We use two measurements
+            // to determine whether or not the collector is being productive: the total number of blocks
+            // must be shrinking, and the collector must itself be freeing bytes. Otherwise, another thread
+            // could be responsible for reducing the block count. On the other hand, another thread could
+            // be generating a lot of garbage, which would keep us collecting. This will need even more
+            // tuning to prevent starvation, etc.
+            unsigned blocks_in_use;
+            do {
+                blocks_in_use = stats->blocks_in_use;
+                auto_collect(gc_zone, AUTO_COLLECTION_FULL_COLLECTION, NULL);
+                // malloc_printf("bytes freed = %ld\n", stats->bytes_freed_during_last_collection[0]);
+            } while (stats->bytes_freed_during_last_collection[0] > 0 && stats->blocks_in_use < blocks_in_use);
+            gc_collection_counter = 0;
+        }
+    }
+}
+
+void objc_collect_generation(void) 
+{
+    if (UseGC) {
+        auto_collect(gc_zone, AUTO_COLLECTION_GENERATIONAL_COLLECTION, NULL);
+    }
+}
+
+
+unsigned int objc_numberAllocated(void) 
+{
+    const auto_statistics_t *stats = auto_collection_statistics(gc_zone);
+    return stats->blocks_in_use;
+}
+
+
+BOOL objc_isAuto(id object) 
+{
+    return UseGC && ISAUTOOBJECT(object) != 0;
+}
+
+
+BOOL objc_collecting_enabled(void) 
+{
+    return UseGC;
+}
+
+
+/***********************************************************************
+* Memory management. 
+* Called by CF and Foundation.
+**********************************************************************/
+
+// Allocate an object in the GC zone, with the given number of extra bytes.
+id objc_allocate_object(Class cls, int extra) 
+{
+    id result = 
+        (id)auto_zone_allocate_object(gc_zone, cls->instance_size + extra, 
+                                      AUTO_OBJECT_SCANNED, false, true);
+    result->isa = cls;
+    if (RecordAllocations) record_allocation(cls);
+    return result;
+}
+
+
+/***********************************************************************
+* Write barrier exports
+* Called by pretty much all GC-supporting code.
+**********************************************************************/
+
+
+// Platform-independent write barriers
+// These contain the UseGC check that the platform-specific 
+// runtime-rewritten implementations do not.
+
+id objc_assign_strongCast_generic(id value, id *dest)
+{
+    if (UseGC) {
+        return objc_assign_strongCast_gc(value, dest);
+    } else {
+        return (*dest = value);
+    }
+}
+
+
+id objc_assign_global_generic(id value, id *dest)
+{
+    if (UseGC) {
+        return objc_assign_global_gc(value, dest);
+    } else {
+        return (*dest = value);
+    }
+}
+
+
+id objc_assign_ivar_generic(id value, id dest, unsigned int offset)
+{
+    if (UseGC) {
+        return objc_assign_ivar_gc(value, dest, offset);
+    } else {
+        id *slot = (id*) ((char *)dest + offset);
+        return (*slot = value);
+    }
+}
+
+#if defined(__ppc__)
+
+// PPC write barriers are in objc-auto-ppc.s
+// write_barrier_init conditionally stomps those to jump to the _impl versions.
+
+#else
+
+// use generic implementation until time can be spent on optimizations
+id objc_assign_strongCast(id value, id *dest) { return objc_assign_strongCast_generic(value, dest); }
+id objc_assign_global(id value, id *dest) { return objc_assign_global_generic(value, dest); }
+id objc_assign_ivar(id value, id dest, unsigned int offset) { return objc_assign_ivar_generic(value, dest, offset); }
+
+// not defined(__ppc__)
+#endif
+
+
+void *objc_memmove_collectable(void *dst, const void *src, size_t size)
+{
+    if (UseGC) {
+        return auto_zone_write_barrier_memmove(gc_zone, dst, src, size);
+    } else {
+        return memmove(dst, src, size);
+    }
+}
+
+
+/***********************************************************************
+* Testing tools
+* Used to isolate resurrection of garbage objects during finalization.
+**********************************************************************/
+BOOL objc_is_finalized(void *ptr) {
+    return ptr != NULL && auto_zone_is_finalized(gc_zone, ptr);
+}
+
+
+/***********************************************************************
+* CF-only write barrier exports
+* Called by CF only.
+* The gc_zone guards are not thought to be necessary
+**********************************************************************/
+
+// Exported as very private SPI to Foundation to tell CF about
+void* objc_assign_ivar_address_CF(void *value, void *base, void **slot)
+{
+    if (value && gc_zone) {
+        if (auto_zone_is_valid_pointer(gc_zone, base)) {
+            unsigned int offset = (((char *)slot)-(char *)base);
+            auto_zone_write_barrier(gc_zone, base, offset, value);
+        }
+    }
+    
+    return (*slot = value);
+}
+
+
+// Same as objc_assign_strongCast_gc, should tell Foundation to use _gc version instead
+// exported as very private SPI to Foundation to tell CF about
+void* objc_assign_strongCast_CF(void* value, void **slot) 
+{
+    if (value && gc_zone) {
+       void *base = (void *)auto_zone_base_pointer(gc_zone, (void*)slot);
+       if (base) {
+            unsigned int offset = (((char *)slot)-(char *)base);
+            auto_zone_write_barrier(gc_zone, base, offset, value);
+       }
+    }
+    return (*slot = value);
+}
+
+
+/***********************************************************************
+* Write barrier implementations, optimized for when GC is known to be on
+* Called by the write barrier exports only.
+* These implementations assume GC is on. The exported function must 
+* either perform the check itself or be conditionally stomped at 
+* startup time.
+**********************************************************************/
+
+__private_extern__ id objc_assign_strongCast_gc(id value, id *slot) 
+{
+    id base;
+    
+    base = (id) auto_zone_base_pointer(gc_zone, (void*)slot);
+    if (base) {
+        unsigned int offset = (((char *)slot)-(char *)base);
+        auto_zone_write_barrier(gc_zone, base, (char*)slot - (char*)base, value);
+    }
+    return (*slot = value);
+}
+
+
+__private_extern__ id objc_assign_global_gc(id value, id *slot) 
+{
+    if (gc_roots_retained) {
+        if (value && ISAUTOOBJECT(value)) {
+            if (auto_zone_is_finalized(gc_zone, value))
+                _objc_inform("GC: storing an already collected object %p into global memory at %p\n", value, slot);
+            auto_zone_retain(gc_zone, value);
+        }
+        if (*slot && ISAUTOOBJECT(*slot)) {
+            auto_zone_release(gc_zone, *slot);
+        }
+    } else {
+        // use explicit root registration.
+        if (value && ISAUTOOBJECT(value)) {
+            if (auto_zone_is_finalized(gc_zone, value))
+                _objc_inform("GC: storing an already collected object %p into global memory at %p\n", value, slot);
+            auto_zone_add_root(gc_zone, slot, sizeof(id*));
+        }
+    }
+    return (*slot = value);
+}
+
+
+__private_extern__ id objc_assign_ivar_gc(id value, id base, unsigned int offset) 
+{
+    id *slot = (id*) ((char *)base + offset);
+
+    if (value) {
+        if (ISAUTOOBJECT(base)) {
+            auto_zone_write_barrier(gc_zone, base, offset, value);
+            if (gc_zone_finalizing && (auto_zone_get_layout_type(gc_zone, value) & AUTO_OBJECT) != AUTO_OBJECT) {
+                // XXX_PCB: Hack, don't allow resurrection by inhibiting assigns of garbage, non-object, pointers.
+               // XXX BG: move this check into auto & institute a new policy for resurrection, to wit:
+               // Resurrected Objects should go on a special list during finalization & be zombified afterwards
+               // using the noisy isa-slam hack.
+                if (auto_zone_is_finalized(gc_zone, value) && !auto_zone_is_finalized(gc_zone, base)) {
+                    _objc_inform("GC: *** objc_assign_ivar_gc: preventing a resurrecting store of %p into %p + %d\n", value, base, offset);
+                    value = nil;
+                }
+            }
+        } else {
+            _objc_inform("GC: *** objc_assign_ivar_gc: %p + %d isn't in the auto_zone.\n", base, offset);
+        }
+    }
+
+    return (*slot = value);
+}
+
+
+
+/***********************************************************************
+* Finalization support
+* Called by auto and Foundation.
+**********************************************************************/
+
+#define USE_ISA_HACK 1
+#define DO_ISA_DEBUG 0
+
+#if USE_ISA_HACK
+
+
+// NSDeallocatedObject silently ignores all messages sent to it.
+@interface NSDeallocatedObject {
+@public
+    Class IsA;
+}
++ (Class)class;
+@end
+
+
+static unsigned int FTCount, FTSize;
+static struct FTTable {
+    NSDeallocatedObject  *object;
+    Class  class;
+} *FTTablePtr;
+
+/* a quick and very dirty table to map finalized pointers to their isa's */
+static void addPointerFT(NSDeallocatedObject *object, Class class) {
+    if (FTCount >= FTSize) {
+       FTSize = 2*(FTSize + 10);
+       FTTablePtr = realloc(FTTablePtr, FTSize*sizeof(struct FTTable));
+    }
+    FTTablePtr[FTCount].object = object;
+    FTTablePtr[FTCount].class = class;
+    ++FTCount;
+}
+
+static Class classForPointerFT(NSDeallocatedObject *object) {
+    int i;
+    for (i = 0; i < FTCount; ++i)
+       if (FTTablePtr[i].object == object)
+           return FTTablePtr[i].class;
+    return NULL;
+}
+
+void objc_stale(id object) {
+}
+
+@implementation NSDeallocatedObject
++ (Class)class { return self; }
+- (Class)class { return classForPointerFT(self); }
+- (BOOL)isKindOfClass:(Class)aClass {
+    Class cls;
+    for (cls = classForPointerFT(self); nil != cls; cls = cls->super_class) 
+       if (cls == (Class)aClass) return YES;
+    return NO;
+}
++ forward:(SEL)aSelector :(marg_list)args { return nil; }
+- forward:(SEL)aSelector :(marg_list)args {
+    Class class = classForPointerFT(self);
+    if (!class) {
+       if (IsaStompBits & 0x2)
+           _objc_inform("***finalized & *recovered* object %p of being sent '%s'!!\n", self, sel_getName(aSelector));
+       // if its not in the current table, then its being messaged from a STALE REFERENCE!!
+       objc_stale(self);
+       return nil;
+    }
+    if (IsaStompBits & 0x4)
+       _objc_inform("finalized object %p of class %s being sent %s\n", self, class->name, sel_getName(aSelector));
+    return nil;
+}
+@end
+
+
+static Class _NSDeallocatedObject = Nil;
+
+static IMP _NSObject_finalize = NULL;
+
+
+// Handed to and then called by auto
+static void sendFinalize(auto_zone_t *zone, void* ptr, void *context) 
+{
+    if (ptr == NULL) {
+       // special signal to mark end of finalization phase
+       if (IsaStompBits & 0x8)
+           _objc_inform("----finalization phase over-----");
+       FTCount = 0;
+       return;
+    }
+    
+    id object = ptr;
+    Class cls = object->isa;
+    
+    if (cls == _NSDeallocatedObject) {
+        // already finalized, do nothing
+        _objc_inform("sendFinalize called on NSDeallocatedObject %p", ptr);
+        return;
+    }
+    
+    IMP finalizeMethod = class_lookupMethod(cls, @selector(finalize));
+    if (finalizeMethod == &_objc_msgForward) {
+        _objc_inform("GC: class '%s' does not implement -finalize!", cls->name);
+    }
+
+    gc_zone_finalizing = YES;
+
+    @try {
+        // fixme later, optimize away calls to NSObject's -finalize
+        (*finalizeMethod)(object, @selector(finalize));
+    } @catch (id exception) {
+        _objc_inform("GC: -finalize resulted in an exception being thrown %p!", exception);
+        // FIXME: what about uncaught C++ exceptions? Here's an idea, define a category
+        // in a .mm file, so we can catch both flavors of exceptions.
+        // @interface NSObject (TryToFinalize)
+        //  - (BOOL)tryToFinalize {
+        //      try {
+        //          @try {
+        //              [self finalize];
+        //          } @catch (id exception) {
+        //              return NO;
+        //          }
+        //      } catch (...) {
+        //          return NO;
+        //      }
+        //      return YES;
+        //  }
+        //  @end
+    }
+
+    gc_zone_finalizing = NO;
+
+    if (IsaStompBits) {
+       NSDeallocatedObject *dead = (NSDeallocatedObject *)object;
+       // examine list of okay classes and leave alone XXX get from file
+       // fixme hack: smash isa to dodge some out-of-order finalize bugs
+       // the following are somewhat finalize order safe
+       //if (!strcmp(dead->oldIsA->name, "NSCFArray")) return;
+       //if (!strcmp(dead->oldIsA->name, "NSSortedArray")) return;
+       if (IsaStompBits & 0x8)
+           printf("adding [%d] %p %s\n", FTCount, dead, dead->IsA->name);
+       addPointerFT(dead, dead->IsA);
+       objc_assign_ivar(_NSDeallocatedObject, dead, 0);
+    }
+}
+
+static void finalizeOneObject(void *ptr, void *data) {
+    id object = ptr;
+    Class cls = object->isa;
+    
+    if (cls == _NSDeallocatedObject) {
+        // already finalized, do nothing
+        _objc_inform("finalizeOneObject called on NSDeallocatedObject %p", ptr);
+        return;
+    }
+    
+    IMP finalizeMethod = class_lookupMethod(cls, @selector(finalize));
+    if (finalizeMethod == &_objc_msgForward) {
+        _objc_inform("GC: class '%s' does not implement -finalize!", cls->name);
+    }
+        
+    // fixme later, optimize away calls to NSObject's -finalize
+    (*finalizeMethod)(object, @selector(finalize));
+    
+    if (IsaStompBits) {
+       NSDeallocatedObject *dead = (NSDeallocatedObject *)object;
+       // examine list of okay classes and leave alone XXX get from file
+       // fixme hack: smash isa to dodge some out-of-order finalize bugs
+       // the following are somewhat finalize order safe
+       //if (!strcmp(dead->oldIsA->name, "NSCFArray")) return;
+       //if (!strcmp(dead->oldIsA->name, "NSSortedArray")) return;
+        if (gc_finalization_safe_classes && NXMapGet(gc_finalization_safe_classes, cls->name)) {
+            // malloc_printf("&&& finalized safe instance of %s &&&\n", cls->name);
+            return;
+        }
+       if (IsaStompBits & 0x8)
+           printf("adding [%d] %p %s\n", FTCount, dead, dead->IsA->name);
+       addPointerFT(dead, dead->IsA);
+       objc_assign_ivar(_NSDeallocatedObject, dead, 0);
+    }
+}
+
+static void batchFinalize(auto_zone_t *zone,
+                          auto_zone_foreach_object_t foreach,
+                          auto_zone_cursor_t cursor)
+{
+    gc_zone_finalizing = YES;
+    for (;;) {
+        @try {
+            // eventually foreach(cursor, objc_msgSend, @selector(finalize));
+            // foreach(cursor, finalizeOneObject, NULL);
+            foreach(cursor, objc_msgSend, @selector(finalize));
+            // non-exceptional return means finalization is complete.
+            break;
+        } @catch (id exception) {
+            _objc_inform("GC: -finalize resulted in an exception being thrown %p!", exception);
+        }
+    }
+    gc_zone_finalizing = NO;
+}
+
+@interface NSResurrectedObject {
+    @public
+    Class _isa;                // [NSResurrectedObject class]
+    Class _old_isa;            // original class
+    unsigned _resurrections;   // how many times this object has been resurrected.
+}
++ (Class)class;
+@end
+
+@implementation NSResurrectedObject
++ (Class)class { return self; }
+- (Class)class { return _isa; }
++ forward:(SEL)aSelector :(marg_list)args { return nil; }
+- forward:(SEL)aSelector :(marg_list)args {
+    _objc_inform("**resurrected** object %p of class %s being sent message '%s'\n", self, _old_isa->name, sel_getName(aSelector));
+    return nil;
+}
+- (void)finalize {
+    _objc_inform("**resurrected** object %p of class %s being finalized\n", self, _old_isa->name);
+}
+@end
+
+static Class _NSResurrectedObject;
+
+static void resurrectZombie(auto_zone_t *zone, void *ptr) {
+    NSResurrectedObject *zombie = (NSResurrectedObject*) ptr;
+    if (zombie->_isa != _NSResurrectedObject) {
+        Class old_isa = zombie->_isa;
+        zombie->_isa = _NSResurrectedObject;
+        zombie->_old_isa = old_isa;
+        zombie->_resurrections = 1;
+    } else {
+        zombie->_resurrections++;
+    }
+}
+
+/***********************************************************************
+* Allocation recording
+* For development purposes.
+**********************************************************************/
+
+static NXMapTable *the_histogram = NULL;
+static pthread_mutex_t the_histogram_lock = PTHREAD_MUTEX_INITIALIZER;
+
+
+static void record_allocation(Class cls) 
+{
+    pthread_mutex_lock(&the_histogram_lock);
+    unsigned long count = (unsigned long) NXMapGet(the_histogram, cls);
+    NXMapInsert(the_histogram, cls, (const void*) (count + 1));
+    pthread_mutex_unlock(&the_histogram_lock);
+}
+
+
+void objc_allocation_histogram(void)
+{
+    Class cls;
+    unsigned long count;
+    NXMapState state = NXInitMapState(the_histogram);
+    printf("struct histogram {\n\tconst char* name;\n\tunsigned long instance_size;\n\tunsigned long count;\n} the_histogram[] = {\n");
+    while (NXNextMapState(the_histogram, &state, (const void**) &cls, (const void**) &count)) {
+        printf("\t{ \"%s\", %lu, %lu },\n", cls->name, (unsigned long) cls->instance_size, count);
+    }
+    printf("};\n");
+}
+
+static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset, int withRetainCount);
+
+static char* objc_name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset)
+{
+    return name_for_address(zone, base, offset, false);
+}
+
+/***********************************************************************
+* Initialization
+**********************************************************************/
+
+// Always called by _objcInit, even if GC is off.
+__private_extern__ void gc_init(BOOL on)
+{
+    UseGC = on;
+
+    if (PrintGC) {
+        _objc_inform("GC: is %s", on ? "ON" : "OFF");
+    }
+
+    if (UseGC) {
+        // Set up the GC zone
+        gc_zone = gc_zone_init();
+        
+        // no NSObject until Foundation calls objc_collect_init()
+        _NSObject_finalize = &_objc_msgForward;
+        
+        // Set up allocation recording
+        RecordAllocations = (getenv("OBJC_RECORD_ALLOCATIONS") != NULL);
+        if (RecordAllocations) the_histogram = NXCreateMapTable(NXPtrValueMapPrototype, 1024);
+        
+        if (getenv("OBJC_FINALIZATION_SAFE_CLASSES")) {
+            FILE *f = fopen(getenv("OBJC_FINALIZATION_SAFE_CLASSES"), "r");
+            if (f != NULL) {
+                char *line;
+                size_t length;
+                gc_finalization_safe_classes = NXCreateMapTable(NXStrValueMapPrototype, 17);
+                while ((line = fgetln(f, &length)) != NULL) {
+                    char *last = &line[length - 1];
+                    if (*last == '\n') *last = '\0'; // strip off trailing newline.
+                    char *className = strdup(line);
+                    NXMapInsert(gc_finalization_safe_classes, className, className);
+                }
+                fclose(f);
+            }
+        }
+    } else {
+        auto_zone_start_monitor(false);
+        auto_zone_set_class_list(objc_getClassList);
+    }
+}
+
+
+static auto_zone_t *gc_zone_init(void)
+{
+    auto_zone_t *result;
+
+    // result = auto_zone_create("objc auto collected zone");
+    result = auto_zone(); // honor existing entry point for now (fixme)
+    
+    auto_collection_control_t *control = auto_collection_parameters(result);
+    
+    // set up the magic control parameters
+    control->invalidate = sendFinalize;
+    control->batch_invalidate = batchFinalize;
+    control->resurrect = resurrectZombie;
+    control->name_for_address = objc_name_for_address;
+    
+    // don't collect "on-demand" until... all Cocoa allocations are outside locks
+    control->should_collect = objc_never_collect;   
+    control->ask_should_collect_frequency = UINT_MAX;
+    control->trace_stack_conservatively = YES;
+    
+    // No interruption callback yet. Foundation will install one later.
+    control->collection_should_interrupt = NULL;
+    
+    // debug: if set, only do full generational; sometimes useful for bringup
+    control->disable_generational = getenv("AUTO_DISABLE_GENERATIONAL") != NULL;
+    
+    // debug: always compare generational GC result to full GC garbage list
+    // this *can* catch missing write-barriers and other bugs
+    control->paranoid_generational = (getenv("AUTO_PARANOID_GENERATIONAL") != NULL);
+    
+    // if set take a slightly slower path for object allocation
+    control->malloc_stack_logging = (getenv("MallocStackLogging") != NULL  ||  getenv("MallocStackLoggingNoCompact") != NULL);
+    
+    // logging level: none by default
+    control->log = 0;
+    if (getenv("AUTO_LOG_NOISY"))       control->log |= AUTO_LOG_COLLECTIONS;
+    if (getenv("AUTO_LOG_ALL"))         control->log |= AUTO_LOG_ALL;
+    if (getenv("AUTO_LOG_COLLECTIONS")) control->log |= AUTO_LOG_COLLECTIONS;
+    if (getenv("AUTO_LOG_COLLECT_DECISION"))  control->log |= AUTO_LOG_COLLECT_DECISION;
+    if (getenv("AUTO_LOG_GC_IMPL"))     control->log |= AUTO_LOG_GC_IMPL;
+    if (getenv("AUTO_LOG_REGIONS"))     control->log |= AUTO_LOG_REGIONS;
+    if (getenv("AUTO_LOG_UNUSUAL"))     control->log |= AUTO_LOG_UNUSUAL;
+    if (getenv("AUTO_LOG_WEAK"))        control->log |= AUTO_LOG_WEAK;
+    
+    if (getenv("OBJC_ISA_STOMP")) {
+       // != 0, stomp isa
+       // 0x1, just stomp, no messages
+       // 0x2, log messaging after reclaim (break on objc_stale())
+       // 0x4, log messages sent during finalize
+       // 0x8, log all finalizations
+       IsaStompBits = strtol(getenv("OBJC_ISA_STOMP"), NULL, 0);
+    }
+    
+    if (getenv("OBJC_COLLECTION_THRESHOLD")) {
+        gc_collection_threshold = (size_t) strtoul(getenv("OBJC_COLLECTION_THRESHOLD"), NULL, 0);
+    }
+    
+    if (getenv("OBJC_COLLECTION_RATIO")) {
+        gc_collection_ratio = (size_t) strtoul(getenv("OBJC_COLLECTION_RATIO"), NULL, 0);
+    }
+    
+    if (getenv("OBJC_EXPLICIT_ROOTS")) gc_roots_retained = NO;
+    
+    return result;
+}
+
+
+// Called by Foundation to install auto's interruption callback.
+malloc_zone_t *objc_collect_init(int (*callback)(void))
+{
+    // Find NSObject's finalize method now that Foundation is loaded.
+    // fixme only look for the base implementation, not a category's
+    _NSDeallocatedObject = objc_getClass("NSDeallocatedObject");
+    _NSResurrectedObject = objc_getClass("NSResurrectedObject");
+    _NSObject_finalize = 
+        class_lookupMethod(objc_getClass("NSObject"), @selector(finalize));
+    if (_NSObject_finalize == &_objc_msgForward) {
+        _objc_fatal("GC: -[NSObject finalize] unimplemented!");
+    }
+
+    // Don't install the callback if OBJC_DISABLE_COLLECTION_INTERRUPT is set
+    if (gc_zone  &&  getenv("OBJC_DISABLE_COLLECTION_INTERRUPT") == NULL) {
+        auto_collection_control_t *ctrl = auto_collection_parameters(gc_zone);
+        ctrl->collection_should_interrupt = callback;
+    }
+
+    return (malloc_zone_t *)gc_zone;
+}
+
+
+
+
+
+
+/***********************************************************************
+* Debugging
+**********************************************************************/
+
+/* This is non-deadlocking with respect to malloc's locks EXCEPT:
+ * %ls, %a, %A formats
+ * more than 8 args
+ */
+static void objc_debug_printf(const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vfprintf(stderr, format, ap);
+    va_end(ap);
+}
+
+static malloc_zone_t *objc_debug_zone(void)
+{
+    static malloc_zone_t *z = NULL;
+    if (!z) {
+        z = malloc_create_zone(4096, 0);
+        malloc_set_zone_name(z, "objc-auto debug");
+    }
+    return z;
+}
+
+static char *_malloc_append_unsigned(unsigned value, unsigned base, char *head) {
+    if (!value) {
+        head[0] = '0';
+    } else {
+        if (value >= base) head = _malloc_append_unsigned(value / base, base, head);
+        value = value % base;
+        head[0] = (value < 10) ? '0' + value : 'a' + value - 10;
+    }
+    return head+1;
+}
+
+static void strcati(char *str, unsigned value)
+{
+    str = _malloc_append_unsigned(value, 10, str + strlen(str));
+    str[0] = '\0';
+}
+
+static void strcatx(char *str, unsigned value)
+{
+    str = _malloc_append_unsigned(value, 16, str + strlen(str));
+    str[0] = '\0';
+}
+
+
+static Ivar ivar_for_offset(struct objc_class *cls, vm_address_t offset)
+{
+    int i;
+    int ivar_offset;
+    Ivar super_ivar;
+    struct objc_ivar_list *ivars;
+
+    if (!cls) return NULL;
+
+    // scan base classes FIRST
+    super_ivar = ivar_for_offset(cls->super_class, offset);
+    // result is best-effort; our ivars may be closer
+
+    ivars = cls->ivars;
+    // If we have no ivars, return super's ivar
+    if (!ivars  ||  ivars->ivar_count == 0) return super_ivar;
+
+    // Try our first ivar. If it's too big, use super's best ivar.
+    ivar_offset = ivars->ivar_list[0].ivar_offset;
+    if (ivar_offset > offset) return super_ivar;
+    else if (ivar_offset == offset) return &ivars->ivar_list[0];
+
+    // Try our other ivars. If any is too big, use the previous.
+    for (i = 1; i < ivars->ivar_count; i++) {
+        int ivar_offset = ivars->ivar_list[i].ivar_offset;
+        if (ivar_offset == offset) {
+            return &ivars->ivar_list[i];
+        } else if (ivar_offset > offset) {
+            return &ivars->ivar_list[i-1];
+        }
+    }
+
+    // Found nothing. Return our last ivar.
+    return &ivars->ivar_list[ivars->ivar_count - 1];
+}
+
+static void append_ivar_at_offset(char *buf, struct objc_class *cls, vm_address_t offset)
+{
+    Ivar ivar = NULL;
+
+    if (offset == 0) return;  // don't bother with isa
+    if (offset >= cls->instance_size) {
+        strcat(buf, ".<extra>+");
+        strcati(buf, offset);
+        return;
+    }
+
+    ivar = ivar_for_offset(cls, offset);
+    if (!ivar) {
+        strcat(buf, ".<?>");
+        return;
+    }
+
+    // fixme doesn't handle structs etc.
+    
+    strcat(buf, ".");
+    if (ivar->ivar_name) strcat(buf, ivar->ivar_name);
+    else strcat(buf, "<anonymous ivar>");
+
+    offset -= ivar->ivar_offset;
+    if (offset > 0) {
+        strcat(buf, "+");
+        strcati(buf, offset);
+    }
+}
+
+
+static const char *cf_class_for_object(void *cfobj)
+{
+    // ick - we don't link against CF anymore
+
+    struct {
+        uint32_t version;
+        const char *className;
+        // don't care about the rest
+    } *cfcls;
+    uint32_t cfid;
+    NSSymbol sym;
+    uint32_t (*CFGetTypeID)(void *);
+    void * (*_CFRuntimeGetClassWithTypeID)(uint32_t);
+
+    sym = NSLookupAndBindSymbolWithHint("_CFGetTypeID", "CoreFoundation");
+    if (!sym) return "anonymous_NSCFType";
+    CFGetTypeID = NSAddressOfSymbol(sym);
+    if (!CFGetTypeID) return "NSCFType";
+
+    sym = NSLookupAndBindSymbolWithHint("__CFRuntimeGetClassWithTypeID", "CoreFoundation");
+    if (!sym) return "anonymous_NSCFType";
+    _CFRuntimeGetClassWithTypeID = NSAddressOfSymbol(sym);
+    if (!_CFRuntimeGetClassWithTypeID) return "anonymous_NSCFType";
+
+    cfid = (*CFGetTypeID)(cfobj);
+    cfcls = (*_CFRuntimeGetClassWithTypeID)(cfid);
+    return cfcls->className;
+}
+
+
+static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset, int withRetainCount)
+{
+#define APPEND_SIZE(s) \
+    strcat(buf, "["); \
+    strcati(buf, s); \
+    strcat(buf, "]");
+
+    char buf[500];
+    char *result;
+
+    buf[0] = '\0';
+
+    unsigned int size = 
+        auto_zone_size_no_lock(zone, (void *)base);
+    auto_memory_type_t type = size ? 
+        auto_zone_get_layout_type_no_lock(zone, (void *)base) : AUTO_TYPE_UNKNOWN;
+    unsigned int refcount = size ? 
+        auto_zone_retain_count_no_lock(zone, (void *)base) : 0;
+
+    switch (type) {
+    case AUTO_OBJECT_SCANNED: 
+    case AUTO_OBJECT_UNSCANNED: {
+        Class cls = *(struct objc_class **)base;
+        if (0 == strcmp(cls->name, "NSCFType")) {
+            strcat(buf, cf_class_for_object((void *)base));
+        } else {
+            strcat(buf, cls->name);
+        }
+        if (offset) {
+            append_ivar_at_offset(buf, cls, offset);
+        }
+        APPEND_SIZE(size);
+        break;
+    }
+    case AUTO_MEMORY_SCANNED:
+        strcat(buf, "{conservative-block}");
+        APPEND_SIZE(size);
+        break;
+    case AUTO_MEMORY_UNSCANNED:
+        strcat(buf, "{no-pointers-block}");
+        APPEND_SIZE(size);
+        break;
+    default:
+        strcat(buf, "{unallocated-or-stack}");
+    } 
+    
+    if (withRetainCount  &&  refcount > 0) {
+        strcat(buf, " [[refcount=");
+        strcati(buf, refcount);
+        strcat(buf, "]]");
+    }
+
+    result = malloc_zone_malloc(objc_debug_zone(), 1 + strlen(buf));
+    strcpy(result, buf);
+    return result;
+
+#undef APPEND_SIZE
+}
+
+
+struct objc_class_recorder_context {
+    malloc_zone_t *zone;
+    void *cls;
+    char *clsname;
+    unsigned int count;
+};
+
+static void objc_class_recorder(task_t task, void *context, unsigned type_mask,
+                                vm_range_t *ranges, unsigned range_count)
+{
+    struct objc_class_recorder_context *ctx = 
+        (struct objc_class_recorder_context *)context;
+
+    vm_range_t *r;
+    vm_range_t *end;
+    for (r = ranges, end = ranges + range_count; r < end; r++) {
+        auto_memory_type_t type = 
+            auto_zone_get_layout_type_no_lock(ctx->zone, (void *)r->address);
+        if (type == AUTO_OBJECT_SCANNED || type == AUTO_OBJECT_UNSCANNED) {
+            // Check if this is an instance of class ctx->cls or some subclass
+            Class cls;
+            Class isa = *(Class *)r->address;
+            for (cls = isa; cls; cls = cls->super_class) {
+                if (cls == ctx->cls) {
+                    unsigned int rc;
+                    objc_debug_printf("[%p]    :   %s", r->address, isa->name);
+                    if ((rc = auto_zone_retain_count_no_lock(ctx->zone, (void *)r->address))) {
+                        objc_debug_printf(" [[refcount %u]]", rc);
+                    }
+                    objc_debug_printf("\n");
+                    ctx->count++;
+                    break;
+                }
+            }
+        }
+    }
+}
+
+void objc_enumerate_class(char *clsname)
+{
+    struct objc_class_recorder_context ctx;
+    ctx.zone = auto_zone();
+    ctx.clsname = clsname;
+    ctx.cls = objc_getClass(clsname);  // GrP fixme may deadlock if classHash lock is already owned
+    ctx.count = 0;
+    if (!ctx.cls) {
+        objc_debug_printf("No class '%s'\n", clsname);
+        return;
+    }
+    objc_debug_printf("\n\nINSTANCES OF CLASS '%s':\n\n", clsname);
+    (*ctx.zone->introspect->enumerator)(mach_task_self(), &ctx, MALLOC_PTR_IN_USE_RANGE_TYPE, (vm_address_t)ctx.zone, NULL, objc_class_recorder);
+    objc_debug_printf("\n%d instances\n\n", ctx.count);
+}
+
+
+static void objc_reference_printer(auto_zone_t *zone, void *ctx, 
+                                   auto_reference_t ref)
+{
+    char *referrer_name = name_for_address(zone, ref.referrer_base, ref.referrer_offset, true);
+    char *referent_name = name_for_address(zone, ref.referent, 0, true);
+
+    objc_debug_printf("[%p%+d -> %p]  :  %s  ->  %s\n", 
+                      ref.referrer_base, ref.referrer_offset, ref.referent,
+                      referrer_name, referent_name);
+
+    malloc_zone_free(objc_debug_zone(), referrer_name);
+    malloc_zone_free(objc_debug_zone(), referent_name);
+}
+
+
+void objc_print_references(void *referent, void *stack_bottom, int lock)
+{
+    if (lock) {
+        auto_enumerate_references(auto_zone(), referent, 
+                                  objc_reference_printer, stack_bottom, NULL);
+    } else {
+        auto_enumerate_references_no_lock(auto_zone(), referent, 
+                                          objc_reference_printer, stack_bottom, NULL);
+    }
+}
+
+
+
+typedef struct {
+    vm_address_t address;          // of this object
+    int refcount;                  // of this object - nonzero means ROOT
+    int depth;                     // number of links away from referent, or -1
+    auto_reference_t *referrers; // of this object
+    int referrers_used;
+    int referrers_allocated;
+    auto_reference_t back; // reference from this object back toward the target
+    uint32_t ID; // Graphic ID for grafflization
+} blob;
+
+
+typedef struct {
+    blob **list;
+    unsigned int used;
+    unsigned int allocated;
+} blob_queue;
+
+blob_queue blobs = {NULL, 0, 0};
+blob_queue untraced_blobs = {NULL, 0, 0};
+blob_queue root_blobs = {NULL, 0, 0};
+
+
+
+static void spin(void) {    
+    static char* spinner[] = {"\010\010| ", "\010\010/ ", "\010\010- ", "\010\010\\ "};
+    static int spindex = 0;
+    objc_debug_printf(spinner[spindex++]);
+    if (spindex == 4) spindex = 0;
+}
+
+
+static void enqueue_blob(blob_queue *q, blob *b)
+{
+    if (q->used == q->allocated) {
+        q->allocated = q->allocated * 2 + 1;
+        q->list = malloc_zone_realloc(objc_debug_zone(), q->list, q->allocated * sizeof(blob *));
+    }
+    q->list[q->used++] = b;
+}
+
+
+static blob *dequeue_blob(blob_queue *q)
+{
+    blob *result = q->list[0];
+    q->used--;
+    memmove(&q->list[0], &q->list[1], q->used * sizeof(blob *));
+    return result;
+}
+
+
+static blob *blob_for_address(vm_address_t addr)
+{
+    blob *b, **bp, **end;
+
+    if (addr == 0) return NULL;
+
+    for (bp = blobs.list, end = blobs.list+blobs.used; bp < end; bp++) {
+        b = *bp;
+        if (b->address == addr) return b;
+    }
+
+    b = malloc_zone_calloc(objc_debug_zone(), sizeof(blob), 1);
+    b->address = addr;
+    b->depth = -1;
+    b->refcount = auto_zone_size_no_lock(auto_zone(), (void *)addr) ? auto_zone_retain_count_no_lock(auto_zone(), (void *)addr) : 1;
+    enqueue_blob(&blobs, b);
+    return b;
+}
+
+static int blob_exists(vm_address_t addr)
+{
+    blob *b, **bp, **end;
+    for (bp = blobs.list, end = blobs.list+blobs.used; bp < end; bp++) {
+        b = *bp;
+        if (b->address == addr) return 1;
+    }
+    return 0;
+}
+
+
+// Destroy the blobs table and all blob data in it
+static void free_blobs(void)
+{
+    blob *b, **bp, **end;
+    for (bp = blobs.list, end = blobs.list+blobs.used; bp < end; bp++) {
+        b = *bp;
+        malloc_zone_free(objc_debug_zone(), b);
+    }
+    if (blobs.list) malloc_zone_free(objc_debug_zone(), blobs.list);
+}
+
+static void print_chain(auto_zone_t *zone, blob *root)
+{
+    blob *b;
+    for (b = root; b != NULL; b = blob_for_address(b->back.referent)) {
+        char *name;
+        if (b->back.referent) {
+            name = name_for_address(zone, b->address, b->back.referrer_offset, true);
+            objc_debug_printf("[%p%+d]  :  %s  ->\n", b->address, b->back.referrer_offset, name);
+        } else {
+            name = name_for_address(zone, b->address, 0, true);
+            objc_debug_printf("[%p]    :   %s\n", b->address, name);
+        }
+        malloc_zone_free(objc_debug_zone(), name);
+    }
+}
+
+
+static void objc_blob_recorder(auto_zone_t *zone, void *ctx, 
+                               auto_reference_t ref)
+{
+    blob *b = (blob *)ctx;
+
+    spin();
+
+    if (b->referrers_used == b->referrers_allocated) {
+        b->referrers_allocated = b->referrers_allocated * 2 + 1;
+        b->referrers = malloc_zone_realloc(objc_debug_zone(), b->referrers,
+                                             b->referrers_allocated * 
+                                             sizeof(auto_reference_t));
+    }
+
+    b->referrers[b->referrers_used++] = ref;
+    if (!blob_exists(ref.referrer_base)) {
+        enqueue_blob(&untraced_blobs, blob_for_address(ref.referrer_base));
+    }
+}
+
+
+#define INSTANCE_ROOTS 1
+#define HEAP_ROOTS 2
+#define ALL_REFS 3
+static void objc_print_recursive_refs(vm_address_t target, int which, void *stack_bottom, int lock);
+static void grafflize(blob_queue *blobs, int everything);
+
+void objc_print_instance_roots(vm_address_t target, void *stack_bottom, int lock)
+{
+    objc_print_recursive_refs(target, INSTANCE_ROOTS, stack_bottom, lock);
+}
+
+void objc_print_heap_roots(vm_address_t target, void *stack_bottom, int lock)
+{
+    objc_print_recursive_refs(target, HEAP_ROOTS, stack_bottom, lock);
+}
+
+void objc_print_all_refs(vm_address_t target, void *stack_bottom, int lock)
+{
+    objc_print_recursive_refs(target, ALL_REFS, stack_bottom, lock);
+}
+
+static void sort_blobs_by_refcount(blob_queue *blobs)
+{
+    int i, j;
+
+    // simple bubble sort
+    for (i = 0; i < blobs->used; i++) {
+        for (j = i+1; j < blobs->used; j++) {
+            if (blobs->list[i]->refcount < blobs->list[j]->refcount) {
+                blob *temp = blobs->list[i];
+                blobs->list[i] = blobs->list[j];
+                blobs->list[j] = temp;
+            }
+        }
+    }
+}
+
+
+static void sort_blobs_by_depth(blob_queue *blobs)
+{
+    int i, j;
+
+    // simple bubble sort
+    for (i = 0; i < blobs->used; i++) {
+        for (j = i+1; j < blobs->used; j++) {
+            if (blobs->list[i]->depth > blobs->list[j]->depth) {
+                blob *temp = blobs->list[i];
+                blobs->list[i] = blobs->list[j];
+                blobs->list[j] = temp;
+            }
+        }
+    }
+}
+
+
+static void objc_print_recursive_refs(vm_address_t target, int which, void *stack_bottom, int lock)
+{
+    objc_debug_printf("\n   ");  // make spinner draw in a pretty place
+
+    // Construct pointed-to graph (of things eventually pointing to target)
+    
+    enqueue_blob(&untraced_blobs, blob_for_address(target));
+    
+    while (untraced_blobs.used > 0) {
+        blob *b = dequeue_blob(&untraced_blobs);
+        spin();
+        if (lock) {
+            auto_enumerate_references(auto_zone(), (void *)b->address, 
+                                      objc_blob_recorder, stack_bottom, b);
+        } else {
+            auto_enumerate_references_no_lock(auto_zone(), (void *)b->address, 
+                                              objc_blob_recorder, stack_bottom, b);
+        }
+    }
+
+    // Walk pointed-to graph to find shortest paths from roots to target.
+    // This is BREADTH-FIRST order.
+
+    blob_for_address(target)->depth = 0;
+    enqueue_blob(&untraced_blobs, blob_for_address(target));
+    
+    while (untraced_blobs.used > 0) {
+        blob *b = dequeue_blob(&untraced_blobs);
+        blob *other;
+        auto_reference_t *r, *end;
+        int stop = NO;
+
+        spin();
+
+        if (which == ALL_REFS) {
+            // Never stop at roots.
+            stop = NO;
+        } else if (which == HEAP_ROOTS) {
+            // Stop at any root (a block with positive retain count)
+            stop = (b->refcount > 0);
+        } else if (which == INSTANCE_ROOTS) {
+            // Only stop at roots that are instances
+           auto_memory_type_t type = auto_zone_get_layout_type_no_lock(auto_zone(), (void *)b->address);
+            stop = (b->refcount > 0  &&  (type == AUTO_OBJECT_SCANNED || type == AUTO_OBJECT_UNSCANNED)); // GREG XXX ???
+        }
+
+        // If this object is a root, save it and don't walk its referrers.
+        if (stop) {
+            enqueue_blob(&root_blobs, b);
+            continue;
+        }
+
+        // For any "other object" that points to "this object"
+        // and does not yet have a depth:
+        // (1) other object is one level deeper than this object
+        // (2) (one of) the shortest path(s) from other object to the 
+        //     target goes through this object
+
+        for (r = b->referrers, end = b->referrers + b->referrers_used; 
+             r < end;
+             r++)
+        {
+            other = blob_for_address(r->referrer_base);
+            if (other->depth == -1) {
+                other->depth = b->depth + 1;
+                other->back = *r;
+                enqueue_blob(&untraced_blobs, other);
+            }
+        }
+    }
+
+    {
+        char *name = name_for_address(auto_zone(), target, 0, true);
+        objc_debug_printf("\n\n%d %s %p (%s)\n\n",
+                          (which==ALL_REFS) ? blobs.used : root_blobs.used, 
+                          (which==ALL_REFS) ? "INDIRECT REFS TO" : "ROOTS OF", 
+                          target, name);
+        malloc_zone_free(objc_debug_zone(), name);
+    }
+
+    if (which == ALL_REFS) {
+        // Print all reference objects, biggest refcount first
+        int i;
+        sort_blobs_by_refcount(&blobs);
+        for (i = 0; i < blobs.used; i++) {
+            char *name = name_for_address(auto_zone(), blobs.list[i]->address, 0, true);
+            objc_debug_printf("[%p]    :   %s\n", blobs.list[i]->address, name);
+            malloc_zone_free(objc_debug_zone(), name);
+        }
+    }    
+    else {
+        // Walk back chain from every root to the target, printing every step.
+        
+        while (root_blobs.used > 0) {
+            blob *root = dequeue_blob(&root_blobs);
+            print_chain(auto_zone(), root);
+            objc_debug_printf("\n");
+        }
+    }
+
+    grafflize(&blobs, which == ALL_REFS);
+
+    objc_debug_printf("\ndone\n\n");
+
+    // Clean up
+
+    free_blobs();
+    if (untraced_blobs.list) malloc_zone_free(objc_debug_zone(), untraced_blobs.list);
+    if (root_blobs.list) malloc_zone_free(objc_debug_zone(), root_blobs.list);
+
+    memset(&blobs, 0, sizeof(blobs));
+    memset(&root_blobs, 0, sizeof(root_blobs));
+    memset(&untraced_blobs, 0, sizeof(untraced_blobs));
+}
+
+
+
+struct objc_block_recorder_context {
+    malloc_zone_t *zone;
+    int fd;
+    unsigned int count;
+};
+
+
+static void objc_block_recorder(task_t task, void *context, unsigned type_mask,
+                                vm_range_t *ranges, unsigned range_count)
+{
+    char buf[20];
+    struct objc_block_recorder_context *ctx = 
+        (struct objc_block_recorder_context *)context;
+
+    vm_range_t *r;
+    vm_range_t *end;
+    for (r = ranges, end = ranges + range_count; r < end; r++) {
+        char *name = name_for_address(ctx->zone, r->address, 0, true);
+        buf[0] = '\0';
+        strcatx(buf, r->address);
+
+        write(ctx->fd, "0x", 2);
+        write(ctx->fd, buf, strlen(buf));
+        write(ctx->fd, " ", 1);
+        write(ctx->fd, name, strlen(name));
+        write(ctx->fd, "\n", 1);
+
+        malloc_zone_free(objc_debug_zone(), name);
+        ctx->count++;
+    }
+}
+
+
+void objc_dump_block_list(const char* path)
+{
+    struct objc_block_recorder_context ctx;
+    char filename[] = "/tmp/blocks-XXXXX.txt";
+
+    ctx.zone = auto_zone();
+    ctx.count = 0;
+    ctx.fd = (path ? open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666) : mkstemps(filename, strlen(strrchr(filename, '.'))));
+
+    objc_debug_printf("\n\nALL AUTO-ALLOCATED BLOCKS\n\n");
+    (*ctx.zone->introspect->enumerator)(mach_task_self(), &ctx, MALLOC_PTR_IN_USE_RANGE_TYPE, (vm_address_t)ctx.zone, NULL, objc_block_recorder);
+    objc_debug_printf("%d blocks written to file\n", ctx.count);
+    objc_debug_printf("open %s\n", (path ? path : filename));
+
+    close(ctx.fd);
+}
+
+
+
+
+static void grafflize_id(int gfile, int ID)
+{
+    char buf[20] = "";
+    char *c;
+
+    strcati(buf, ID);
+    c = "<key>ID</key><integer>";
+    write(gfile, c, strlen(c));
+    write(gfile, buf, strlen(buf));
+    c = "</integer>";
+    write(gfile, c, strlen(c));
+}
+
+
+// head = REFERENT end = arrow
+// tail = REFERRER end = no arrow
+static void grafflize_reference(int gfile, auto_reference_t reference,  
+                                int ID, int important)
+{
+    blob *referrer = blob_for_address(reference.referrer_base);
+    blob *referent = blob_for_address(reference.referent);
+    char *c;
+
+    // line
+    c = "<dict><key>Class</key><string>LineGraphic</string>";
+    write(gfile, c, strlen(c));
+
+    // id
+    grafflize_id(gfile, ID);
+
+    // head = REFERENT
+    c = "<key>Head</key><dict>";
+    write(gfile, c, strlen(c));
+    grafflize_id(gfile, referent->ID);
+    c = "</dict>";
+    write(gfile, c, strlen(c));
+
+    // tail = REFERRER
+    c = "<key>Tail</key><dict>";
+    write(gfile, c, strlen(c));
+    grafflize_id(gfile, referrer->ID);
+    c = "</dict>";
+    write(gfile, c, strlen(c));
+
+    // style - head arrow, thick line if important
+    c = "<key>Style</key><dict><key>stroke</key><dict>"
+        "<key>HeadArrow</key><string>FilledArrow</string>"
+        "<key>LineType</key><integer>1</integer>";
+    write(gfile, c, strlen(c));
+    if (important) {
+        c = "<key>Width</key><real>3</real>";
+        write(gfile, c, strlen(c));
+    }
+    c = "</dict></dict>";
+    write(gfile, c, strlen(c));
+    
+    // end line
+    c = "</dict>";
+    write(gfile, c, strlen(c));
+}
+
+
+static void grafflize_blob(int gfile, blob *b) 
+{
+    // fixme include ivar names too
+    char *name = name_for_address(auto_zone(), b->address, 0, false);
+    int width = 30 + strlen(name)*6;
+    int height = 40;
+    char buf[40] = "";
+    char *c;
+    
+    // rectangle
+    c = "<dict>"
+        "<key>Class</key><string>ShapedGraphic</string>"
+        "<key>Shape</key><string>Rectangle</string>";
+    write(gfile, c, strlen(c));
+    
+    // id
+    grafflize_id(gfile, b->ID);
+    
+    // bounds
+    // order vertically by depth
+    c = "<key>Bounds</key><string>{{0,";
+    write(gfile, c, strlen(c));
+    buf[0] = '\0';
+    strcati(buf, b->depth*60);
+    write(gfile, buf, strlen(buf));
+    c = "},{";
+    write(gfile, c, strlen(c));
+    buf[0] = '\0';
+    strcati(buf, width);
+    strcat(buf, ",");
+    strcati(buf, height);
+    write(gfile, buf, strlen(buf));
+    c = "}}</string>";
+    write(gfile, c, strlen(c));
+    
+    // label
+    c = "<key>Text</key><dict><key>Text</key>"
+        "<string>{\\rtf1\\mac\\ansicpg10000\\cocoartf102\n"
+        "{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\fonttbl\\f1\\fswiss\\fcharset77 Helvetica-Bold;}\n"
+        "{\\colortbl;\\red255\\green255\\blue255;}\n"
+        "\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n"
+        "\\f0\\fs20 \\cf0 ";
+    write(gfile, c, strlen(c));
+    write(gfile, name, strlen(name));
+    strcpy(buf, "\\\n0x");
+    strcatx(buf, b->address);
+    write(gfile, buf, strlen(buf));
+    c = "}</string></dict>";
+    write(gfile, c, strlen(c));
+
+    // styles
+    c = "<key>Style</key><dict>";
+    write(gfile, c, strlen(c));
+
+    // no shadow
+    c = "<key>shadow</key><dict><key>Draws</key><string>NO</string></dict>";
+    write(gfile, c, strlen(c));
+
+    // fat border if refcount > 0
+    if (b->refcount > 0) {
+        c = "<key>stroke</key><dict><key>Width</key><real>4</real></dict>";
+        write(gfile, c, strlen(c));
+    }
+
+    // end styles
+    c = "</dict>";
+    write(gfile, c, strlen(c));
+
+    // done
+    c = "</dict>\n";
+    write(gfile, c, strlen(c));
+    
+    malloc_zone_free(objc_debug_zone(), name);
+}
+
+
+#define gheader "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"><plist version=\"1.0\"><dict><key>GraphDocumentVersion</key><integer>3</integer><key>ReadOnly</key><string>NO</string><key>GraphicsList</key><array>\n"
+
+#define gfooter "</array></dict></plist>\n"
+
+
+static void grafflize(blob_queue *blobs, int everything)
+{
+    // Don't require linking to Foundation!
+    int i;
+    int gfile;
+    int nextid = 1;
+    char filename[] = "/tmp/gc-XXXXX.graffle";
+
+    // Open file
+    gfile = mkstemps(filename, strlen(strrchr(filename, '.')));
+    if (gfile < 0) {
+        objc_debug_printf("couldn't create a graffle file in /tmp/ (errno %d)\n", errno);
+        return;
+    }
+
+    // Write header
+    write(gfile, gheader, strlen(gheader));
+
+    // Write a rectangle for each blob
+    sort_blobs_by_depth(blobs);
+    for (i = 0; i < blobs->used; i++) {
+        blob *b = blobs->list[i];
+        b->ID = nextid++;
+        if (everything  ||  b->depth >= 0) {
+            grafflize_blob(gfile, b);
+        }
+    }
+
+    for (i = 0; i < blobs->used; i++) {
+        int j;
+        blob *b = blobs->list[i];
+
+        if (everything) {
+            // Write an arrow for each reference
+            // Use big arrows for backreferences
+            for (j = 0; j < b->referrers_used; j++) {
+                int is_back_ref = (b->referrers[i].referent == b->back.referent  &&  b->referrers[i].referrer_offset == b->back.referrer_offset  &&  b->referrers[i].referrer_base == b->back.referrer_base);
+                     
+                grafflize_reference(gfile, b->referrers[j], nextid++, 
+                                    is_back_ref);
+            }
+        }
+        else {
+            // Write an arrow for each backreference
+            if (b->depth > 0) {
+                grafflize_reference(gfile, b->back, nextid++, false);
+            }
+        }
+    }
+
+    // Write footer and close
+    write(gfile, gfooter, strlen(gfooter));
+    close(gfile);
+    objc_debug_printf("wrote object graph (%d objects)\nopen %s\n", 
+                      blobs->used, filename);
+}
+
+#endif
+
+
+
+// Stubs for non-open-source libauto functions
+
+static void auto_collect(auto_zone_t *zone, auto_collection_mode_t mode, void *collection_context)
+{
+}
+
+static auto_collection_control_t *auto_collection_parameters(auto_zone_t *zone)
+{
+    return NULL;
+}
+
+static const auto_statistics_t *auto_collection_statistics(auto_zone_t *zone)
+{
+    return NULL;
+}
+
+static void auto_enumerate_references(auto_zone_t *zone, void *referent, 
+                                      auto_reference_recorder_t callback, 
+                                      void *stack_bottom, void *ctx)
+{
+}
+
+static void auto_enumerate_references_no_lock(auto_zone_t *zone, void *referent, auto_reference_recorder_t callback, void *stack_bottom, void *ctx)
+{
+}
+
+static auto_zone_t *auto_zone(void)
+{
+    return NULL;
+}
+
+static void auto_zone_add_root(auto_zone_t *zone, void *root, size_t size)
+{
+}
+
+static void* auto_zone_allocate_object(auto_zone_t *zone, size_t size, auto_memory_type_t type, boolean_t initial_refcount_to_one, boolean_t clear)
+{
+    return NULL;
+}
+
+static const void *auto_zone_base_pointer(auto_zone_t *zone, const void *ptr)
+{
+    return NULL;
+}
+
+static auto_memory_type_t auto_zone_get_layout_type(auto_zone_t *zone, void *ptr)
+{
+    return 0;
+}
+
+static auto_memory_type_t auto_zone_get_layout_type_no_lock(auto_zone_t *zone, void *ptr)
+{
+    return 0;
+}
+
+static boolean_t auto_zone_is_finalized(auto_zone_t *zone, const void *ptr)
+{
+    return NO;
+}
+
+static boolean_t auto_zone_is_valid_pointer(auto_zone_t *zone, const void *ptr)
+{
+    return NO;
+}
+
+static unsigned int auto_zone_release(auto_zone_t *zone, void *ptr)
+{
+    return 0;
+}
+
+static void auto_zone_retain(auto_zone_t *zone, void *ptr)
+{
+}
+
+static unsigned int auto_zone_retain_count_no_lock(auto_zone_t *zone, const void *ptr)
+{
+    return 0;
+}
+
+static void auto_zone_set_class_list(int (*get_class_list)(void **buffer, int count))
+{
+}
+
+static size_t auto_zone_size_no_lock(auto_zone_t *zone, const void *ptr)
+{
+    return 0;
+}
+
+static void auto_zone_start_monitor(boolean_t force)
+{
+}
+
+static void auto_zone_write_barrier(auto_zone_t *zone, void *recipient, const unsigned int offset_in_bytes, const void *new_value)
+{
+    *(uintptr_t *)(offset_in_bytes + (uint8_t *)recipient) = (uintptr_t)new_value;
+}
+
+static void *auto_zone_write_barrier_memmove(auto_zone_t *zone, void *dst, const void *src, size_t size)
+{
+    return memmove(dst, src, size);
+}
+
index b17da95037d7e160c78ec6cbd5378313ed70d5c1..83e7b64ffe2ddff49488268167d32500d1a826f3 100644 (file)
@@ -65,47 +65,12 @@ struct objc_class {
 #define CLS_JAVA_CLASS         0x400L
 // thread-safe +initialize
 #define CLS_INITIALIZING       0x800
-
-/*
- * (true as of 2001-9-24)
- * Thread-safety note: changes to these flags are not atomic, so 
- * the only thing preventing lost updates is the timing of the changes.
- *
- * As long as the following are isolated from each other for any one class, 
- * nearly all flag updates will be safe:
- * - compile-time
- * - loading in one thread (not including +load) without messaging
- * - initializing in one thread with messaging from that thread only
- * - multi-threaded messaging with method caching
- *
- * The current code doesn't protect loading yet.
- *
- * Times when the flags may change:
- * CLS_CLASS: compile-time, hand-built classes
- * CLS_META: compile time, hand-built classes
- * CLS_INITIALIZED: initialize
- * CLS_POSING: unsafe, but posing has other thread-safety problems
- * CLS_MAPPED: compile-time
- * CLS_FLUSH_CACHE: messaging
- * CLS_GROW_CACHE: messaging
- *   FLUSH_CACHE and GROW_CACHE are protected from each other by the 
- *   cacheUpdateLock.
- * CLS_NEED_BIND: load, initialize
- * CLS_METHOD_ARRAY: load
- * CLS_JAVA_HYBRID: hand-built classes
- * CLS_JAVA_CLASS: hand-built classes, initialize
- * CLS_INITIALIZING: initialize
- *
- * The only unsafe updates are:
- * - posing (unsafe anyway)
- * - hand-built classes (including JavaBridge classes)
- *   There is a short time between objc_addClass inserts the new class 
- *   into the class_hash and the builder setting the right flags. 
- *   A thread looking at the class_hash could send a message to the class 
- *   and trigger initialization, and the changes to the initialization 
- *   flags and the hand-adjusted flags could collide. 
- *   Solution: don't do that. 
- */
+// bundle unloading
+#define CLS_FROM_BUNDLE                0x1000L
+// C++ ivar support
+#define CLS_HAS_CXX_STRUCTORS  0x2000L
+// Lazy method list arrays
+#define CLS_NO_METHOD_ARRAY    0x4000L
 
 
 /* 
@@ -169,7 +134,11 @@ struct objc_method_list {
 
 /* Protocol support */
 
+#ifdef __OBJC__
 @class Protocol;
+#else
+typedef struct objc_object Protocol;
+#endif
 
 struct objc_protocol_list {
        struct objc_protocol_list *next;
index 0b4dc990037b886f6e9ebc04482f6432fd805480..ed66e78a90141c86fad540aee6d8ed3be7ee3069 100644 (file)
@@ -54,6 +54,8 @@
  * cacheUpdateLock to prevent interference from concurrent modifications.
  * The function that frees cache garbage must acquire the cacheUpdateLock 
  * and use collecting_in_critical() to flush out cache readers.
+ * The cacheUpdateLock is also used to protect the custom allocator used 
+ * for large method cache blocks.
  *
  * Cache readers (PC-checked by collecting_in_critical())
  * objc_msgSend*
  * unsafely or place it in multiple caches.
  ***********************************************************************/
 
+/***********************************************************************
+ * Lazy method list arrays and method list locking  (2004-10-19)
+ * 
+ * cls->methodLists may be in one of three forms:
+ * 1. NULL: The class has no methods.
+ * 2. non-NULL, with CLS_NO_METHOD_ARRAY set: cls->methodLists points 
+ *    to a single method list, which is the class's only method list.
+ * 3. non-NULL, with CLS_NO_METHOD_ARRAY clear: cls->methodLists points to 
+ *    an array of method list pointers. The end of the array's block 
+ *    is set to -1. If the actual number of method lists is smaller 
+ *    than that, the rest of the array is NULL.
+ * 
+ * Attaching categories and adding and removing classes may change 
+ * the form of the class list. In addition, individual method lists 
+ * may be reallocated when fixed up.
+ *
+ * Classes are initially read as #1 or #2. If a category is attached 
+ * or other methods added, the class is changed to #3. Once in form #3, 
+ * the class is never downgraded to #1 or #2, even if methods are removed.
+ * Classes added with objc_addClass are initially either #1 or #3.
+ * 
+ * Accessing and manipulating a class's method lists are synchronized, 
+ * to prevent races when one thread restructures the list. However, 
+ * if the class is not yet in use (i.e. not in class_hash), then the 
+ * thread loading the class may access its method lists without locking.
+ * 
+ * The following functions acquire methodListLock:
+ * class_getInstanceMethod
+ * class_getClassMethod
+ * class_nextMethodList
+ * class_addMethods
+ * class_removeMethods
+ * class_respondsToMethod
+ * _class_lookupMethodAndLoadCache
+ * lookupMethodInClassAndLoadCache
+ * _objc_add_category_flush_caches
+ *
+ * The following functions don't acquire methodListLock because they 
+ * only access method lists during class load and unload:
+ * _objc_register_category
+ * _resolve_categories_for_class (calls _objc_add_category)
+ * add_class_to_loadable_list
+ * _objc_addClass
+ * _objc_remove_classes_in_image
+ *
+ * The following functions use method lists without holding methodListLock.
+ * The caller must either hold methodListLock, or be loading the class.
+ * _getMethod (called by class_getInstanceMethod, class_getClassMethod, 
+ *   and class_respondsToMethod)
+ * _findMethodInClass (called by _class_lookupMethodAndLoadCache, 
+ *   lookupMethodInClassAndLoadCache, _getMethod)
+ * _findMethodInList (called by _findMethodInClass)
+ * nextMethodList (called by _findMethodInClass and class_nextMethodList
+ * fixupSelectorsInMethodList (called by nextMethodList)
+ * _objc_add_category (called by _objc_add_category_flush_caches, 
+ *   resolve_categories_for_class and _objc_register_category)
+ * _objc_insertMethods (called by class_addMethods and _objc_add_category)
+ * _objc_removeMethods (called by class_removeMethods)
+ * _objcTweakMethodListPointerForClass (called by _objc_insertMethods)
+ * get_base_method_list (called by add_class_to_loadable_list)
+ * lookupNamedMethodInMethodList (called by add_class_to_loadable_list)
+ ***********************************************************************/
+
+/***********************************************************************
+ * Thread-safety of class info bits  (2004-10-19)
+ * 
+ * Some class info bits are used to store mutable runtime state. 
+ * Modifications of the info bits at particular times need to be 
+ * synchronized to prevent races.
+ * 
+ * Three thread-safe modification functions are provided:
+ * _class_setInfo()     // atomically sets some bits
+ * _class_clearInfo()   // atomically clears some bits
+ * _class_changeInfo()  // atomically sets some bits and clears others
+ * These replace CLS_SETINFO() for the multithreaded cases.
+ * 
+ * Three modification windows are defined:
+ * - compile time
+ * - class construction or image load (before +load) in one thread
+ * - multi-threaded messaging and method caches
+ * 
+ * Info bit modification at compile time and class construction do not 
+ *   need to be locked, because only one thread is manipulating the class.
+ * Info bit modification during messaging needs to be locked, because 
+ *   there may be other threads simultaneously messaging or otherwise 
+ *   manipulating the class.
+ *   
+ * Modification windows for each flag:
+ * 
+ * CLS_CLASS: compile-time and class load
+ * CLS_META: compile-time and class load
+ * CLS_INITIALIZED: +initialize
+ * CLS_POSING: messaging
+ * CLS_MAPPED: compile-time
+ * CLS_FLUSH_CACHE: messaging
+ * CLS_GROW_CACHE: messaging
+ * CLS_NEED_BIND: unused
+ * CLS_METHOD_ARRAY: unused
+ * CLS_JAVA_HYBRID: JavaBridge only
+ * CLS_JAVA_CLASS: JavaBridge only
+ * CLS_INITIALIZING: messaging
+ * CLS_FROM_BUNDLE: class load
+ * CLS_HAS_CXX_STRUCTORS: compile-time and class load
+ * CLS_NO_METHOD_ARRAY: class load and messaging
+ * 
+ * CLS_INITIALIZED and CLS_INITIALIZING have additional thread-safety 
+ * constraints to support thread-safe +initialize. See "Thread safety 
+ * during class initialization" for details.
+ * 
+ * CLS_JAVA_HYBRID and CLS_JAVA_CLASS are set immediately after JavaBridge 
+ * calls objc_addClass(). The JavaBridge does not use an atomic update, 
+ * but the modification counts as "class construction" unless some other 
+ * thread quickly finds the class via the class list. This race is 
+ * small and unlikely in well-behaved code.
+ *
+ * Most info bits that may be modified during messaging are also never 
+ * read without a lock. There is no general read lock for the info bits.
+ * CLS_INITIALIZED: classInitLock
+ * CLS_FLUSH_CACHE: cacheUpdateLock
+ * CLS_GROW_CACHE: cacheUpdateLock
+ * CLS_NO_METHOD_ARRAY: methodListLock
+ * CLS_INITIALIZING: classInitLock
+ ***********************************************************************/
+
 /***********************************************************************
  * Thread-safety during class initialization (GrP 2001-9-24)
  *
 
 #include <sys/types.h>
 
-#include <CoreFoundation/CFDictionary.h>
-
 // Needed functions not in any header file
 size_t malloc_size (const void * ptr);
 
@@ -268,6 +392,7 @@ typedef struct CacheInstrumentation CacheInstrumentation;
 
 static Ivar            class_getVariable               (Class cls, const char * name);
 static void            flush_caches                    (Class cls, BOOL flush_meta);
+static struct objc_method_list *nextMethodList(struct objc_class *cls, void **it);
 static void            addClassToOriginalClass (Class posingClass, Class originalClass);
 static void            _objc_addOrigClass              (Class origClass);
 static void            _freedHandler                   (id self, SEL sel);
@@ -278,13 +403,18 @@ static int                LogObjCMessageSend              (BOOL isClassMethod, const char * objectsClass,
 static BOOL            _cache_fill                             (Class cls, Method smt, SEL sel);
 static void _cache_addForwardEntry(Class cls, SEL sel);
 static void            _cache_flush                    (Class cls);
+static IMP lookupMethodInClassAndLoadCache(Class cls, SEL sel);
 static int             SubtypeUntil                    (const char * type, char end);
 static const char *    SkipFirstType           (const char * type);
 
 static unsigned long   _get_pc_for_thread      (mach_port_t thread);
 static int             _collecting_in_critical (void);
 static void            _garbage_make_room              (void);
-static void            _cache_collect_free             (void * data, BOOL tryCollect);
+static void            _cache_collect_free             (void * data, size_t size, BOOL tryCollect);
+
+static BOOL cache_allocator_is_block(void *block);
+static void *cache_allocator_calloc(size_t size);
+static void cache_allocator_free(void *block);
 
 static void            _cache_print                    (Cache cache);
 static unsigned int    log2                            (unsigned int x);
@@ -323,7 +453,10 @@ OBJC_DECLARE_LOCK(classInitLock);
 // Threads that are waiting for a class to finish initializing wait on this.
 pthread_cond_t classInitWaitCond = PTHREAD_COND_INITIALIZER;
 
-CFMutableDictionaryRef _classIMPTables = NULL;
+// Lock for method list access and modification.
+// Protects methodLists fields, method arrays, and CLS_NO_METHOD_ARRAY bits.
+// Classes not yet in use do not need to take this lock.
+OBJC_DECLARE_LOCK(methodListLock);
 
 // When traceDuplicates is non-zero, _cacheFill checks whether the method
 // being encached is already there.  The number of times it finds a match
@@ -333,6 +466,12 @@ static int traceDuplicates         = 0;
 static int     traceDuplicatesVerbose  = 0;
 static int     cacheFillDuplicates     = 0;
 
+// Custom cache allocator parameters
+// CACHE_REGION_SIZE must be a multiple of CACHE_QUANTUM.
+#define CACHE_QUANTUM 520
+#define CACHE_REGION_SIZE 131040  // quantized just under 128KB (131072)
+// #define CACHE_REGION_SIZE 262080  // quantized just under 256KB (262144)
+
 #ifdef OBJC_INSTRUMENTED
 // Instrumentation
 static unsigned int    LinearFlushCachesCount                  = 0;
@@ -349,7 +488,7 @@ static unsigned int MaxIdealFlushCachesCount                = 0;
 // Method call logging
 typedef int    (*ObjCLogProc)(BOOL, const char *, const char *, SEL);
 
-static int                     totalCacheFills         = 0;
+static int totalCacheFills NOBSS = 0;
 static int                     objcMsgLogFD            = (-1);
 static ObjCLogProc     objcMsgLogProc          = &LogObjCMessageSend;
 static int                     objcMsgLogEnabled       = 0;
@@ -381,12 +520,24 @@ _errNewVars[]                             = "[%s poseAs:%s]: %s defines new instance variables";
 * messenger.
 ***********************************************************************/
 
+#ifndef OBJC_INSTRUMENTED
 const struct objc_cache                emptyCache =
 {
     0,                         // mask
     0,                         // occupied
     { NULL }                   // buckets
 };
+#else
+// OBJC_INSTRUMENTED requires writable data immediately following emptyCache.
+struct objc_cache              emptyCache =
+{
+    0,                         // mask
+    0,                         // occupied
+    { NULL }                   // buckets
+};
+CacheInstrumentation emptyCacheInstrumentation = {0};
+#endif
+
 
 // Freed objects have their isa set to point to this dummy class.
 // This avoids the need to check for Nil classes in the messenger.
@@ -441,11 +592,108 @@ void *           object_getIndexedIvars             (id          obj)
 }
 
 
+/***********************************************************************
+* object_cxxDestructFromClass.
+* Call C++ destructors on obj, starting with cls's 
+*   dtor method (if any) followed by superclasses' dtors (if any), 
+*   stopping at cls's dtor (if any).
+* Uses methodListLock and cacheUpdateLock. The caller must hold neither.
+**********************************************************************/
+static void object_cxxDestructFromClass(id obj, Class cls)
+{
+    void (*dtor)(id);
+
+    // Call cls's dtor first, then superclasses's dtors.
+
+    for ( ; cls != NULL; cls = cls->super_class) {
+        if (!(cls->info & CLS_HAS_CXX_STRUCTORS)) continue; 
+        dtor = (void(*)(id))
+            lookupMethodInClassAndLoadCache(cls, cxx_destruct_sel);
+        if (dtor != (void(*)(id))&_objc_msgForward) {
+            if (PrintCxxCtors) {
+                _objc_inform("CXX: calling C++ destructors for class %s", 
+                             cls->name);
+            }
+            (*dtor)(obj);
+        }
+    }
+}
+
+
+/***********************************************************************
+* object_cxxDestruct.
+* Call C++ destructors on obj, if any.
+* Uses methodListLock and cacheUpdateLock. The caller must hold neither.
+**********************************************************************/
+void object_cxxDestruct(id obj)
+{
+    if (!obj) return;
+    object_cxxDestructFromClass(obj, obj->isa);
+}
+
+
+/***********************************************************************
+* object_cxxConstructFromClass.
+* Recursively call C++ constructors on obj, starting with base class's 
+*   ctor method (if any) followed by subclasses' ctors (if any), stopping 
+*   at cls's ctor (if any).
+* Returns YES if construction succeeded.
+* Returns NO if some constructor threw an exception. The exception is 
+*   caught and discarded. Any partial construction is destructed.
+* Uses methodListLock and cacheUpdateLock. The caller must hold neither.
+*
+* .cxx_construct returns id. This really means:
+* return self: construction succeeded
+* return nil:  construction failed because a C++ constructor threw an exception
+**********************************************************************/
+static BOOL object_cxxConstructFromClass(id obj, Class cls)
+{
+    id (*ctor)(id);
+
+    // Call superclasses' ctors first, if any.
+    if (cls->super_class) {
+        BOOL ok = object_cxxConstructFromClass(obj, cls->super_class);
+        if (!ok) return NO;  // some superclass's ctor failed - give up
+    }
+
+    // Find this class's ctor, if any.
+    if (!(cls->info & CLS_HAS_CXX_STRUCTORS)) return YES;  // no ctor - ok
+    ctor = (id(*)(id))lookupMethodInClassAndLoadCache(cls, cxx_construct_sel);
+    if (ctor == (id(*)(id))&_objc_msgForward) return YES;  // no ctor - ok
+    
+    // Call this class's ctor.
+    if (PrintCxxCtors) {
+        _objc_inform("CXX: calling C++ constructors for class %s", cls->name);
+    }
+    if ((*ctor)(obj)) return YES;  // ctor called and succeeded - ok
+
+    // This class's ctor was called and failed. 
+    // Call superclasses's dtors to clean up.
+    if (cls->super_class) object_cxxDestructFromClass(obj, cls->super_class);
+    return NO;
+}
+
+
+/***********************************************************************
+* object_cxxConstructFromClass.
+* Call C++ constructors on obj, if any.
+* Returns YES if construction succeeded.
+* Returns NO if some constructor threw an exception. The exception is 
+*   caught and discarded. Any partial construction is destructed.
+* Uses methodListLock and cacheUpdateLock. The caller must hold neither.
+**********************************************************************/
+BOOL object_cxxConstruct(id obj)
+{
+    if (!obj) return YES;
+    return object_cxxConstructFromClass(obj, obj->isa);
+}
+
+
 /***********************************************************************
 * _internal_class_createInstanceFromZone.  Allocate an instance of the
 * specified class with the specified number of bytes for indexed
 * variables, in the specified zone.  The isa field is set to the
-* class, all other fields are zeroed.
+* class, C++ default constructors are called, and all other fields are zeroed.
 **********************************************************************/
 static id      _internal_class_createInstanceFromZone (Class           aClass,
                                                   unsigned     nIvarBytes,
@@ -472,6 +720,14 @@ static id  _internal_class_createInstanceFromZone (Class           aClass,
 
     // Set the isa pointer
     obj->isa = aClass;
+
+    // Call C++ constructors, if any.
+    if (!object_cxxConstruct(obj)) {
+        // Some C++ constructor threw an exception. 
+        malloc_zone_free(z, obj);
+        return nil;
+    }
+
     return obj;
 }
 
@@ -535,60 +791,6 @@ int        class_getVersion               (Class           aClass)
     return ((struct objc_class *) aClass)->version;
 }
 
-static void _addListIMPsToTable(CFMutableDictionaryRef table, struct objc_method_list *mlist, Class cls, void **iterator) {
-    int i;
-    struct objc_method_list *new_mlist;
-    if (!mlist) return;
-    /* Work from end of list so that categories override */
-    new_mlist = _class_inlinedNextMethodList(cls, iterator);
-    _addListIMPsToTable(table, new_mlist, cls, iterator);
-    for (i = 0; i < mlist->method_count; i++) {
-        CFDictionarySetValue(table, mlist->method_list[i].method_name, mlist->method_list[i].method_imp);
-    }
-}
-
-static void _addClassIMPsToTable(CFMutableDictionaryRef table, Class cls) {
-    struct objc_method_list *mlist;
-    void *iterator = 0;
-#ifdef INCLUDE_SUPER_IMPS_IN_IMP_TABLE
-    if (cls->super_class) {    /* Do superclass first so subclass overrides */
-        CFMutableDictionaryRef super_table = CFDictionaryGetValue(_classIMPTables, cls->super_class);
-        if (super_table) {
-            CFIndex cnt;
-            const void **keys, **values, *buffer1[128], *buffer2[128];
-            cnt = CFDictionaryGetCount(super_table);
-            keys = (cnt <= 128) ? buffer1 : CFAllocatorAllocate(NULL, cnt * sizeof(void *), 0);
-            values = (cnt <= 128) ? buffer2 : CFAllocatorAllocate(NULL, cnt * sizeof(void *), 0);
-            CFDictionaryGetKeysAndValues(super_table, keys, values);
-            while (cnt--) {
-                CFDictionarySetValue(table, keys[cnt], values[cnt]);
-            }
-            if (keys != buffer1) CFAllocatorDeallocate(NULL, keys);
-            if (values != buffer2) CFAllocatorDeallocate(NULL, values);
-        } else {
-            _addClassIMPsToTable(table, cls->super_class);
-        }
-    }
-#endif
-mlist = _class_inlinedNextMethodList(cls, &iterator);
-_addListIMPsToTable(table, mlist, cls, &iterator);
-}
-
-CFMutableDictionaryRef _getClassIMPTable(Class cls) {
-    CFMutableDictionaryRef table;
-    if (NULL == _classIMPTables) {
-        // maps Classes to mutable dictionaries
-        _classIMPTables = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
-    }
-    table = (CFMutableDictionaryRef)CFDictionaryGetValue(_classIMPTables, cls);
-    // IMP table maps SELs to IMPS
-    if (NULL == table) {
-        table = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
-        _addClassIMPsToTable(table, cls);
-        CFDictionaryAddValue(_classIMPTables, cls, table);
-    }
-    return table;
-}
 
 static inline Method _findNamedMethodInList(struct objc_method_list * mlist, const char *meth_name) {
     int i;
@@ -602,7 +804,125 @@ static inline Method _findNamedMethodInList(struct objc_method_list * mlist, con
     return NULL;
 }
 
-/* These next three functions are the heart of ObjC method lookup. */
+
+/***********************************************************************
+* fixupSelectorsInMethodList
+* Uniques selectors in the given method list.
+* The given method list must be non-NULL and not already fixed-up.
+* If the class was loaded from a bundle:
+*   fixes up the given list in place with heap-allocated selector strings
+* If the class was not from a bundle:
+*   allocates a copy of the method list, fixes up the copy, and returns 
+*   the copy. The given list is unmodified.
+*
+* If cls is already in use, methodListLock must be held by the caller.
+**********************************************************************/
+// Fixed-up method lists get mlist->obsolete = _OBJC_FIXED_UP.
+#define _OBJC_FIXED_UP ((void *)1771)
+
+static struct objc_method_list *fixupSelectorsInMethodList(Class cls, struct objc_method_list *mlist)
+{
+    unsigned i, size;
+    Method method;
+    struct objc_method_list *old_mlist; 
+    
+    if ( ! mlist ) return (struct objc_method_list *)0;
+    if ( mlist->obsolete != _OBJC_FIXED_UP ) {
+        BOOL isBundle = CLS_GETINFO(cls, CLS_FROM_BUNDLE) ? YES : NO;
+        if (!isBundle) {
+            old_mlist = mlist;
+            size = sizeof(struct objc_method_list) - sizeof(struct objc_method) + old_mlist->method_count * sizeof(struct objc_method);
+            mlist = _malloc_internal(size);
+            memmove(mlist, old_mlist, size);
+        } else {
+            // Mach-O bundles are fixed up in place. 
+            // This prevents leaks when a bundle is unloaded.
+        }
+        sel_lock();
+        for ( i = 0; i < mlist->method_count; i += 1 ) {
+            method = &mlist->method_list[i];
+            method->method_name =
+                sel_registerNameNoLock((const char *)method->method_name, isBundle);  // Always copy selector data from bundles.
+        }
+        sel_unlock();
+        mlist->obsolete = _OBJC_FIXED_UP;
+    }
+    return mlist;
+}
+
+
+/***********************************************************************
+* nextMethodList
+* Returns successive method lists from the given class.
+* Method lists are returned in method search order (i.e. highest-priority 
+* implementations first).
+* All necessary method list fixups are performed, so the 
+* returned method list is fully-constructed.
+*
+* If cls is already in use, methodListLock must be held by the caller.
+* For full thread-safety, methodListLock must be continuously held by the 
+* caller across all calls to nextMethodList(). If the lock is released, 
+* the bad results listed in class_nextMethodList() may occur.
+*
+* void *iterator = NULL;
+* struct objc_method_list *mlist;
+* OBJC_LOCK(&methodListLock);
+* while ((mlist = nextMethodList(cls, &iterator))) {
+*     // do something with mlist
+* }
+* OBJC_UNLOCK(&methodListLock);
+**********************************************************************/
+static struct objc_method_list *nextMethodList(struct objc_class *cls,
+                                               void **it)
+{
+    uintptr_t index = *(uintptr_t *)it;
+    struct objc_method_list **resultp;
+
+    if (index == 0) {
+        // First call to nextMethodList.
+        if (!cls->methodLists) {
+            resultp = NULL;
+        } else if (cls->info & CLS_NO_METHOD_ARRAY) {
+            resultp = (struct objc_method_list **)&cls->methodLists;
+        } else {
+            resultp = &cls->methodLists[0];
+            if (!*resultp  ||  *resultp == END_OF_METHODS_LIST) {
+                resultp = NULL;
+            }
+        }
+    } else {
+        // Subsequent call to nextMethodList.
+        if (!cls->methodLists) {
+            resultp = NULL;
+        } else if (cls->info & CLS_NO_METHOD_ARRAY) {
+            resultp = NULL;
+        } else {
+            resultp = &cls->methodLists[index];
+            if (!*resultp  ||  *resultp == END_OF_METHODS_LIST) {
+                resultp = NULL;
+            }
+        }
+    }
+
+    // resultp now is NULL, meaning there are no more method lists, 
+    // OR the address of the method list pointer to fix up and return.
+    
+    if (resultp) {
+        if (*resultp  &&  (*resultp)->obsolete != _OBJC_FIXED_UP) {
+            *resultp = fixupSelectorsInMethodList(cls, *resultp);
+        }
+        *it = (void *)(index + 1);
+        return *resultp;
+    } else {
+        *it = 0;
+        return NULL;
+    }
+}
+
+
+/* These next three functions are the heart of ObjC method lookup. 
+ * If the class is currently in use, methodListLock must be held by the caller.
+ */
 static inline Method _findMethodInList(struct objc_method_list * mlist, SEL sel) {
     int i;
     if (!mlist) return NULL;
@@ -615,25 +935,65 @@ static inline Method _findMethodInList(struct objc_method_list * mlist, SEL sel)
     return NULL;
 }
 
+static inline Method _findMethodInClass(Class cls, SEL sel) __attribute__((always_inline));
 static inline Method _findMethodInClass(Class cls, SEL sel) {
-    struct objc_method_list *mlist;
-    void *iterator = 0;
-    while ((mlist = _class_inlinedNextMethodList(cls, &iterator))) {
-        Method m = _findMethodInList(mlist, sel);
-        if (m) return m;
+    // Flattened version of nextMethodList(). The optimizer doesn't 
+    // do a good job with hoisting the conditionals out of the loop.
+    // Conceptually, this looks like:
+    // while ((mlist = nextMethodList(cls, &iterator))) {
+    //     Method m = _findMethodInList(mlist, sel);
+    //     if (m) return m;
+    // }
+
+    if (!cls->methodLists) {
+        // No method lists.
+        return NULL;
+    }
+    else if (cls->info & CLS_NO_METHOD_ARRAY) {
+        // One method list.
+        struct objc_method_list **mlistp;
+        mlistp = (struct objc_method_list **)&cls->methodLists;
+        if ((*mlistp)->obsolete != _OBJC_FIXED_UP) {
+            *mlistp = fixupSelectorsInMethodList(cls, *mlistp);
+        }
+        return _findMethodInList(*mlistp, sel);
+    }
+    else {
+        // Multiple method lists.
+        struct objc_method_list **mlistp;
+        for (mlistp = cls->methodLists; 
+             *mlistp != NULL  &&  *mlistp != END_OF_METHODS_LIST; 
+             mlistp++) 
+        {
+            Method m;
+            if ((*mlistp)->obsolete != _OBJC_FIXED_UP) {
+                *mlistp = fixupSelectorsInMethodList(cls, *mlistp);
+            }
+            m = _findMethodInList(*mlistp, sel);
+            if (m) return m;
+        }
+        return NULL;
     }
-    return NULL;
 }
 
 static inline Method _getMethod(Class cls, SEL sel) {
     for (; cls; cls = cls->super_class) {
-        Method m = _findMethodInClass(cls, sel);
+        Method m;
+        m = _findMethodInClass(cls, sel);
         if (m) return m;
     }
     return NULL;
 }
 
 
+// fixme for gc debugging temporary use
+__private_extern__ IMP findIMPInClass(Class cls, SEL sel)
+{
+    Method m = _findMethodInClass(cls, sel);
+    if (m) return m->method_imp;
+    else return NULL;
+}
+
 /***********************************************************************
 * class_getInstanceMethod.  Return the instance method for the
 * specified class and selector.
@@ -641,12 +1001,17 @@ static inline Method _getMethod(Class cls, SEL sel) {
 Method         class_getInstanceMethod        (Class           aClass,
                                         SEL            aSelector)
 {
+    Method result;
+
     // Need both a class and a selector
     if (!aClass || !aSelector)
         return NULL;
 
     // Go to the class
-    return _getMethod (aClass, aSelector);
+    OBJC_LOCK(&methodListLock);
+    result = _getMethod (aClass, aSelector);
+    OBJC_UNLOCK(&methodListLock);
+    return result;
 }
 
 /***********************************************************************
@@ -656,12 +1021,17 @@ Method           class_getInstanceMethod        (Class           aClass,
 Method         class_getClassMethod           (Class           aClass,
                                      SEL               aSelector)
 {
+    Method result;
+
     // Need both a class and a selector
     if (!aClass || !aSelector)
         return NULL;
 
     // Go to the class or isa
-    return _getMethod (GETMETA(aClass), aSelector);
+    OBJC_LOCK(&methodListLock);
+    result = _getMethod (GETMETA(aClass), aSelector);
+    OBJC_UNLOCK(&methodListLock);
+    return result;
 }
 
 /***********************************************************************
@@ -743,7 +1113,7 @@ static void flush_caches(Class cls, BOOL flush_meta)
     newNumClasses = objc_getClassList((Class *)NULL, 0);
     while (numClasses < newNumClasses) {
         numClasses = newNumClasses;
-        classes = realloc(classes, sizeof(Class) * numClasses);
+        classes = _realloc_internal(classes, sizeof(Class) * numClasses);
         newNumClasses = objc_getClassList((Class *)classes, numClasses);
     }
     numClasses = newNumClasses;
@@ -798,7 +1168,7 @@ static void flush_caches(Class cls, BOOL flush_meta)
 #endif
 
         OBJC_UNLOCK(&cacheUpdateLock);
-        free(classes);
+        _free_internal(classes);
         return;
     }
 
@@ -878,7 +1248,7 @@ static void flush_caches(Class cls, BOOL flush_meta)
 #endif
 
     OBJC_UNLOCK(&cacheUpdateLock);
-    free(classes);
+    _free_internal(classes);
 }
 
 /***********************************************************************
@@ -900,17 +1270,28 @@ void             do_not_remove_this_dummy_function          (void)
     (void) class_nextMethodList (NULL, NULL);
 }
 
+
 /***********************************************************************
 * class_nextMethodList.
+* External version of nextMethodList().
 *
-* usage:
-* void *       iterator = 0;
-* while (class_nextMethodList (cls, &iterator)) {...}
+* This function is not fully thread-safe. A series of calls to 
+* class_nextMethodList() may fail if methods are added to or removed 
+* from the class between calls.
+* If methods are added between calls to class_nextMethodList(), it may 
+* return previously-returned method lists again, and may fail to return 
+* newly-added lists. 
+* If methods are removed between calls to class_nextMethodList(), it may 
+* omit surviving method lists or simply crash.
 **********************************************************************/
 OBJC_EXPORT struct objc_method_list * class_nextMethodList (Class      cls,
                                                             void **    it)
 {
-    return _class_inlinedNextMethodList(cls, it);
+    struct objc_method_list *result;
+    OBJC_LOCK(&methodListLock);
+    result = nextMethodList(cls, it);
+    OBJC_UNLOCK(&methodListLock);
+    return result;
 }
 
 /***********************************************************************
@@ -929,8 +1310,10 @@ void              _dummy             (void)
 void   class_addMethods       (Class                           cls,
                              struct objc_method_list * meths)
 {
-    // Insert atomically.
-    _objc_insertMethods (meths, &((struct objc_class *) cls)->methodLists);
+    // Add the methods.
+    OBJC_LOCK(&methodListLock);
+    _objc_insertMethods(cls, meths);
+    OBJC_UNLOCK(&methodListLock);
 
     // Must flush when dynamically adding methods.  No need to flush
     // all the class method caches.  If cls is a meta class, though,
@@ -955,8 +1338,10 @@ void      class_addClassMethods  (Class                           cls,
 void   class_removeMethods    (Class                           cls,
                              struct objc_method_list * meths)
 {
-    // Remove atomically.
-    _objc_removeMethods (meths, &((struct objc_class *) cls)->methodLists);
+    // Remove the methods
+    OBJC_LOCK(&methodListLock);
+    _objc_removeMethods(cls, meths);
+    OBJC_UNLOCK(&methodListLock);
 
     // Must flush when dynamically removing methods.  No need to flush
     // all the class method caches.  If cls is a meta class, though,
@@ -989,7 +1374,7 @@ static void        addClassToOriginalClass        (Class   posingClass,
         posed_class_to_original_class_hash =
         NXCreateMapTableFromZone (NXPtrValueMapPrototype,
                                   8,
-                                  _objc_create_zone ());
+                                  _objc_internal_zone ());
     }
 
     // Add pose to hash table
@@ -1045,7 +1430,7 @@ static void       _objc_addOrigClass         (Class       origClass)
     {
         posed_class_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype,
                                                      8,
-                                                     _objc_create_zone ());
+                                                     _objc_internal_zone ());
     }
 
     // Add the named class iff it is not already there (or collides?)
@@ -1088,7 +1473,7 @@ Class             class_poseAs           (Class           imposter,
 
     // Build a string to use to replace the name of the original class.
     #define imposterNamePrefix "_%"
-    imposterNamePtr = malloc_zone_malloc(_objc_create_zone(), strlen(((struct objc_class *)original)->name) + strlen(imposterNamePrefix) + 1);
+    imposterNamePtr = _malloc_internal(strlen(((struct objc_class *)original)->name) + strlen(imposterNamePrefix) + 1);
     strcpy(imposterNamePtr, imposterNamePrefix);
     strcat(imposterNamePtr, ((struct objc_class *)original)->name);
     #undef imposterNamePrefix
@@ -1104,6 +1489,13 @@ Class            class_poseAs           (Class           imposter,
     _objc_addOrigClass (original);
     _objc_addOrigClass (imposter);
 
+    // Copy the imposter, so that the imposter can continue
+    // its normal life in addition to changing the behavior of
+    // the original.  As a hack we don't bother to copy the metaclass.
+    // For some reason we modify the original rather than the copy.
+    copy = (*_zoneAlloc)(imposter->isa, sizeof(struct objc_class), _objc_internal_zone());
+    memmove(copy, imposter, sizeof(struct objc_class));
+
     OBJC_LOCK(&classLock);
 
     class_hash = objc_getClasses ();
@@ -1112,19 +1504,12 @@ Class           class_poseAs           (Class           imposter,
     NXHashRemove (class_hash, imposter);
     NXHashRemove (class_hash, original);
 
-    // Copy the imposter, so that the imposter can continue
-    // its normal life in addition to changing the behavior of
-    // the original.  As a hack we don't bother to copy the metaclass.
-    // For some reason we modify the original rather than the copy.
-    copy = (*_zoneAlloc)(imposter->isa, sizeof(struct objc_class), _objc_create_zone());
-    memmove(copy, imposter, sizeof(struct objc_class));
-
     NXHashInsert (class_hash, copy);
     addClassToOriginalClass (imposter, copy);
 
     // Mark the imposter as such
-    CLS_SETINFO(((struct objc_class *)imposter), CLS_POSING);
-    CLS_SETINFO(((struct objc_class *)imposter)->isa, CLS_POSING);
+    _class_setInfo(imposter, CLS_POSING);
+    _class_setInfo(imposter->isa, CLS_POSING);
 
     // Change the name of the imposter to that of the original class.
     ((struct objc_class *)imposter)->name              = ((struct objc_class *)original)->name;
@@ -1207,85 +1592,6 @@ static void      _nonexistentHandler    (id              self,
     __objc_error (self, _errNonExistentObject, SELNAME(sel), self);
 }
 
-/***********************************************************************
-* _class_install_relationships.  Fill in the class pointers of a class
-* that was loaded before some or all of the classes it needs to point to.
-* The deal here is that the class pointer fields have been usurped to
-* hold the string name of the pertinent class.  Our job is to look up
-* the real thing based on those stored names.
-**********************************************************************/
-void   _class_install_relationships           (Class   cls,
-                                          long version)
-{
-    struct objc_class *                meta;
-    struct objc_class *                clstmp;
-
-    // Get easy access to meta class structure
-    meta = ((struct objc_class *)cls)->isa;
-
-    // Set version in meta class strucure
-    meta->version = version;
-
-    // Install superclass based on stored name.  No name iff
-    // cls is a root class.
-    if (((struct objc_class *)cls)->super_class)
-    {
-        clstmp = objc_getClass ((const char *) ((struct objc_class *)cls)->super_class);
-        if (!clstmp)
-        {
-            _objc_inform("failed objc_getClass(%s) for %s->super_class", (const char *)((struct objc_class *)cls)->super_class, ((struct objc_class *)cls)->name);
-            goto Error;
-        }
-
-        ((struct objc_class *)cls)->super_class = clstmp;
-    }
-
-    // Install meta's isa based on stored name.  Meta class isa
-    // pointers always point to the meta class of the root class
-    // (root meta class, too, it points to itself!).
-    clstmp = objc_getClass ((const char *) meta->isa);
-    if (!clstmp)
-    {
-        _objc_inform("failed objc_getClass(%s) for %s->isa->isa", (const char *) meta->isa, ((struct objc_class *)cls)->name);
-        goto Error;
-    }
-
-    meta->isa = clstmp->isa;
-
-    // Install meta's superclass based on stored name.  No name iff
-    // cls is a root class.
-    if (meta->super_class)
-    {
-        // Locate instance class of super class
-        clstmp = objc_getClass ((const char *) meta->super_class);
-        if (!clstmp)
-        {
-            _objc_inform("failed objc_getClass(%s) for %s->isa->super_class", (const char *)meta->super_class, ((struct objc_class *)cls)->name);
-            goto Error;
-        }
-
-        // Store meta class of super class
-        meta->super_class = clstmp->isa;
-    }
-
-    // cls is root, so `tie' the (root) meta class down to its
-    // instance class.  This way, class methods can come from
-    // the root instance class.
-    else
-        ((struct objc_class *)meta)->super_class = cls;
-
-    // Use common static empty cache instead of NULL
-    if (((struct objc_class *)cls)->cache == NULL)
-        ((struct objc_class *)cls)->cache = (Cache) &emptyCache;
-    if (((struct objc_class *)meta)->cache == NULL)
-        ((struct objc_class *)meta)->cache = (Cache) &emptyCache;
-
-    return;
-
-Error:
-        _objc_fatal ("please link appropriate classes in your program");
-}
-
 /***********************************************************************
 * class_respondsToMethod.
 *
@@ -1309,7 +1615,9 @@ BOOL      class_respondsToMethod         (Class           cls,
     }
 
     // Handle cache miss
+    OBJC_LOCK(&methodListLock);
     meth = _getMethod(cls, sel);
+    OBJC_UNLOCK(&methodListLock);
     if (meth) {
         _cache_fill(cls, meth, sel);
         return YES;
@@ -1327,7 +1635,6 @@ BOOL      class_respondsToMethod         (Class           cls,
 *
 * Called from -[Object methodFor:] and +[Object instanceMethodFor:]
 **********************************************************************/
-// GrP is this used anymore?
 IMP            class_lookupMethod             (Class           cls,
                                 SEL            sel)
 {
@@ -1346,19 +1653,12 @@ IMP             class_lookupMethod             (Class           cls,
 }
 
 /***********************************************************************
-* class_lookupMethodInMethodList.
-*
-* Called from objc-load.m and _objc_callLoads ()
+* lookupNamedMethodInMethodList
+* Only called to find +load/-.cxx_construct/-.cxx_destruct methods, 
+* without fixing up the entire method list.
+* The class is not yet in use, so methodListLock is not taken.
 **********************************************************************/
-IMP    class_lookupMethodInMethodList (struct objc_method_list *       mlist,
-                                    SEL                                sel)
-{
-    Method m = _findMethodInList(mlist, sel);
-    return (m ? m->method_imp : NULL);
-}
-
-IMP    class_lookupNamedMethodInMethodList(struct objc_method_list *mlist,
-                                        const char *meth_name)
+__private_extern__ IMP lookupNamedMethodInMethodList(struct objc_method_list *mlist, const char *meth_name)
 {
     Method m = meth_name ? _findNamedMethodInList(mlist, meth_name) : NULL;
     return (m ? m->method_imp : NULL);
@@ -1369,6 +1669,7 @@ IMP       class_lookupNamedMethodInMethodList(struct objc_method_list *mlist,
 * _cache_malloc.
 *
 * Called from _cache_create() and cache_expand()
+* Cache locks: cacheUpdateLock must be held by the caller.
 **********************************************************************/
 static Cache _cache_malloc(int slotCount)
 {
@@ -1378,14 +1679,21 @@ static Cache _cache_malloc(int slotCount)
     // Allocate table (why not check for failure?)
     size = sizeof(struct objc_cache) + TABLE_SIZE(slotCount);
 #ifdef OBJC_INSTRUMENTED
+    // Custom cache allocator can't handle instrumentation.
     size += sizeof(CacheInstrumentation);
-#endif
-    new_cache = malloc_zone_calloc (_objc_create_zone(), size, 1);
-
-    // [c|v]allocated memory is zeroed, so all buckets are invalidated 
-    // and occupied == 0 and all instrumentation is zero.
-
+    new_cache = _calloc_internal(size, 1);
     new_cache->mask = slotCount - 1;
+#else
+    if (size < CACHE_QUANTUM  ||  UseInternalZone) {
+        new_cache = _calloc_internal(size, 1);
+        new_cache->mask = slotCount - 1;
+        // occupied and buckets and instrumentation are all zero
+    } else {
+        new_cache = cache_allocator_calloc(size);
+        // mask is already set
+        // occupied and buckets and instrumentation are all zero
+    }
+#endif
 
     return new_cache;
 }
@@ -1412,13 +1720,13 @@ Cache           _cache_create           (Class          cls)
 
     // Clear the cache flush flag so that we will not flush this cache
     // before expanding it for the first time.
-    ((struct objc_class * )cls)->info &= ~(CLS_FLUSH_CACHE);
+    _class_clearInfo(cls, CLS_FLUSH_CACHE);
 
     // Clear the grow flag so that we will re-use the current storage,
     // rather than actually grow the cache, when expanding the cache
     // for the first time
     if (_class_slow_grow)
-        ((struct objc_class * )cls)->info &= ~(CLS_GROW_CACHE);
+        _class_clearInfo(cls, CLS_GROW_CACHE);
 
     // Return our creation
     return new_cache;
@@ -1450,7 +1758,7 @@ static    Cache           _cache_expand          (Class           cls)
         // is non-zero, let the cache grow this time, but clear the
         // flag so the cache is reused next time
         if ((((struct objc_class * )cls)->info & CLS_GROW_CACHE) != 0)
-            ((struct objc_class * )cls)->info &= ~CLS_GROW_CACHE;
+            _class_clearInfo(cls, CLS_GROW_CACHE);
 
         // Reuse the current cache storage this time
         else
@@ -1474,12 +1782,12 @@ static  Cache           _cache_expand          (Class           cls)
                 // Deallocate "forward::" entry
                 if (CACHE_BUCKET_IMP(oldEntry) == &_objc_msgForward)
                 {
-                    _cache_collect_free (oldEntry, NO);
+                    _cache_collect_free (oldEntry, sizeof(struct objc_method), NO);
                 }
             }
 
             // Set the slow growth flag so the cache is next grown
-            ((struct objc_class * )cls)->info |= CLS_GROW_CACHE;
+            _class_setInfo(cls, CLS_GROW_CACHE);
 
             // Return the same old cache, freshly emptied
             return old_cache;
@@ -1544,7 +1852,7 @@ static    Cache           _cache_expand          (Class           cls)
 
         // Set the cache flush flag so that we will flush this cache
         // before expanding it again.
-        ((struct objc_class * )cls)->info |= CLS_FLUSH_CACHE;
+        _class_setInfo(cls, CLS_FLUSH_CACHE);
     }
 
     // Deallocate "forward::" entries from the old cache
@@ -1555,7 +1863,7 @@ static    Cache           _cache_expand          (Class           cls)
             if (CACHE_BUCKET_VALID(old_cache->buckets[index]) &&
                 CACHE_BUCKET_IMP(old_cache->buckets[index]) == &_objc_msgForward)
             {
-                _cache_collect_free (old_cache->buckets[index], NO);
+                _cache_collect_free (old_cache->buckets[index], sizeof(struct objc_method), NO);
             }
         }
     }
@@ -1564,7 +1872,7 @@ static    Cache           _cache_expand          (Class           cls)
     ((struct objc_class *)cls)->cache = new_cache;
 
     // Deallocate old cache, try freeing all the garbage
-    _cache_collect_free (old_cache, YES);
+    _cache_collect_free (old_cache, old_cache->mask * sizeof(Method), YES);
     return new_cache;
 }
 
@@ -1582,7 +1890,13 @@ static int       LogObjCMessageSend (BOOL                        isClassMethod,
     if (objcMsgLogFD == (-1))
     {
         snprintf (buf, sizeof(buf), "/tmp/msgSends-%d", (int) getpid ());
-        objcMsgLogFD = open (buf, O_WRONLY | O_CREAT, 0666);
+        objcMsgLogFD = secure_open (buf, O_WRONLY | O_CREAT, geteuid());
+        if (objcMsgLogFD < 0) {
+            // no log file - disable logging
+            objcMsgLogEnabled = 0;
+            objcMsgLogFD = -1;
+            return 1;
+        }
     }
 
     // Make the log entry
@@ -1771,13 +2085,13 @@ static void _cache_addForwardEntry(Class cls, SEL sel)
 {
     Method smt;
   
-    smt = malloc_zone_malloc(_objc_create_zone(), sizeof(struct objc_method));
+    smt = _malloc_internal(sizeof(struct objc_method));
     smt->method_name = sel;
     smt->method_types = "";
     smt->method_imp = &_objc_msgForward;
     if (! _cache_fill(cls, smt, sel)) {
         // Entry not added to cache. Don't leak the method struct.
-        malloc_zone_free(_objc_create_zone(), smt);
+        _free_internal(smt);
     }
 }
 
@@ -1824,7 +2138,7 @@ static void       _cache_flush            (Class          cls)
 
         // Deallocate "forward::" entry
         if (oldEntry && oldEntry->method_imp == &_objc_msgForward)
-            _cache_collect_free (oldEntry, NO);
+            _cache_collect_free (oldEntry, sizeof(struct objc_method), NO);
     }
 
     // Clear the valid-entry counter
@@ -1832,7 +2146,7 @@ static void       _cache_flush            (Class          cls)
 
     // Clear the cache flush flag so that we will not flush this cache
     // before expanding it again.
-    ((struct objc_class * )cls)->info &= ~CLS_FLUSH_CACHE;
+    _class_clearInfo(cls, CLS_FLUSH_CACHE);
 }
 
 /***********************************************************************
@@ -1889,7 +2203,7 @@ static _objc_initializing_classes *_fetchInitializingClassList(BOOL create)
         if (!create) {
             return NULL;
         } else {
-            data = calloc(1, sizeof(_objc_pthread_data));
+            data = _calloc_internal(1, sizeof(_objc_pthread_data));
             pthread_setspecific(_objc_pthread_key, data);
         }
     }
@@ -1899,7 +2213,7 @@ static _objc_initializing_classes *_fetchInitializingClassList(BOOL create)
         if (!create) {
             return NULL;
         } else {
-            list = calloc(1, sizeof(_objc_initializing_classes));
+            list = _calloc_internal(1, sizeof(_objc_initializing_classes));
             data->initializingClasses = list;
         }
     }
@@ -1910,7 +2224,7 @@ static _objc_initializing_classes *_fetchInitializingClassList(BOOL create)
         // even if create == NO.
         // Allow 4 simultaneous class inits on this thread before realloc.
         list->classesAllocated = 4;
-        classes = calloc(list->classesAllocated, sizeof(struct objc_class *));
+        classes = _calloc_internal(list->classesAllocated, sizeof(struct objc_class *));
         list->metaclasses = classes;
     }
     return list;
@@ -1927,9 +2241,9 @@ void _destroyInitializingClassList(_objc_initializing_classes *list)
 {
     if (list != NULL) {
         if (list->metaclasses != NULL) {
-            free(list->metaclasses);
+            _free_internal(list->metaclasses);
         }
-        free(list);
+        _free_internal(list);
     }
 }
 
@@ -1984,7 +2298,7 @@ static void _setThisThreadIsInitializingClass(struct objc_class *cls)
 
     // class list is full - reallocate
     list->classesAllocated = list->classesAllocated * 2 + 1;
-    list->metaclasses = realloc(list->metaclasses, list->classesAllocated * sizeof(struct objc_class *));
+    list->metaclasses = _realloc_internal(list->metaclasses, list->classesAllocated * sizeof(struct objc_class *));
     // zero out the new entries
     list->metaclasses[i++] = cls;
     for ( ; i < list->classesAllocated; i++) {
@@ -2025,11 +2339,12 @@ static void _setThisThreadIsNotInitializingClass(struct objc_class *cls)
 **********************************************************************/
 static void class_initialize(struct objc_class *cls)
 {
-    long *infoP = &GETMETA(cls)->info;
+    struct objc_class *infoCls = GETMETA(cls);
     BOOL reallyInitialize = NO;
 
     // Get the real class from the metaclass. The superclass chain 
     // hangs off the real class only.
+    // fixme ick
     if (ISMETA(cls)) {
         if (strncmp(cls->name, "_%", 2) == 0) {
             // Posee's meta's name is smashed and isn't in the class_hash, 
@@ -2050,7 +2365,7 @@ static void class_initialize(struct objc_class *cls)
     // Try to atomically set CLS_INITIALIZING.
     pthread_mutex_lock(&classInitLock);
     if (!ISINITIALIZED(cls) && !ISINITIALIZING(cls)) {
-        *infoP |= CLS_INITIALIZING;
+        _class_setInfo(infoCls, CLS_INITIALIZING);
         reallyInitialize = YES;
     }
     pthread_mutex_unlock(&classInitLock);
@@ -2061,12 +2376,6 @@ static void class_initialize(struct objc_class *cls)
         // Record that we're initializing this class so we can message it.
         _setThisThreadIsInitializingClass(cls);
         
-        // bind the module in - if it came from a bundle or dynamic library
-        _objc_bindClassIfNeeded(cls);
-        
-        // chain on the categories and bind them if necessary
-        _objc_resolve_categories_for_class(cls);
-        
         // Send the +initialize message.
         // Note that +initialize is sent to the superclass (again) if 
         // this class doesn't implement +initialize. 2157218
@@ -2074,7 +2383,7 @@ static void class_initialize(struct objc_class *cls)
         
         // Done initializing. Update the info bits and notify waiting threads.
         pthread_mutex_lock(&classInitLock);
-        *infoP = (*infoP | CLS_INITIALIZED) & ~CLS_INITIALIZING;
+        _class_changeInfo(infoCls, CLS_INITIALIZED, CLS_INITIALIZING);
         pthread_cond_broadcast(&classInitWaitCond);
         pthread_mutex_unlock(&classInitLock);
         _setThisThreadIsNotInitializingClass(cls);
@@ -2189,7 +2498,9 @@ IMP       _class_lookupMethodAndLoadCache    (Class       cls,
 
         // Cache scan failed. Search method list.
 
+        OBJC_LOCK(&methodListLock);
         meth = _findMethodInClass(curClass, sel);
+        OBJC_UNLOCK(&methodListLock);
         if (meth) {
             // If logging is enabled, log the message send and let
             // the logger decide whether to encache the method.
@@ -2231,6 +2542,74 @@ IMP      _class_lookupMethodAndLoadCache    (Class       cls,
 }
 
 
+/***********************************************************************
+* lookupMethodInClassAndLoadCache.
+* Like _class_lookupMethodAndLoadCache, but does not search superclasses.
+* Caches and returns objc_msgForward if the method is not found in the class.
+**********************************************************************/
+static IMP lookupMethodInClassAndLoadCache(Class cls, SEL sel)
+{
+    Method meth;
+    IMP imp;
+
+    // Search cache first.
+    imp = _cache_getImp(cls, sel);
+    if (imp) return imp;
+
+    // Cache miss. Search method list.
+
+    OBJC_LOCK(&methodListLock);
+    meth = _findMethodInClass(cls, sel);
+    OBJC_UNLOCK(&methodListLock);
+
+    if (meth) {
+        // Hit in method list. Cache it.
+        _cache_fill(cls, meth, sel);
+        return meth->method_imp;
+    } else {
+        // Miss in method list. Cache objc_msgForward.
+        _cache_addForwardEntry(cls, sel);
+        return &_objc_msgForward;
+    }
+}
+
+
+
+/***********************************************************************
+* _class_changeInfo
+* Atomically sets and clears some bits in cls's info field.
+* set and clear must not overlap.
+**********************************************************************/
+static pthread_mutex_t infoLock = PTHREAD_MUTEX_INITIALIZER;
+__private_extern__ void _class_changeInfo(struct objc_class *cls, 
+                                          long set, long clear)
+{
+    pthread_mutex_lock(&infoLock);
+    cls->info = (cls->info | set) & ~clear;
+    pthread_mutex_unlock(&infoLock);
+}
+
+
+/***********************************************************************
+* _class_setInfo
+* Atomically sets some bits in cls's info field.
+**********************************************************************/
+__private_extern__ void _class_setInfo(struct objc_class *cls, long set)
+{
+    _class_changeInfo(cls, set, 0);
+}
+
+
+/***********************************************************************
+* _class_clearInfo
+* Atomically clears some bits in cls's info field.
+**********************************************************************/
+__private_extern__ void _class_clearInfo(struct objc_class *cls, long clear)
+{
+    _class_changeInfo(cls, 0, clear);
+}
+
+
 /***********************************************************************
 * SubtypeUntil.
 *
@@ -2557,22 +2936,69 @@ unsigned        method_getArgumentInfo         (Method          method,
 
 void *         _objc_create_zone                  (void)
 {
-    static void *_objc_z = (void *)0xffffffff;
-    if ( _objc_z == (void *)0xffffffff ) {
-        char *s = getenv("OBJC_USE_OBJC_ZONE");
-        if ( s ) {
-            if ( (*s == '1') || (*s == 'y') || (*s == 'Y') ) {
-                _objc_z = malloc_create_zone(vm_page_size, 0);
-                malloc_set_zone_name(_objc_z, "ObjC");
-            }
-        }
-        if ( _objc_z == (void *)0xffffffff ) {
-            _objc_z = malloc_default_zone();
+    return malloc_default_zone();
+}
+
+
+/***********************************************************************
+* _objc_internal_zone.
+* Malloc zone for internal runtime data.
+* By default this is the default malloc zone, but a dedicated zone is 
+* used if environment variable OBJC_USE_INTERNAL_ZONE is set.
+**********************************************************************/
+__private_extern__ malloc_zone_t *_objc_internal_zone(void)
+{
+    static malloc_zone_t *z = (malloc_zone_t *)-1;
+    if (z == (malloc_zone_t *)-1) {
+        if (UseInternalZone) {
+            z = malloc_create_zone(vm_page_size, 0);
+            malloc_set_zone_name(z, "ObjC");
+        } else {
+            z = malloc_default_zone();
         }
     }
-    return _objc_z;
+    return z;
 }
 
+
+/***********************************************************************
+* _malloc_internal
+* _calloc_internal
+* _realloc_internal
+* _strdup_internal
+* _free_internal
+* Convenience functions for the internal malloc zone.
+**********************************************************************/
+__private_extern__ void *_malloc_internal(size_t size) 
+{
+    return malloc_zone_malloc(_objc_internal_zone(), size);
+}
+
+__private_extern__ void *_calloc_internal(size_t count, size_t size) 
+{
+    return malloc_zone_calloc(_objc_internal_zone(), count, size);
+}
+
+__private_extern__ void *_realloc_internal(void *ptr, size_t size)
+{
+    return malloc_zone_realloc(_objc_internal_zone(), ptr, size);
+}
+
+__private_extern__ char *_strdup_internal(const char *str)
+{
+    size_t len = strlen(str);
+    char *dup = malloc_zone_malloc(_objc_internal_zone(), len + 1);
+    memcpy(dup, str, len + 1);
+    return dup;
+}
+
+__private_extern__ void _free_internal(void *ptr)
+{
+    malloc_zone_free(_objc_internal_zone(), ptr);
+}
+
+
+
 /***********************************************************************
 * cache collection.
 **********************************************************************/
@@ -2726,17 +3152,14 @@ static void     _garbage_make_room              (void)
     if (first)
     {
         first          = 0;
-        garbage_refs   = malloc_zone_malloc (_objc_create_zone(),
-                                           INIT_GARBAGE_COUNT * sizeof(void *));
+        garbage_refs   = _malloc_internal(INIT_GARBAGE_COUNT * sizeof(void *));
         garbage_max    = INIT_GARBAGE_COUNT;
     }
 
     // Double the table if it is full
     else if (garbage_count == garbage_max)
     {
-        tempGarbage    = malloc_zone_realloc ((void *) _objc_create_zone(),
-                                           (void *) garbage_refs,
-                                           (size_t) garbage_max * 2 * sizeof(void *));
+        tempGarbage    = _realloc_internal(garbage_refs, garbage_max * 2 * sizeof(void *));
         garbage_refs   = (void **) tempGarbage;
         garbage_max    *= 2;
     }
@@ -2745,10 +3168,11 @@ static void     _garbage_make_room              (void)
 /***********************************************************************
 * _cache_collect_free.  Add the specified malloc'd memory to the list
 * of them to free at some later point.
+* size is used for the collection threshold. It does not have to be 
+* precisely the block's size.
 * Cache locks: cacheUpdateLock must be held by the caller.
 **********************************************************************/
-static void    _cache_collect_free    (void *          data,
-                                    BOOL               tryCollect)
+static void _cache_collect_free(void *data, size_t size, BOOL tryCollect)
 {
     static char *report_garbage = (char *)0xffffffff;
 
@@ -2760,7 +3184,7 @@ static void       _cache_collect_free    (void *          data,
     // Insert new element in garbage list
     // Note that we do this even if we end up free'ing everything
     _garbage_make_room ();
-    garbage_byte_size += malloc_size (data);
+    garbage_byte_size += size;
     garbage_refs[garbage_count++] = data;
 
     // Log our progress
@@ -2787,10 +3211,16 @@ static void     _cache_collect_free    (void *          data,
             _objc_inform ("collecting!\n");
         
         // Dispose all refs now in the garbage
-        while (garbage_count)
-            free (garbage_refs[--garbage_count]);
-        
-        // Clear the total size indicator
+        while (garbage_count--) {
+            if (cache_allocator_is_block(garbage_refs[garbage_count])) {
+                cache_allocator_free(garbage_refs[garbage_count]);
+            } else {
+                free(garbage_refs[garbage_count]);
+            }
+        }
+
+        // Clear the garbage count and total size indicator
+        garbage_count = 0;
         garbage_byte_size = 0;
     }
     else {     
@@ -2803,6 +3233,279 @@ static void     _cache_collect_free    (void *          data,
 }
 
 
+
+/***********************************************************************
+* Custom method cache allocator.
+* Method cache block sizes are 2^slots+2 words, which is a pessimal 
+* case for the system allocator. It wastes 504 bytes per cache block 
+* with 128 or more slots, which adds up to tens of KB for an AppKit process.
+* To save memory, the custom cache allocator below is used.
+* 
+* The cache allocator uses 128 KB allocation regions. Few processes will 
+* require a second region. Within a region, allocation is address-ordered 
+* first fit.
+* 
+* The cache allocator uses a quantum of 520.
+* Cache block ideal sizes: 520, 1032, 2056, 4104
+* Cache allocator sizes:   520, 1040, 2080, 4160
+*
+* Because all blocks are known to be genuine method caches, the ordinary 
+* cache->mask and cache->occupied fields are used as block headers. 
+* No out-of-band headers are maintained. The number of blocks will 
+* almost always be fewer than 200, so for simplicity there is no free 
+* list or other optimization.
+* 
+* Block in use: mask != 0, occupied != -1 (mask indicates block size)
+* Block free:   mask != 0, occupied == -1 (mask is precisely block size)
+* 
+* No cache allocator functions take any locks. Instead, the caller 
+* must hold the cacheUpdateLock.
+**********************************************************************/
+
+typedef struct cache_allocator_block {
+    unsigned int size;
+    unsigned int state;
+    struct cache_allocator_block *nextFree;
+} cache_allocator_block;
+
+typedef struct cache_allocator_region {
+    cache_allocator_block *start;
+    cache_allocator_block *end;    // first non-block address
+    cache_allocator_block *freeList;
+    struct cache_allocator_region *next;
+} cache_allocator_region;
+
+static cache_allocator_region *cacheRegion = NULL;
+
+
+static unsigned int cache_allocator_mask_for_size(size_t size)
+{
+    return (size - sizeof(struct objc_cache)) / sizeof(Method);
+}
+
+static size_t cache_allocator_size_for_mask(unsigned int mask)
+{
+    size_t requested = sizeof(struct objc_cache) + TABLE_SIZE(mask+1);
+    size_t actual = CACHE_QUANTUM;
+    while (actual < requested) actual += CACHE_QUANTUM;
+    return actual;
+}
+
+/***********************************************************************
+* cache_allocator_add_region
+* Allocates and returns a new region that can hold at least size 
+*   bytes of large method caches. 
+* The actual size will be rounded up to a CACHE_QUANTUM boundary, 
+*   with a minimum of CACHE_REGION_SIZE. 
+* The new region is lowest-priority for new allocations. Callers that 
+*   know the other regions are already full should allocate directly 
+*   into the returned region.
+**********************************************************************/
+static cache_allocator_region *cache_allocator_add_region(size_t size)
+{
+    vm_address_t addr;
+    cache_allocator_block *b;
+    cache_allocator_region **rgnP;
+    cache_allocator_region *newRegion = 
+        _calloc_internal(1, sizeof(cache_allocator_region));
+
+    // Round size up to quantum boundary, and apply the minimum size.
+    size += CACHE_QUANTUM - (size % CACHE_QUANTUM);
+    if (size < CACHE_REGION_SIZE) size = CACHE_REGION_SIZE;
+
+    // Allocate the region
+    addr = 0;
+    vm_allocate(mach_task_self(), &addr, size, 1);
+    newRegion->start = (cache_allocator_block *)addr;
+    newRegion->end = (cache_allocator_block *)(addr + size);
+
+    // Mark the first block: free and covers the entire region
+    b = newRegion->start;
+    b->size = size;
+    b->state = (unsigned int)-1;
+    b->nextFree = NULL;
+    newRegion->freeList = b;
+
+    // Add to end of the linked list of regions.
+    // Other regions should be re-used before this one is touched.
+    newRegion->next = NULL;
+    rgnP = &cacheRegion;
+    while (*rgnP) {
+        rgnP = &(**rgnP).next;
+    }
+    *rgnP = newRegion;
+
+    return newRegion;
+}
+
+
+/***********************************************************************
+* cache_allocator_coalesce
+* Attempts to coalesce a free block with the single free block following 
+* it in the free list, if any.
+**********************************************************************/
+static void cache_allocator_coalesce(cache_allocator_block *block)
+{
+    if (block->size + (uintptr_t)block == (uintptr_t)block->nextFree) {
+        block->size += block->nextFree->size;
+        block->nextFree = block->nextFree->nextFree;
+    }
+}
+
+
+/***********************************************************************
+* cache_region_calloc
+* Attempt to allocate a size-byte block in the given region. 
+* Allocation is first-fit. The free list is already fully coalesced.
+* Returns NULL if there is not enough room in the region for the block.
+**********************************************************************/
+static void *cache_region_calloc(cache_allocator_region *rgn, size_t size)
+{
+    cache_allocator_block **blockP;
+    unsigned int mask;
+
+    // Save mask for allocated block, then round size 
+    // up to CACHE_QUANTUM boundary
+    mask = cache_allocator_mask_for_size(size);
+    size = cache_allocator_size_for_mask(mask);
+
+    // Search the free list for a sufficiently large free block.
+
+    for (blockP = &rgn->freeList; 
+         *blockP != NULL; 
+         blockP = &(**blockP).nextFree) 
+    {
+        cache_allocator_block *block = *blockP;
+        if (block->size < size) continue;  // not big enough
+
+        // block is now big enough. Allocate from it.
+
+        // Slice off unneeded fragment of block, if any, 
+        // and reconnect the free list around block.
+        if (block->size - size >= CACHE_QUANTUM) {
+            cache_allocator_block *leftover = 
+                (cache_allocator_block *)(size + (uintptr_t)block);
+            leftover->size = block->size - size;
+            leftover->state = (unsigned int)-1;
+            leftover->nextFree = block->nextFree;
+            *blockP = leftover;
+        } else {
+            *blockP = block->nextFree;
+        }
+            
+        // block is now exactly the right size.
+
+        bzero(block, size);
+        block->size = mask;  // Cache->mask
+        block->state = 0;    // Cache->occupied
+
+        return block;
+    }
+
+    // No room in this region.
+    return NULL;
+}
+
+
+/***********************************************************************
+* cache_allocator_calloc
+* Custom allocator for large method caches (128+ slots)
+* The returned cache block already has cache->mask set. 
+* cache->occupied and the cache contents are zero.
+* Cache locks: cacheUpdateLock must be held by the caller
+**********************************************************************/
+static void *cache_allocator_calloc(size_t size)
+{
+    cache_allocator_region *rgn;
+
+    for (rgn = cacheRegion; rgn != NULL; rgn = rgn->next) {
+        void *p = cache_region_calloc(rgn, size);
+        if (p) {
+            return p;
+        }
+    }
+
+    // No regions or all regions full - make a region and try one more time
+    // In the unlikely case of a cache over 256KB, it will get its own region.
+    return cache_region_calloc(cache_allocator_add_region(size), size);
+}
+
+
+/***********************************************************************
+* cache_allocator_region_for_block
+* Returns the cache allocator region that ptr points into, or NULL.
+**********************************************************************/
+static cache_allocator_region *cache_allocator_region_for_block(cache_allocator_block *block) 
+{
+    cache_allocator_region *rgn;
+    for (rgn = cacheRegion; rgn != NULL; rgn = rgn->next) {
+        if (block >= rgn->start  &&  block < rgn->end) return rgn;
+    }
+    return NULL;
+}
+
+
+/***********************************************************************
+* cache_allocator_is_block
+* If ptr is a live block from the cache allocator, return YES
+* If ptr is a block from some other allocator, return NO.
+* If ptr is a dead block from the cache allocator, result is undefined.
+* Cache locks: cacheUpdateLock must be held by the caller
+**********************************************************************/
+static BOOL cache_allocator_is_block(void *ptr)
+{
+    return (cache_allocator_region_for_block((cache_allocator_block *)ptr) != NULL);
+}
+
+/***********************************************************************
+* cache_allocator_free
+* Frees a block allocated by the cache allocator.
+* Cache locks: cacheUpdateLock must be held by the caller.
+**********************************************************************/
+static void cache_allocator_free(void *ptr)
+{
+    cache_allocator_block *dead = (cache_allocator_block *)ptr;
+    cache_allocator_block *cur;
+    cache_allocator_region *rgn;
+
+    if (! (rgn = cache_allocator_region_for_block(ptr))) {
+        // free of non-pointer
+        _objc_inform("cache_allocator_free of non-pointer %p", ptr);
+        return;
+    }    
+
+    dead->size = cache_allocator_size_for_mask(dead->size);
+    dead->state = (unsigned int)-1;
+
+    if (!rgn->freeList  ||  rgn->freeList > dead) {
+        // dead block belongs at front of free list
+        dead->nextFree = rgn->freeList;
+        rgn->freeList = dead;
+        cache_allocator_coalesce(dead);
+        return;
+    }
+
+    // dead block belongs in the middle or end of free list
+    for (cur = rgn->freeList; cur != NULL; cur = cur->nextFree) {
+        cache_allocator_block *ahead = cur->nextFree;
+        
+        if (!ahead  ||  ahead > dead) {
+            // cur and ahead straddle dead, OR dead belongs at end of free list
+            cur->nextFree = dead;
+            dead->nextFree = ahead;
+            
+            // coalesce into dead first in case both succeed
+            cache_allocator_coalesce(dead);
+            cache_allocator_coalesce(cur);
+            return;
+        }
+    }
+
+    // uh-oh
+    _objc_inform("cache_allocator_free of non-pointer %p", ptr);
+}
+
+
 /***********************************************************************
 * _cache_print.
 **********************************************************************/
index 7356d2ce54c4986ca1829639396027d657194cb8..03296f1473afbec19001283a51fe029b16a2a982 100644 (file)
@@ -41,9 +41,6 @@ static objc_exception_functions_t xtab;
 static void set_default_handlers();
 
 
-extern void objc_raise_error(const char *);
-
-
 /*
  * Exported functions
  */
index 970491018ea76425bc9d83733fe9ba2e66e73201..df0cde439ade0b230a589af5c9294fefc9b2c50b 100644 (file)
 #import "objc-private.h"
 #import <mach-o/ldsyms.h>
 #import <mach-o/dyld.h>
+#import <mach-o/getsect.h>
 #include <string.h>
 #include <stdlib.h>
 
 #import <crt_externs.h>
 
-/* prototype coming soon to <mach-o/getsect.h> */
-extern char *getsectdatafromheader(
-    struct mach_header *mhp,
-    char *segname,
-    char *sectname,
-    int *size);
 
 /* Returns an array of all the objc headers in the executable
  * Caller is responsible for freeing.
@@ -51,9 +46,9 @@ headerType **_getObjcHeaders()
   return (headerType**)headers;
 }
 
-Module _getObjcModules(headerType *head, int *nmodules)
+Module _getObjcModules(const headerType *head, int *nmodules)
 {
-  unsigned size;
+  uint32_t size;
   void *mods = getsectdatafromheader((headerType *)head,
                                      SEG_OBJC,
                                     SECT_OBJC_MODULES,
@@ -64,7 +59,7 @@ Module _getObjcModules(headerType *head, int *nmodules)
 
 SEL *_getObjcMessageRefs(headerType *head, int *nmess)
 {
-  unsigned size;
+  uint32_t size;
   void *refs = getsectdatafromheader ((headerType *)head,
                                  SEG_OBJC, "__message_refs", &size);
   *nmess = size / sizeof(SEL);
@@ -73,7 +68,7 @@ SEL *_getObjcMessageRefs(headerType *head, int *nmess)
 
 ProtocolTemplate *_getObjcProtocols(headerType *head, int *nprotos)
 {
-  unsigned size;
+  uint32_t size;
   void *protos = getsectdatafromheader ((headerType *)head,
                                 SEG_OBJC, "__protocol", &size);
   *nprotos = size / sizeof(ProtocolTemplate);
@@ -88,38 +83,36 @@ NXConstantStringTemplate *_getObjcStringObjects(headerType *head, int *nstrs)
 
 Class *_getObjcClassRefs(headerType *head, int *nclasses)
 {
-  unsigned size;
+  uint32_t size;
   void *classes = getsectdatafromheader ((headerType *)head,
                                 SEG_OBJC, "__cls_refs", &size);
   *nclasses = size / sizeof(Class);
   return (Class *)classes;
 }
 
-objc_image_info *_getObjcImageInfo(headerType *head)
+objc_image_info *_getObjcImageInfo(const headerType *head, uint32_t *sizep)
 {
-  unsigned size;
-  void *info = getsectdatafromheader ((headerType *)head,
-                                      SEG_OBJC, "__image_info", &size);
-  return (objc_image_info *)info;
+  objc_image_info *info = (objc_image_info *)
+      getsectdatafromheader(head, SEG_OBJC, "__image_info", sizep);
+  return info;
 }
 
-/* returns start of all objective-c info and the size of the data */
-void *_getObjcHeaderData(const headerType *head, unsigned *size)
+const struct segment_command *getsegbynamefromheader(const headerType *head, 
+                                                     const char *segname)
 {
-  struct segment_command *sgp;
-  unsigned long i;
-  
-  sgp = (struct segment_command *) ((char *)head + sizeof(headerType));
-  for(i = 0; i < ((headerType *)head)->ncmds; i++){
-      if(sgp->cmd == LC_SEGMENT)
-         if(strncmp(sgp->segname, "__OBJC", sizeof(sgp->segname)) == 0) {
-           *size = sgp->filesize;
-           return (void*)sgp;
-           }
-      sgp = (struct segment_command *)((char *)sgp + sgp->cmdsize);
-  }
-  *size = 0;
-  return nil;
+    const struct segment_command *sgp;
+    unsigned long i;
+    
+    sgp = (const struct segment_command *) ((char *)head + sizeof(headerType));
+    for (i = 0; i < head->ncmds; i++){
+        if (sgp->cmd == LC_SEGMENT) {
+            if (strncmp(sgp->segname, segname, sizeof(sgp->segname)) == 0) {
+                return sgp;
+            }
+        }
+        sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize);
+    }
+    return NULL;
 }
 
 static const headerType *_getExecHeader (void)
@@ -127,13 +120,10 @@ static const headerType *_getExecHeader (void)
        return (const struct mach_header *)_NSGetMachExecuteHeader();
 }
 
-const char *_getObjcHeaderName(headerType *header)
+const char *_getObjcHeaderName(const headerType *header)
 {
     const headerType *execHeader;
     const struct fvmlib_command *libCmd, *endOfCmds;
-    char **argv;
-    extern char ***_NSGetArgv();
-    argv = *_NSGetArgv();
        
     if (header && ((headerType *)header)->filetype == MH_FVMLIB) {
            execHeader = _getExecHeader();
@@ -153,7 +143,32 @@ const char *_getObjcHeaderName(headerType *header)
          if ( _dyld_get_image_header(i) == header )
             return _dyld_get_image_name(i);
       }
-      return argv[0];
+
+      return (*_NSGetArgv())[0];
    }
 }
 
+
+// 1. Find segment with file offset == 0 and file size != 0. This segment's 
+//    contents span the Mach-O header. (File size of 0 is .bss, for example)
+// 2. Slide is header's address - segment's preferred address
+ptrdiff_t _getImageSlide(const headerType *header)
+{
+    int i;
+    const struct segment_command *sgp = 
+        (const struct segment_command *)(header + 1);
+
+    for (i = 0; i < header->ncmds; i++){
+        if (sgp->cmd == LC_SEGMENT) {
+            if (sgp->fileoff == 0  &&  sgp->filesize != 0) {
+                return (uintptr_t)header - (uintptr_t)sgp->vmaddr;
+            }
+        }
+        sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize);
+    }
+
+    // uh-oh
+    _objc_fatal("could not calculate VM slide for image '%s'", 
+                _getObjcHeaderName(header));
+    return 0;  // not reached
+}
index 75824a5d22728f6b3503260d2c1c98a3b0fcee39..28de95802bc3753694d0910acf69ba6aa7ba0aa2 100644 (file)
@@ -49,15 +49,6 @@ extern char *        getsectdatafromheader   (const headerType * mhp, const char * segnam
 OBJC_EXPORT void (*callbackFunction)( Class, const char * );
 
 
-struct objc_method_list **get_base_method_list(Class cls) {
-    struct objc_method_list **ptr = ((struct objc_class * )cls)->methodLists;
-    if (!*ptr) return NULL;
-    while ( *ptr != 0 && *ptr != END_OF_METHODS_LIST ) { ptr++; }
-    --ptr;
-    return ptr;
-}
-
-
 /**********************************************************************************
 * objc_loadModule.
 *
index 6c09b7d8081eb2a217c023f377806d820a725cde..0aca0b45ca47b6fe35a8a027445e6c87591c1b7b 100644 (file)
@@ -37,6 +37,9 @@
     #import "objc-config.h"
 
     #import <pthread.h>
+    #import <errno.h>
+    #import <limits.h>
+    #import <unistd.h>
     #define    mutex_alloc()   (pthread_mutex_t*)calloc(1, sizeof(pthread_mutex_t))
     #define    mutex_init(m)   pthread_mutex_init(m, NULL)
     #define    mutex_lock(m)   pthread_mutex_lock(m)
@@ -88,6 +91,9 @@ typedef struct {
 
 // masks for objc_image_info.flags
 #define OBJC_IMAGE_IS_REPLACEMENT (1<<0)
+#define OBJC_IMAGE_SUPPORTS_GC (1<<1)
+
+
 #define _objcHeaderIsReplacement(h)  ((h)->info  &&  ((h)->info->flags & OBJC_IMAGE_IS_REPLACEMENT))
 
 /* OBJC_IMAGE_IS_REPLACEMENT:
@@ -96,25 +102,32 @@ typedef struct {
    Do fix up selector refs (@selector points to them)
    Do fix up class refs (@class and objc_msgSend points to them)
    Do fix up protocols (@protocol points to them)
+   Do fix up super_class pointers in classes ([super ...] points to them)
    Future: do load new classes?
    Future: do load new categories?
    Future: do insert new methods on existing classes?
    Future: do insert new methods on existing categories?
 */
 
+#define _objcHeaderSupportsGC(h) ((h)->info  &&  ((h)->info->flags & OBJC_IMAGE_SUPPORTS_GC))
+
+/* OBJC_IMAGE_SUPPORTS_GC:
+    was compiled with -fobjc-gc flag, regardless of whether write-barriers were issued
+    if executable image compiled this way, then all subsequent libraries etc. must also be this way
+*/
 
 // both
 OBJC_EXPORT headerType **      _getObjcHeaders();
-OBJC_EXPORT Module             _getObjcModules(headerType *head, int *nmodules);
+OBJC_EXPORT Module             _getObjcModules(const headerType *head, int *nmodules);
 OBJC_EXPORT Class *            _getObjcClassRefs(headerType *head, int *nclasses);
-OBJC_EXPORT void *             _getObjcHeaderData(const headerType *head, unsigned *size);
-OBJC_EXPORT const char *       _getObjcHeaderName(headerType *head);
-OBJC_EXPORT objc_image_info *  _getObjcImageInfo(headerType *head);
+OBJC_EXPORT const struct segment_command *getsegbynamefromheader(const headerType *head, const char *segname);
+OBJC_EXPORT const char *       _getObjcHeaderName(const headerType *head);
+OBJC_EXPORT objc_image_info *  _getObjcImageInfo(const headerType *head, uint32_t *size);
+OBJC_EXPORT ptrdiff_t          _getImageSlide(const headerType *header);
+
 
 // internal routines for delaying binding
 void _objc_resolve_categories_for_class        (struct objc_class * cls);
-void _objc_bindClassIfNeeded(struct objc_class *cls);
-void _objc_bindModuleContainingClass(struct objc_class * cls);
 
 // someday a logging facility
 // ObjC is assigned the range 0xb000 - 0xbfff for first parameter
@@ -131,12 +144,11 @@ OBJC_EXPORT SEL *         _getObjcMessageRefs(headerType *head, int *nmess);
     typedef struct _header_info
     {
       const headerType *       mhdr;
-      Module                   mod_ptr; // NOT adjusted by image_slide
+      Module                   mod_ptr;                    // already slid
       unsigned int             mod_count;
       unsigned long            image_slide;
-      void *                   objcData;     // getObjcHeaderData result
-      unsigned                         objcDataSize; // getObjcHeaderData result
-      objc_image_info *                info;    // IS adjusted by image_slide
+      const struct segment_command *   objcSegmentHeader;  // already slid
+      objc_image_info *                info;                       // already slid
       struct _header_info *    next;
     } header_info;
     OBJC_EXPORT header_info *_objc_headerStart ();
@@ -145,78 +157,25 @@ OBJC_EXPORT SEL *         _getObjcMessageRefs(headerType *head, int *nmess);
     OBJC_EXPORT const char *_objcModuleNameAtIndex(int i);
     OBJC_EXPORT Class objc_getOrigClass (const char *name);
 
-    extern struct objc_method_list **get_base_method_list(Class cls);
-
-
     OBJC_EXPORT const char *__S(_nameForHeader) (const headerType*);
 
-    /* initialize */
-    OBJC_EXPORT void _sel_resolve_conflicts(headerType * header, unsigned long slide);
-    OBJC_EXPORT void _class_install_relationships(Class, long);
-    OBJC_EXPORT void *_objc_create_zone(void);
-
-    OBJC_EXPORT SEL sel_registerNameNoCopyNoLock(const char *str);
+    OBJC_EXPORT SEL sel_registerNameNoLock(const char *str, BOOL copy);
     OBJC_EXPORT void sel_lock(void);
     OBJC_EXPORT void sel_unlock(void);
 
-    /* selector fixup in method lists */
-
-    #define _OBJC_FIXED_UP ((void *)1771)
-
-    static inline struct objc_method_list *_objc_inlined_fixup_selectors_in_method_list(struct objc_method_list *mlist)
-    {
-        unsigned i, size;
-        Method method;
-        struct objc_method_list *old_mlist; 
-        
-        if ( ! mlist ) return (struct objc_method_list *)0;
-        if ( mlist->obsolete != _OBJC_FIXED_UP ) {
-            old_mlist = mlist;
-            size = sizeof(struct objc_method_list) - sizeof(struct objc_method) + old_mlist->method_count * sizeof(struct objc_method);
-            mlist = malloc_zone_malloc(_objc_create_zone(), size);
-            memmove(mlist, old_mlist, size);
-            sel_lock();
-            for ( i = 0; i < mlist->method_count; i += 1 ) {
-                method = &mlist->method_list[i];
-                method->method_name =
-                    sel_registerNameNoCopyNoLock((const char *)method->method_name);
-            }
-            sel_unlock();
-            mlist->obsolete = _OBJC_FIXED_UP;
-        }
-        return mlist;
-    }
-
-    /* method lookup */
-    /* --  inline version of class_nextMethodList(Class, void **)  -- */
-
-    static inline struct objc_method_list *_class_inlinedNextMethodList(Class cls, void **it)
-    {
-        struct objc_method_list ***iterator;
-
-        iterator = (struct objc_method_list***)it;
-        if (*iterator == NULL) {
-            *iterator = &((((struct objc_class *) cls)->methodLists)[0]);
-        }
-        else (*iterator) += 1;
-        // Check for list end
-        if ((**iterator == NULL) || (**iterator == END_OF_METHODS_LIST)) {
-            *it = nil;
-            return NULL;
-        }
-        
-        **iterator = _objc_inlined_fixup_selectors_in_method_list(**iterator);
-        
-        // Return method list pointer
-        return **iterator;
-    }
+    /* optional malloc zone for runtime data */
+    OBJC_EXPORT malloc_zone_t *_objc_internal_zone(void);
+    OBJC_EXPORT void *_malloc_internal(size_t size);
+    OBJC_EXPORT void *_calloc_internal(size_t count, size_t size);
+    OBJC_EXPORT void *_realloc_internal(void *ptr, size_t size);
+    OBJC_EXPORT char *_strdup_internal(const char *str);
+    OBJC_EXPORT void _free_internal(void *ptr);
 
     OBJC_EXPORT BOOL class_respondsToMethod(Class, SEL);
     OBJC_EXPORT IMP class_lookupMethod(Class, SEL);
-    OBJC_EXPORT IMP class_lookupMethodInMethodList(struct objc_method_list *mlist, SEL sel);
-    OBJC_EXPORT IMP class_lookupNamedMethodInMethodList(struct objc_method_list *mlist, const char *meth_name);
-    OBJC_EXPORT void _objc_insertMethods( struct objc_method_list *mlist, struct objc_method_list ***list );
-    OBJC_EXPORT void _objc_removeMethods( struct objc_method_list *mlist, struct objc_method_list ***list );
+    OBJC_EXPORT IMP lookupNamedMethodInMethodList(struct objc_method_list *mlist, const char *meth_name);
+    OBJC_EXPORT void _objc_insertMethods(struct objc_class *cls, struct objc_method_list *mlist);
+    OBJC_EXPORT void _objc_removeMethods(struct objc_class *cls, struct objc_method_list *mlist);
 
     OBJC_EXPORT IMP _cache_getImp(Class cls, SEL sel);
     OBJC_EXPORT Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp);
@@ -234,19 +193,56 @@ OBJC_EXPORT SEL *         _getObjcMessageRefs(headerType *head, int *nmess);
 
     /* magic */
     OBJC_EXPORT Class _objc_getFreedObjectClass (void);
+#ifndef OBJC_INSTRUMENTED
     OBJC_EXPORT const struct objc_cache emptyCache;
+#else
+    OBJC_EXPORT struct objc_cache emptyCache;
+#endif
     OBJC_EXPORT void _objc_flush_caches (Class cls);
     
     /* locking */
     #define MUTEX_TYPE pthread_mutex_t*
     #define OBJC_DECLARE_LOCK(MTX) pthread_mutex_t MTX = PTHREAD_MUTEX_INITIALIZER
     OBJC_EXPORT pthread_mutex_t classLock;
+    OBJC_EXPORT pthread_mutex_t methodListLock;
 
     /* nil handler object */
     OBJC_EXPORT id _objc_nilReceiver;
     OBJC_EXPORT id _objc_setNilReceiver(id newNilReceiver);
     OBJC_EXPORT id _objc_getNilReceiver(void);
 
+    /* C++ interoperability */
+    OBJC_EXPORT SEL cxx_construct_sel;
+    OBJC_EXPORT SEL cxx_destruct_sel;
+    OBJC_EXPORT const char *cxx_construct_name;
+    OBJC_EXPORT const char *cxx_destruct_name;
+    OBJC_EXPORT BOOL object_cxxConstruct(id obj);
+    OBJC_EXPORT void object_cxxDestruct(id obj);
+
+    /* GC and RTP startup */
+    OBJC_EXPORT void gc_init(BOOL on);
+    OBJC_EXPORT void rtp_init(void);
+
+    /* Write barrier implementations */
+    OBJC_EXPORT id objc_assign_strongCast_gc(id val, id *dest);
+    OBJC_EXPORT id objc_assign_global_gc(id val, id *dest);
+    OBJC_EXPORT id objc_assign_ivar_gc(id value, id dest, unsigned int offset);
+    OBJC_EXPORT id objc_assign_strongCast_non_gc(id value, id *dest);
+    OBJC_EXPORT id objc_assign_global_non_gc(id value, id *dest);
+    OBJC_EXPORT id objc_assign_ivar_non_gc(id value, id dest, unsigned int offset);
+
+    /* Code modification */
+#if defined(__ppc__)
+    OBJC_EXPORT size_t objc_write_branch(void *entry, void *target);
+#endif
+
+    /* Thread-safe info field */
+    OBJC_EXPORT void _class_setInfo(struct objc_class *cls, long set);
+    OBJC_EXPORT void _class_clearInfo(struct objc_class *cls, long clear);
+    OBJC_EXPORT void _class_changeInfo(struct objc_class *cls, long set, long clear);
+
+    /* Secure /tmp usage */
+    OBJC_EXPORT int secure_open(const char *filename, int flags, uid_t euid);
 
     typedef struct {
        long addressOffset;
@@ -266,7 +262,26 @@ OBJC_EXPORT SEL *          _getObjcMessageRefs(headerType *head, int *nmess);
 #endif
 
 
+// Settings from environment variables
+OBJC_EXPORT int PrintImages;     // env OBJC_PRINT_IMAGES
+OBJC_EXPORT int PrintLoading;    // env OBJC_PRINT_LOAD_METHODS
+OBJC_EXPORT int PrintConnecting; // env OBJC_PRINT_CLASS_CONNECTION
+OBJC_EXPORT int PrintRTP;        // env OBJC_PRINT_RTP
+OBJC_EXPORT int PrintGC;         // env OBJC_PRINT_GC
+OBJC_EXPORT int PrintSharing;    // env OBJC_PRINT_SHARING
+OBJC_EXPORT int PrintCxxCtors;   // env OBJC_PRINT_CXX_CTORS
+
+OBJC_EXPORT int UseInternalZone; // env OBJC_USE_INTERNAL_ZONE
+OBJC_EXPORT int AllowInterposing;// env OBJC_ALLOW_INTERPOSING
 
+OBJC_EXPORT int DebugUnload;     // env OBJC_DEBUG_UNLOAD
+OBJC_EXPORT int DebugFragileSuperclasses; // env OBJC_DEBUG_FRAGILE_SUPERCLASSES
+
+OBJC_EXPORT int ForceGC;         // env OBJC_FORCE_GC
+OBJC_EXPORT int ForceNoGC;       // env OBJC_FORCE_NO_GC
+OBJC_EXPORT int CheckFinalizers; // env OBJC_CHECK_FINALIZERS
+
+OBJC_EXPORT BOOL UseGC;          // equivalent to calling objc_collecting_enabled()
 
 static __inline__ int _objc_strcmp(const unsigned char *s1, const unsigned char *s2) {
     unsigned char c1, c2;
@@ -306,5 +321,12 @@ typedef struct {
 #define ISINITIALIZING(cls)    ((((volatile long)GETMETA(cls)->info) & CLS_INITIALIZING) != 0)
 
 
+// Attribute for global variables to keep them out of bss storage
+// To save one page per non-Objective-C process, variables used in 
+// the "Objective-C not used" case should not be in bss storage.
+// On Tiger, this reduces the number of touched pages for each 
+// CoreFoundation-only process from three to two. See #3857126 and #3857136.
+#define NOBSS __attribute__((section("__DATA,__data")))
+
 #endif /* _OBJC_PRIVATE_H_ */
 
diff --git a/runtime/objc-rtp-sym.s b/runtime/objc-rtp-sym.s
new file mode 100644 (file)
index 0000000..9556752
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+  objc-rtp-sym.s
+  Copyright 2004, Apple Computer, Inc.
+  Author: Jim Laskey
+  
+  This file is used to regenerate symbols for routines in the ObjC runtime pages.
+  
+  Build this file with:
+    cc objc-rtp-syms.c -c -o objc-rtp-syms.o.temp
+    ld -seg1addr kRTPagesLo objc-rtp-syms.o.temp -r -o objc-rtp-syms.o
+  and then use `-sectcreate __DATA __commpage objc-rtp-syms.o` when linking.
+
+  IMPORTANT - declarations need to be declared in address order.
+*/
+
+#undef  OBJC_ASM
+#define OBJC_ASM
+#include "objc-rtp.h"
+
+    .text
+    .globl  _objc_kIgnore_rtp
+    .org    kRTAddress_ignoredSelector-kRTPagesLo  // unnormalized with ld -seg1addr kRTPagesLo
+_objc_kIgnore_rtp:
+    nop
+    // note that macro expansion does not work well with .org, had to go long hand - jml
+    .globl   _objc_assign_strongCast_rtp
+    .org     kRTAddress_objc_assign_strongCast-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo
+_objc_assign_strongCast_rtp:
+    nop
+    
+    .globl   _objc_assign_global_rtp
+    .org     kRTAddress_objc_assign_global-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo
+_objc_assign_global_rtp:
+    nop
+
+    .globl   _objc_assign_ivar_rtp
+    .org     kRTAddress_objc_assign_ivar-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo
+_objc_assign_ivar_rtp:
+    nop
+
+    .globl   _objc_msgSend_rtp
+    .org     kRTAddress_objc_msgSend -kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo
+_objc_msgSend_rtp:
+    nop
+
+    // Extra symbol at the end of the RTP area.
+    // This pacifies gdb and other debugging tools.
+    .globl   _objc_msgSend_rtp_exit
+    .org     kRTPagesHi - kRTPagesLo // unnormalized with ld -seg1adr kRTPagesLo
+
+    .data
+    .long   0
diff --git a/runtime/objc-rtp.h b/runtime/objc-rtp.h
new file mode 100644 (file)
index 0000000..faae2ba
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+  objc-rtp.h
+  Copyright 2004, Apple Computer, Inc.
+  Author: Jim Laskey
+  
+  Layout of the "objc runtime pages", an fixed area 
+  in high memory that can be reached via an absolute branch.
+  Basic idea is that, on ppc, a single "bla" instruction
+  (branch & link to absolute address)
+  can be issued by the compiler to get to high-value routines
+  in the runtime, including the basic messenger and to the
+  assignment helper intrinsics issued under -fobjc-gc.
+  The implementation of the intrinsics is optimized based
+  on whether the application (process) is running with GC enabled
+  or not.
+*/
+
+#ifndef _OBJC_RTP_H_
+#define _OBJC_RTP_H_
+
+/*********************************************************************
+  Layout of the runtime page.
+
+  Some of these values must NEVER BE CHANGED, including:
+  kRTPagesLo
+  kRTPagesHi
+  kRTPagesMaxSize
+  kRTSize_objc_msgSend             
+  kRTSize_objc_assign_ivar
+  kRTAddress_objc_msgSend          ppc 0xfffeff00
+  kRTAddress_objc_assign_ivar      ppc 0xfffefec0
+
+*********************************************************************/
+
+#undef OBJC_SIZE_T
+#undef OBJC_INTPTR_T
+#undef OBJC_UINTPTR_T
+
+#ifdef OBJC_ASM
+#define OBJC_SIZE_T(x) (x)
+#define OBJC_INTPTR_T(x) (x)
+#define OBJC_UINTPTR_T(x) (x)
+#else
+#define OBJC_SIZE_T(x) ((size_t)(x))
+#define OBJC_INTPTR_T(x) ((intptr_t)(x))
+#define OBJC_UINTPTR_T(x) ((uintptr_t)(x))
+#endif
+
+// Size of RTP area, in bytes (0x1000 = 4k bytes = 1 page)
+#define kRTPagesMaxSize  OBJC_SIZE_T(4 * 0x1000)  // size reserved for runtime
+#define kRTPagesSize     OBJC_SIZE_T(1 * 0x1000)  // size actually used
+    
+// Address of RTP area: [kRTPagesLo..kRTPagesHi)
+// These are defined in negative numbers to reflect an offset from the highest address,
+// which is what the ppc "bla" instruction is defined to do with "negative" addresses.
+// This definition will establish the correct entry points for 64-bit if this mechanism
+// is adopted for that architecture as well.
+#if defined(__ppc__)
+#   define kRTPagesLo    OBJC_UINTPTR_T(-20 * 0x1000) // ppc 0xfffec000
+#elif defined(__i386__)
+#   define kRTPagesLo    OBJC_UINTPTR_T(-24 * 0x1000) // i386 0xfffe8000
+#else
+    #error unknown architecture
+#endif
+#define kRTPagesHi       OBJC_UINTPTR_T(kRTPagesLo + kRTPagesMaxSize) // ppc 0xffff0000
+
+// Sizes reserved for functions in the RTP area, in bytes
+#define kRTSize_objc_msgSend           OBJC_SIZE_T(0x0100)
+#define kRTSize_objc_assign_ivar       OBJC_SIZE_T(0x0040)
+#define kRTSize_objc_assign_global     OBJC_SIZE_T(0x0010)
+#define kRTSize_objc_assign_strongCast OBJC_SIZE_T(0x0010)
+        
+// Absolute address of functions in the RTP area
+// These count backwards from the hi end of the RTP area. 
+// New additions are added to the low side.
+#define kRTAddress_objc_msgSend           OBJC_UINTPTR_T(kRTPagesHi - kRTSize_objc_msgSend) // ppc 0xfffeff00
+#define kRTAddress_objc_assign_ivar       OBJC_UINTPTR_T(kRTAddress_objc_msgSend - kRTSize_objc_assign_ivar) // ppc 0xfffefec0
+#define kRTAddress_objc_assign_global     OBJC_UINTPTR_T(kRTAddress_objc_assign_ivar - kRTSize_objc_assign_global) // ppc 0xfffefeb0
+#define kRTAddress_objc_assign_strongCast OBJC_UINTPTR_T(kRTAddress_objc_assign_global - kRTSize_objc_assign_strongCast) // ppc 0xfffefea0
+
+// Sizes reserved for data in the RTP area, in bytes
+#define kRTSize_ignoredSelector   OBJC_SIZE_T(19) // 1+strlen("<ignored selector>")
+
+// Absolute address of data in the RTP area
+// These count forwards from the lo end of the RTP area.
+// These are not locked down and can be moved if necessary.
+#define kRTAddress_ignoredSelector OBJC_UINTPTR_T(kRTPagesHi-kRTPagesSize)
+
+#define kIgnore kRTAddress_ignoredSelector  // ppc 0xfffef000
+
+/*********************************************************************
+  End of runtime page layout. 
+*********************************************************************/
+
+#endif
diff --git a/runtime/objc-rtp.m b/runtime/objc-rtp.m
new file mode 100644 (file)
index 0000000..2dd4071
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 2004 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+  objc-rtp.m
+  Copyright 2004, Apple Computer, Inc.
+  Author: Jim Laskey
+  
+  Implementation of the "objc runtime pages", an fixed area 
+  in high memory that can be reached via an absolute branch.
+*/
+
+#import "objc-rtp.h"
+#import "objc-private.h"
+#import "objc-auto.h"
+
+#import <stdint.h>
+#import <mach/mach.h>
+
+
+// Local prototypes
+
+static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize);
+static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name, void *gc_code, void *non_gc_code);
+
+#if defined(__ppc__)
+// from Libc, but no prototype yet (#3850825)
+extern void sys_icache_invalidate(const void * newcode, size_t len);
+
+static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns);
+#endif
+
+
+#if !defined(__ppc__)
+
+__private_extern__ void rtp_init(void)
+{
+    if (PrintRTP) {
+        _objc_inform("RTP: no rtp implementation for this platform");
+    }
+}
+
+#else
+
+/**********************************************************************
+* rtp_init
+* Allocate and initialize the Objective-C runtime pages.
+* Kills the process if something goes wrong.
+**********************************************************************/
+__private_extern__ void rtp_init(void)
+{
+    kern_return_t ret;
+    vm_address_t objcRTPages = (vm_address_t)(kRTPagesHi - kRTPagesSize);
+
+    if (PrintRTP) {
+        _objc_inform("RTP: initializing rtp at [%p..%p)", 
+                     objcRTPages, kRTPagesHi);
+    }
+
+    // unprotect the ObjC runtime pages for writing
+    ret = vm_protect(mach_task_self(),
+                     objcRTPages, kRTPagesSize,
+                     FALSE, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE);
+                     
+    if (ret != KERN_SUCCESS) {
+        if (PrintRTP) {
+            _objc_inform("RTP: warning: libSystem/kernel did not allocate Objective-C runtime pages; continuing anyway");
+        }
+        return;
+    }
+    
+    // initialize code in ObjC runtime pages
+    rtp_set_up_objc_msgSend(kRTAddress_objc_msgSend, kRTSize_objc_msgSend);
+    
+    rtp_set_up_other(kRTAddress_objc_assign_ivar, kRTSize_objc_assign_ivar,
+                    "objc_assign_ivar", objc_assign_ivar_gc, objc_assign_ivar_non_gc);
+                    
+    rtp_set_up_other(kRTAddress_objc_assign_global, kRTSize_objc_assign_global,
+                    "objc_assign_global", objc_assign_global_gc, objc_assign_global_non_gc);
+                    
+    rtp_set_up_other(kRTAddress_objc_assign_strongCast, kRTSize_objc_assign_strongCast,
+                    "objc_assign_strongCast", objc_assign_strongCast_gc, objc_assign_strongCast_non_gc);
+
+    // initialize data in ObjC runtime pages
+    strcpy((char *)kIgnore, "<ignored selector>");
+
+    // re-protect the ObjC runtime pages for execution
+    ret = vm_protect(mach_task_self(),
+                     objcRTPages, kRTPagesSize,
+                     FALSE, VM_PROT_READ | VM_PROT_EXECUTE);
+    if (ret != KERN_SUCCESS) {
+        _objc_inform("RTP: Could not re-protect Objective-C runtime pages!");
+    }
+}
+
+
+/**********************************************************************
+* rtp_set_up_objc_msgSend
+*
+* Construct the objc runtime page version of objc_msgSend
+* address is the entry point of the new implementation.
+* maxsize is the number of bytes available for the new implementation.
+**********************************************************************/
+static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) 
+{
+#if defined(__ppc__)
+    // Location in the runtime pages of the new function.
+    unsigned *buffer = (unsigned *)address;
+
+    // Location of the original implementation.
+    // objc_msgSend is simple enough to copy directly
+    unsigned *code = (unsigned *)objc_msgSend;
+    
+    // If building an instrumented or profiled runtime, simply branch 
+    // directly to the full implementation.
+#if defined(OBJC_INSTRUMENTED) || defined(PROFILE)
+    unsigned written = objc_write_branch(buffer, code);
+    sys_icache_invalidate(buffer, written*4);
+    if (PrintRTP) {
+        _objc_inform("RTP: instrumented or profiled libobjc - objc_msgSend "
+                     "in RTP at %p is a %d instruction branch", 
+                     buffer, written);
+    }
+    return;
+#endif
+
+    // If function interposing is enabled, call the full implementation 
+    // via a dyld-recognizable stub.
+    if (AllowInterposing) {
+        extern void objc_msgSend_stub(void);
+        unsigned written = objc_write_branch(buffer, objc_msgSend_stub);
+        sys_icache_invalidate(buffer, written*4);
+        if (PrintRTP) {
+            _objc_inform("RTP: interposing enabled - objc_msgSend "
+                         "in RTP at %p is a %d instruction branch", 
+                         buffer, written);
+        }
+        return;
+    }
+
+    if (PrintRTP) {
+        _objc_inform("RTP: writing objc_msgSend at [%p..%p) ...", 
+                     address, address+maxsize);
+    }
+
+    // Copy instructions from function to runtime pages
+    // i is the number of INSTRUCTIONS written so far
+    size_t max_insns = maxsize / sizeof(unsigned);
+    size_t i = rtp_copy_code(buffer, code, max_insns);
+    if (i > max_insns) {
+        // objc_msgSend didn't fit in the alloted space.
+        // Branch to ordinary objc_msgSend instead so the program won't crash.
+        i = objc_write_branch(buffer, code);
+        sys_icache_invalidate(buffer, i*4);
+        _objc_inform("RTP: objc_msgSend is too large to fit in the "
+                     "runtime pages (%d bytes available)", maxsize);
+        return;
+    }
+    
+    { 
+        // Replace load of _objc_nilReceiver.
+        // This assumes that the load of _objc_nilReceiver
+        // immediately follows the LAST `mflr r0` in objc_msgSend, 
+        // and that the original load sequence is six instructions long.
+        
+        // instructions used to load _objc_nilReceiver
+        const unsigned op_mflr_r0    = 0x7c0802a6u;
+        const unsigned op_lis_r11 = 0x3d600000u;
+        const unsigned op_lwz_r11 = 0x816b0000u;
+        const unsigned op_nop     = 0x60000000u;
+        
+        // get address of _objc_nilReceiver, and its lo and hi halves
+        unsigned address = (unsigned)&_objc_nilReceiver;
+        signed lo = (signed short)address;
+        signed ha = (address - lo) >> 16;
+        
+        // search for mflr instruction
+        int j;
+        for (j = i; j-- != 0; ) {
+            if (buffer[j] == op_mflr_r0) {
+                // replace with lis lwz nop nop sequence
+                buffer[j + 0] = op_lis_r11 | (ha & 0xffff);
+                buffer[j + 1] = op_nop;
+                buffer[j + 2] = op_nop;
+                buffer[j + 3] = op_lwz_r11 | (lo & 0xffff);
+                buffer[j + 4] = op_nop;
+                buffer[j + 5] = op_nop;
+                break;
+            }
+        }
+    }
+    
+    // branch to the cache miss code
+    i += objc_write_branch(buffer + i, code + i);
+    
+    // flush the instruction cache
+    sys_icache_invalidate(buffer, i*4);
+
+    if (PrintRTP) {
+        _objc_inform("RTP: wrote   objc_msgSend at [%p..%p)", 
+                     address, address + i*sizeof(unsigned));
+    }
+
+#elif defined(__i386__)
+    #warning needs implementation
+#else
+    #error unknown architecture
+#endif   
+}
+
+
+/**********************************************************************
+* rtp_set_up_other
+*
+* construct the objc runtime page version of the supplied code
+* address is the entry point of the new implementation.
+* maxsize is the number of bytes available for the new implementation.
+* name is the c string name of the routine being set up.
+* gc_code is the code to use if collecting is enabled (assumed to be large and requiring a branch.)
+* non_gc_code is the code to use if collecting is not enabled (assumed to be small enough to copy.)
+**********************************************************************/
+static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name, void *gc_code, void *non_gc_code) {
+#if defined(__ppc__)
+    // location in the runtime pages of this function
+    unsigned *buffer = (unsigned *)address;
+    
+    // Location of the original implementation.
+    unsigned *code = (unsigned *)(objc_collecting_enabled() ? gc_code : non_gc_code);
+    
+    if (objc_collecting_enabled()) {
+        unsigned written = objc_write_branch(buffer, code);
+        sys_icache_invalidate(buffer, written*4);
+        if (PrintRTP) {
+            _objc_inform("RTP: %s in RTP at %p is a %d instruction branch", 
+                         name, buffer, written);
+        }
+        return;
+    }
+
+    if (PrintRTP) {
+        _objc_inform("RTP: writing %s at [%p..%p) ...", 
+                     name, address, address + maxsize);
+    }
+
+    // Copy instructions from function to runtime pages
+    // i is the number of INSTRUCTIONS written so far
+    unsigned max_insns = maxsize / sizeof(unsigned);
+    unsigned i = rtp_copy_code(buffer, code, max_insns);
+    if (i > max_insns) {
+        // code didn't fit in the alloted space.
+        // Branch to ordinary objc_assign_ivar instead so the program won't crash.
+        i = objc_write_branch(buffer, code);
+        sys_icache_invalidate(buffer, i*4);
+        _objc_inform("RTP: %s is too large to fit in the "
+                     "runtime pages (%d bytes available)", name, maxsize);
+        return;
+    }
+    
+    // flush the instruction cache
+    sys_icache_invalidate(buffer, i*4);
+
+    if (PrintRTP) {
+        _objc_inform("RTP: wrote %s at [%p..%p)", 
+                     name, address, address + i * sizeof(unsigned));
+    }
+
+#elif defined(__i386__)
+    #warning needs implementation
+#else // defined(architecture)
+    #error unknown architecture
+#endif // defined(architecture)
+}
+
+
+#if defined(__ppc__)
+
+/**********************************************************************
+* rtp_copy_code
+*
+* Copy blr-terminated PPC instructions from source to dest.
+* If a blr is reached then that blr is copied, and the return value is 
+*   the number of instructions copied ( <= max_insns )
+* If no blr is reached then exactly max_insns instructions are copied, 
+*   and the return value is max_insns+1.
+**********************************************************************/
+static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns)
+{
+    const unsigned op_blr = 0x4e800020u;
+    size_t i;
+    
+    // copy instructions until blr is found
+    for (i = 0; i < max_insns; i++) {
+        dest[i] = source[i];
+        if (source[i] == op_blr) break;
+    }
+    
+    // return number of instructions copied
+    // OR max_insns+1 if no blr was found
+    return i + 1;
+}
+
+// defined(__ppc__)
+#endif
+
+// defined(__ppc__)  ||  defined(__i386__)
+#endif
index ab83dc61d636e065747a29b787d151388ab1ab54..9950a668a83cdee59d375e09ffd06d9f613d13da 100644 (file)
@@ -61,7 +61,11 @@ struct objc_module {
 
 struct objc_super {
        id receiver;
+#ifndef __cplusplus
        Class class;
+#else
+       Class super_class;
+#endif
 };
 
 /*
@@ -142,6 +146,7 @@ OBJC_EXPORT void *objc_getClasses(void);
 #endif
 
 OBJC_EXPORT id objc_lookUpClass(const char *name);
+OBJC_EXPORT id objc_getRequiredClass(const char *name);
 OBJC_EXPORT void objc_addClass(Class myClass);
 
 /* customizing the error handling for objc_getClass/objc_getMetaClass */
index bb204b85d0a5fcb6837105e3183ae483a5f2497e..8687470c3f757ad7fbba9e5340bfd01989f6e397 100644 (file)
 *
 **********************************************************************/
 
+/***********************************************************************
+ * Class loading and connecting (GrP 2004-2-11)
+ *
+ * When images are loaded (during program startup or otherwise), the 
+ * runtime needs to load classes and categories from the images, connect 
+ * classes to superclasses and categories to parent classes, and call 
+ * +load methods. 
+ * 
+ * The Objective-C runtime can cope with classes arriving in any order. 
+ * That is, a class may be discovered by the runtime before some 
+ * superclass is known. To handle out-of-order class loads, the 
+ * runtime uses a "pending class" system. 
+ * 
+ * (Historical note)
+ * Panther and earlier: many classes arrived out-of-order because of 
+ *   the poorly-ordered callback from dyld. However, the runtime's 
+ *   pending mechanism only handled "missing superclass" and not 
+ *   "present superclass but missing higher class". See Radar #3225652. 
+ * Tiger: The runtime's pending mechanism was augmented to handle 
+ *   arbitrary missing classes. In addition, dyld was rewritten and 
+ *   now sends the callbacks in strictly bottom-up link order. 
+ *   The pending mechanism may now be needed only for rare and 
+ *   hard to construct programs.
+ * (End historical note)
+ * 
+ * A class when first seen in an image is considered "unconnected". 
+ * It is stored in `unconnected_class_hash`. If all of the class's 
+ * superclasses exist and are already "connected", then the new class 
+ * can be connected to its superclasses and moved to `class_hash` for 
+ * normal use. Otherwise, the class waits in `unconnected_class_hash` 
+ * until the superclasses finish connecting.
+ * 
+ * A "connected" class is 
+ * (1) in `class_hash`, 
+ * (2) connected to its superclasses, 
+ * (3) has no unconnected superclasses, 
+ * (4) is otherwise initialized and ready for use, and 
+ * (5) is eligible for +load if +load has not already been called. 
+ * 
+ * An "unconnected" class is 
+ * (1) in `unconnected_class_hash`, 
+ * (2) not connected to its superclasses, 
+ * (3) has an immediate superclass which is either missing or unconnected, 
+ * (4) is not ready for use, and 
+ * (5) is not yet eligible for +load.
+ * 
+ * Image mapping is NOT CURRENTLY THREAD-SAFE with respect to just about 
+ *  *  * anything. Image mapping IS RE-ENTRANT in several places: superclass 
+ * lookup may cause ZeroLink to load another image, and +load calls may 
+ * cause dyld to load another image.
+ * 
+ * Image mapping sequence:
+ * 
+ * Read all classes in all new images. 
+ *   Add them all to unconnected_class_hash. 
+ *   Fix up any pended classrefs referring to them.
+ *   Attach any pending categories.
+ * Read all categories in all new images. 
+ *   Attach categories whose parent class exists (connected or not), 
+ *     and pend the rest.
+ *   Mark them all eligible for +load (if implemented), even if the 
+ *     parent class is missing.
+ * Try to connect all classes in all new images. 
+ *   If the superclass is missing, pend the class
+ *   If the superclass is unconnected, try to recursively connect it
+ *   If the superclass is connected:
+ *     connect the class
+ *     mark the class eligible for +load, if implemented
+ *     connect any pended subclasses of the class
+ * Resolve selector refs and class refs in all new images.
+ *   Class refs whose classes still do not exist are pended.
+ * Fix up protocol objects in all new images.
+ * Call +load for classes and categories.
+ *   May include classes or categories that are not in these images, 
+ *     but are newly eligible because of these image.
+ *   Class +loads will be called superclass-first because of the 
+ *     superclass-first nature of the connecting process.
+ *   Category +load needs to be deferred until the parent class is 
+ *     connected and has had its +load called.
+ * 
+ * Performance: all classes are read before any categories are read. 
+ * Fewer categories need be pended for lack of a parent class.
+ * 
+ * Performance: all categories are attempted to be attached before 
+ * any classes are connected. Fewer class caches need be flushed. 
+ * (Unconnected classes and their respective subclasses are guaranteed 
+ * to be un-messageable, so their caches will be empty.)
+ * 
+ * Performance: all classes are read before any classes are connected. 
+ * Fewer classes need be pended for lack of a superclass.
+ * 
+ * Correctness: all selector and class refs are fixed before any 
+ * protocol fixups or +load methods. libobjc itself contains selector 
+ * and class refs which are used in protocol fixup and +load.
+ * 
+ * Correctness: +load methods are scheduled in bottom-up link order. 
+ * This constraint is in addition to superclass order. Some +load 
+ * implementations expect to use another class in a linked-to library, 
+ * even if the two classes don't share a direct superclass relationship.
+ * 
+ **********************************************************************/
+
+
 /***********************************************************************
 * Imports.
 **********************************************************************/
 
-
 #include <mach-o/ldsyms.h>
 #include <mach-o/dyld.h>
-#include <mach/vm_statistics.h>
+#include <mach-o/dyld_gdb.h>
+#include <mach/mach.h>
+#include <mach/mach_error.h>
 
 // project headers first, otherwise we get the installed ones
 #import "objc-class.h"
 #import "objc-private.h"
 #import <objc/Object.h>
 #import <objc/Protocol.h>
+#import "objc-rtp.h"
+#import "objc-auto.h"
 
 #include <sys/time.h>
 #include <sys/resource.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+/* NXHashTable SPI */
+OBJC_EXPORT unsigned _NXHashCapacity(NXHashTable *table);
+OBJC_EXPORT void _NXHashRehashToCapacity(NXHashTable *table, unsigned newCapacity);
+
 
 OBJC_EXPORT Class _objc_getNonexistentClass(void);
 
@@ -70,19 +184,32 @@ OBJC_EXPORT Class getOriginalClassForPosingClass(Class);
 typedef struct _objc_unresolved_category
 {
     struct _objc_unresolved_category * next;
-    struct objc_category *                     cat;
+    struct objc_category *                     cat;  // may be NULL
     long                                       version;
-    int                                                bindme;
 } _objc_unresolved_category;
 
-typedef struct _PendingClass
+typedef struct _PendingSubclass
+{
+    struct objc_class *subclass;  // subclass to finish connecting; may be NULL
+    struct _PendingSubclass *next;
+} PendingSubclass;
+
+typedef struct _PendingClassRef
 {
-    struct objc_class * *                      ref;
-    struct objc_class *                        classToSetUp;
-    const char *               nameof_superclass;
-    int                        version;
-    struct _PendingClass *     next;
-} PendingClass;
+    struct objc_class **ref;  // class reference to fix up; may be NULL
+    struct _PendingClassRef *next;
+} PendingClassRef;
+
+struct loadable_class {
+    struct objc_class *cls;  // may be NULL
+    IMP method;
+};
+
+struct loadable_category {
+    struct objc_category *cat;  // may be NULL
+    IMP method;
+};
+
 
 /***********************************************************************
 * Exports.
@@ -94,15 +221,45 @@ void               (*callbackFunction)(Class, const char *) = 0;
 // Lock for class hashtable
 OBJC_DECLARE_LOCK (classLock);
 
-// Condition for logging load progress
-static int LaunchingDebug = -1; // env "LaunchingDebug"
-static int PrintBinding = -1;    // env "OBJC_PRINT_BIND"
+// Settings from environment variables
+__private_extern__ int PrintImages = -1;     // env OBJC_PRINT_IMAGES
+__private_extern__ int PrintLoading = -1;    // env OBJC_PRINT_LOAD_METHODS
+__private_extern__ int PrintConnecting = -1; // env OBJC_PRINT_CONNECTION
+__private_extern__ int PrintRTP = -1;        // env OBJC_PRINT_RTP
+__private_extern__ int PrintGC = -1;         // env OBJC_PRINT_GC
+__private_extern__ int PrintSharing = -1;    // env OBJC_PRINT_SHARING
+__private_extern__ int PrintCxxCtors = -1;   // env OBJC_PRINT_CXX_CTORS
+
+__private_extern__ int UseInternalZone = -1; // env OBJC_USE_INTERNAL_ZONE
+__private_extern__ int AllowInterposing = -1;// env OBJC_ALLOW_INTERPOSING
+
+__private_extern__ int DebugUnload = -1;     // env OBJC_DEBUG_UNLOAD
+__private_extern__ int DebugFragileSuperclasses = -1; // env OBJC_DEBUG_FRAGILE_SUPERCLASSES
+
+__private_extern__ int ForceGC = -1;         // env OBJC_FORCE_GC
+__private_extern__ int ForceNoGC = -1;       // env OBJC_FORCE_NO_GC
+__private_extern__ int CheckFinalizers = -1; // env OBJC_CHECK_FINALIZERS
 
 // objc's key for pthread_getspecific
-pthread_key_t _objc_pthread_key;
+__private_extern__ pthread_key_t _objc_pthread_key = 0;
+
+// List of classes that need +load called (pending superclass +load)
+// This list always has superclasses first because of the way it is constructed
+static struct loadable_class *loadable_classes NOBSS = NULL;
+static int loadable_classes_used NOBSS = 0;
+static int loadable_classes_allocated NOBSS = 0;
+
+// List of categories that need +load called (pending parent class +load)
+static struct loadable_category *loadable_categories NOBSS = NULL;
+static int loadable_categories_used NOBSS = 0;
+static int loadable_categories_allocated NOBSS = 0;
+
+// Selectors for which @selector() doesn't work
+__private_extern__ SEL cxx_construct_sel = NULL;
+__private_extern__ SEL cxx_destruct_sel = NULL;
+__private_extern__ const char *cxx_construct_name = ".cxx_construct";
+__private_extern__ const char *cxx_destruct_name = ".cxx_destruct";
 
-// Is every library up to now prebound?
-static int all_modules_prebound = 0;
 
 /***********************************************************************
 * Function prototypes internal to this module.
@@ -114,33 +271,34 @@ static int                                _objc_defaultClassHandler                       (const char * clsName);
 static void                            _objcTweakMethodListPointerForClass     (struct objc_class * cls);
 static void                            _objc_add_category_flush_caches(struct objc_class * cls, struct objc_category * category, int version);
 static void                            _objc_add_category(struct objc_class * cls, struct objc_category * category, int version);
-static void                            _objc_register_category                         (struct objc_category * cat, long version, int bindme);
-static void                            _objc_add_categories_from_image         (header_info * hi);
+static void                            _objc_register_category                         (struct objc_category * cat, long version);
+static void                            _objc_read_categories_from_image                (header_info * hi);
 static const header_info * _headerForClass                                     (struct objc_class * cls);
-static PendingClass *  newPending                                                      (void);
 static NXMapTable *            pendingClassRefsMapTable                        (void);
-static void            _objc_add_classes_from_image            (NXHashTable * clsHash, header_info * hi);
-static void                            _objc_fixup_string_objects_for_image(header_info * hi);
+static NXMapTable *            pendingSubclassesMapTable                       (void);
+static void            _objc_read_classes_from_image           (header_info * hi);
 static void                            _objc_map_class_refs_for_image          (header_info * hi);
-static void                            map_selrefs                                                     (SEL * sels, unsigned int cnt);
-static void                            map_method_descs                                        (struct objc_method_description_list * methods);
 static void                            _objc_fixup_protocol_objects_for_image  (header_info * hi);
-static void                            _objc_bindModuleContainingCategory(Category cat);
 static void                            _objc_fixup_selector_refs                       (const header_info * hi);
-static void                            _objc_call_loads_for_image                      (header_info * header);
-static void                            _objc_checkForPendingClassReferences           (struct objc_class *     cls);
-static void                            _objc_map_image(headerType *mh, unsigned long   vmaddr_slide);
-static void                            _objc_unmap_image(headerType *mh, unsigned long vmaddr_slide);
+static void                            _objc_unmap_image(const headerType *mh);
+static BOOL connect_class(struct objc_class *cls);
+static void add_category_to_loadable_list(struct objc_category *cat);
+static vm_range_t get_shared_range(vm_address_t start, vm_address_t end);
+static void offer_shared_range(vm_address_t start, vm_address_t end);
+static void install_shared_range(vm_range_t remote, vm_address_t local);
+static void clear_shared_range_file_cache(void);
+
 
 /***********************************************************************
 * Static data internal to this module.
 **********************************************************************/
 
 // we keep a linked list of header_info's describing each image as told to us by dyld
-static header_info *   FirstHeader = 0;
+static header_info *FirstHeader NOBSS = 0;  // NULL means empty list
+static header_info *LastHeader  NOBSS = 0;  // NULL means invalid; recompute it
 
 // Hash table of classes
-static NXHashTable *           class_hash = 0;
+static NXHashTable *           class_hash NOBSS = 0;
 static NXHashTablePrototype    classHashPrototype =
 {
     (unsigned (*) (const void *, const void *))                        classHash,
@@ -148,6 +306,9 @@ static NXHashTablePrototype classHashPrototype =
     NXNoEffectFree, 0
 };
 
+// Hash table of unconnected classes
+static NXHashTable *unconnected_class_hash NOBSS = NULL;
+
 // Exported copy of class_hash variable (hook for debugging tools)
 NXHashTable *_objc_debug_class_hash = NULL;
 
@@ -159,12 +320,14 @@ static int                        (*objc_classHandler) (const char *) = _objc_defaultClassHandler;
 static BOOL (*_objc_classLoader)(const char *) = NULL;
 
 // Category and class registries
+// Keys are COPIES of strings, to prevent stale pointers with unloaded bundles
+// Use NXMapKeyCopyingInsert and NXMapKeyFreeingRemove
 static NXMapTable *            category_hash = NULL;
 
-
-static int Postpone_install_relationships = 0;
-
-static NXMapTable *            pendingClassRefsMap = 0;
+// Keys are COPIES of strings, to prevent stale pointers with unloaded bundles
+// Use NXMapKeyCopyingInsert and NXMapKeyFreeingRemove
+static NXMapTable *            pendingClassRefsMap = NULL;
+static NXMapTable *            pendingSubclassesMap = NULL;
 
 /***********************************************************************
 * objc_dump_class_hash.  Log names of all known classes.
@@ -212,6 +375,49 @@ static int         classIsEqual           (void *          info,
     return _objc_strcmp(name->name, cls->name) == 0;
 }
 
+
+/***********************************************************************
+* NXMapKeyCopyingInsert
+* Like NXMapInsert, but strdups the key if necessary.
+* Used to prevent stale pointers when bundles are unloaded.
+**********************************************************************/
+static void *NXMapKeyCopyingInsert(NXMapTable *table, const void *key, const void *value)
+{
+    void *realKey; 
+    void *realValue = NULL;
+
+    if ((realKey = NXMapMember(table, key, &realValue)) != NX_MAPNOTAKEY) {
+        // key DOES exist in table - use table's key for insertion
+    } else {
+        // key DOES NOT exist in table - copy the new key before insertion
+        realKey = _strdup_internal(key);
+    }
+    return NXMapInsert(table, realKey, value);
+}
+
+
+/***********************************************************************
+* NXMapKeyFreeingRemove
+* Like NXMapRemove, but frees the existing key if necessary.
+* Used to prevent stale pointers when bundles are unloaded.
+**********************************************************************/
+static void *NXMapKeyFreeingRemove(NXMapTable *table, const void *key)
+{
+    void *realKey;
+    void *realValue = NULL;
+
+    if ((realKey = NXMapMember(table, key, &realValue)) != NX_MAPNOTAKEY) {
+        // key DOES exist in table - remove pair and free key
+        realValue = NXMapRemove(table, realKey);
+        _free_internal(realKey); // the key from the table, not necessarily the one given
+        return realValue;
+    } else {
+        // key DOES NOT exist in table - nothing to do
+        return NULL;
+    }
+}
+
+
 /***********************************************************************
 * _objc_init_class_hash.  Return the class lookup table, create it if
 * necessary.
@@ -222,15 +428,17 @@ void      _objc_init_class_hash          (void)
     if (class_hash)
         return;
 
-    // Provide a generous initial capacity to cut down on rehashes
-    // at launch time.  A smallish Foundation+AppKit program will have
+    // class_hash starts small, with only enough capacity for libobjc itself. 
+    // If a second library is found by map_images(), class_hash is immediately 
+    // resized to capacity 1024 to cut down on rehashes. 
+    // Old numbers: A smallish Foundation+AppKit program will have
     // about 520 classes.  Larger apps (like IB or WOB) have more like
     // 800 classes.  Some customers have massive quantities of classes.
     // Foundation-only programs aren't likely to notice the ~6K loss.
     class_hash = NXCreateHashTableFromZone (classHashPrototype,
-                                            1024,
+                                            16,
                                             nil,
-                                            _objc_create_zone ());
+                                            _objc_internal_zone ());
     _objc_debug_class_hash = class_hash;
 }
 
@@ -293,43 +501,92 @@ void      objc_setClassHandler    (int    (*userSuppliedHandler) (const char *))
     objc_classHandler = userSuppliedHandler;
 }
 
+
 /***********************************************************************
-* objc_getClass.  Return the id of the named class.  If the class does
-* not exist, call _objc_classLoader and then objc_classHandler, either of 
-* which may create a new class.
-* Warning: doesn't work if aClassName is the name of a posed-for class's isa!
+* look_up_class
+* Map a class name to a class using various methods.
+* This is the common implementation of objc_lookUpClass and objc_getClass, 
+* and is also used internally to get additional search options.
+* Sequence:
+* 1. class_hash
+* 2. unconnected_class_hash (optional)
+* 3. classLoader callback
+* 4. classHandler callback (optional)
 **********************************************************************/
-id             objc_getClass          (const char *    aClassName)
+static id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler)
 {
-    struct objc_class  cls;
-    id                                 ret;
+    BOOL includeClassLoader = YES; // class loader cannot be skipped
+    id result = nil;
+    struct objc_class query;
 
-    cls.name = aClassName;
+    query.name = aClassName;
 
-    // Check the hash table
-    OBJC_LOCK (&classLock);
-    ret = (id) NXHashGet (class_hash, &cls);
-    OBJC_UNLOCK (&classLock);
+ retry:
 
-    // If not found, go call objc_classLoader and try again
-    if (!ret  &&  _objc_classLoader  &&  (*_objc_classLoader)(aClassName))
-    {
+    if (!result  &&  class_hash) {
+        // Check ordinary classes
         OBJC_LOCK (&classLock);
-        ret = (id) NXHashGet (class_hash, &cls);
+        result = (id)NXHashGet(class_hash, &query);
         OBJC_UNLOCK (&classLock);
     }
 
-    // If not found, go call objc_classHandler and try again
-    if (!ret && (*objc_classHandler)(aClassName))
-    {
-        OBJC_LOCK (&classLock);
-        ret = (id) NXHashGet (class_hash, &cls);
-        OBJC_UNLOCK (&classLock);
+    if (!result  &&  includeUnconnected  &&  unconnected_class_hash) {
+        // Check not-yet-connected classes
+        OBJC_LOCK(&classLock);
+        result = (id)NXHashGet(unconnected_class_hash, &query);
+        OBJC_UNLOCK(&classLock);
+    }
+
+    if (!result  &&  includeClassLoader  &&  _objc_classLoader) {
+        // Try class loader callback
+        if ((*_objc_classLoader)(aClassName)) {
+            // Re-try lookup without class loader
+            includeClassLoader = NO;
+            goto retry;
+        }
+    }
+
+    if (!result  &&  includeClassHandler  &&  objc_classHandler) {
+        // Try class handler callback
+        if ((*objc_classHandler)(aClassName)) {
+            // Re-try lookup without class handler or class loader
+            includeClassLoader = NO;
+            includeClassHandler = NO;
+            goto retry;
+        }
     }
 
-    return ret;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_getClass.  Return the id of the named class.  If the class does
+* not exist, call _objc_classLoader and then objc_classHandler, either of 
+* which may create a new class.
+* Warning: doesn't work if aClassName is the name of a posed-for class's isa!
+**********************************************************************/
+id             objc_getClass          (const char *    aClassName)
+{
+    // NO unconnected, YES class handler
+    return look_up_class(aClassName, NO, YES);
 }
 
+
+/***********************************************************************
+* objc_getRequiredClass.  
+* Same as objc_getClass, but kills the process if the class is not found. 
+* This is used by ZeroLink, where failing to find a class would be a 
+* compile-time link error without ZeroLink.
+**********************************************************************/
+id objc_getRequiredClass(const char *aClassName)
+{
+    id cls = objc_getClass(aClassName);
+    if (!cls) _objc_fatal("link error: class '%s' not found.", aClassName);
+    return cls;
+}
+
+
 /***********************************************************************
 * objc_lookUpClass.  Return the id of the named class.
 * If the class does not exist, call _objc_classLoader, which may create 
@@ -339,27 +596,8 @@ id         objc_getClass          (const char *    aClassName)
 **********************************************************************/
 id             objc_lookUpClass       (const char *    aClassName)
 {
-    struct objc_class  cls;
-    id                                 ret;
-
-    cls.name = aClassName;
-
-    // Check the hash table
-    OBJC_LOCK (&classLock);
-    ret = (id) NXHashGet (class_hash, &cls);
-    OBJC_UNLOCK (&classLock);
-
-    // If not found, go call objc_classLoader and try again
-    if (!ret  &&  _objc_classLoader  &&  (*_objc_classLoader)(aClassName))
-    {
-        OBJC_LOCK (&classLock);
-        ret = (id) NXHashGet (class_hash, &cls);
-        OBJC_UNLOCK (&classLock);
-    }
-
-    // Don't call objc_classHandler; it's only used by objc_getClass().
-
-    return ret;
+    // NO unconnected, NO class handler
+    return look_up_class(aClassName, NO, NO);
 }
 
 /***********************************************************************
@@ -384,7 +622,7 @@ id          objc_getMetaClass       (const char *   aClassName)
 * objc_addClass.  Add the specified class to the table of known classes,
 * after doing a little verification and fixup.
 **********************************************************************/
-void           objc_addClass           (Class          cls)
+void           objc_addClass           (struct objc_class *cls)
 {
     // Synchronize access to hash table
     OBJC_LOCK (&classLock);
@@ -393,18 +631,23 @@ void              objc_addClass           (Class          cls)
     // Clear all bits of the info fields except CLS_CLASS and CLS_META.
     // Normally these bits are already clear but if someone tries to cons
     // up their own class on the fly they might need to be cleared.
-    if (((struct objc_class *)cls)->cache == NULL)
-    {
-        ((struct objc_class *)cls)->cache = (Cache) &emptyCache;
-        ((struct objc_class *)cls)->info = CLS_CLASS;
+    if (cls->cache == NULL) {
+        cls->cache = (Cache) &emptyCache;
+        cls->info = CLS_CLASS;
     }
 
-    if (((struct objc_class *)cls)->isa->cache == NULL)
-    {
-        ((struct objc_class *)cls)->isa->cache = (Cache) &emptyCache;
-        ((struct objc_class *)cls)->isa->info = CLS_META;
+    if (cls->isa->cache == NULL) {
+        cls->isa->cache = (Cache) &emptyCache;
+        cls->isa->info = CLS_META;
     }
 
+    // methodLists should be: 
+    // 1. NULL (Tiger and later only)
+    // 2. A -1 terminated method list array
+    // In either case, CLS_NO_METHOD_ARRAY remains clear.
+    // If the user manipulates the method list directly, 
+    // they must use the magic private format.
+
     // Add the class to the table
     (void) NXHashInsert (class_hash, cls);
 
@@ -414,6 +657,9 @@ void                objc_addClass           (Class          cls)
 
 /***********************************************************************
 * _objcTweakMethodListPointerForClass.
+* Change the class's method list pointer to a method list array. 
+* Does nothing if the method list pointer is already a method list array.
+* If the class is currently in use, methodListLock must be held by the caller.
 **********************************************************************/
 static void    _objcTweakMethodListPointerForClass     (struct objc_class *    cls)
 {
@@ -422,44 +668,60 @@ static void       _objcTweakMethodListPointerForClass     (struct objc_class *    cls)
     int                                                        mallocSize;
     struct objc_method_list ** ptr;
 
+    // Do nothing if methodLists is already an array.
+    if (cls->methodLists  &&  !(cls->info & CLS_NO_METHOD_ARRAY)) return;
+
     // Remember existing list
     originalList = (struct objc_method_list *) cls->methodLists;
 
     // Allocate and zero a method list array
     mallocSize   = sizeof(struct objc_method_list *) * initialEntries;
-    ptr             = (struct objc_method_list **) malloc_zone_calloc (_objc_create_zone (), 1, mallocSize);
+    ptr             = (struct objc_method_list **) _calloc_internal(1, mallocSize);
 
     // Insert the existing list into the array
     ptr[initialEntries - 1] = END_OF_METHODS_LIST;
     ptr[0] = originalList;
 
     // Replace existing list with array
-    ((struct objc_class *)cls)->methodLists = ptr;
-    ((struct objc_class *)cls)->info |= CLS_METHOD_ARRAY;
-
-    // Do the same thing to the meta-class
-    if (((((struct objc_class *)cls)->info & CLS_CLASS) != 0) && cls->isa)
-        _objcTweakMethodListPointerForClass (cls->isa);
+    cls->methodLists = ptr;
+    _class_clearInfo(cls, CLS_NO_METHOD_ARRAY);
 }
 
+
 /***********************************************************************
 * _objc_insertMethods.
+* Adds methods to a class.
+* Does not flush any method caches.
+* Does not take any locks.
+* If the class is already in use, use class_addMethods() instead.
 **********************************************************************/
-void   _objc_insertMethods    (struct objc_method_list *       mlist,
-                             struct objc_method_list ***       list)
+void _objc_insertMethods(struct objc_class *cls, 
+                         struct objc_method_list *mlist)
 {
-    struct objc_method_list **                 ptr;
-    volatile struct objc_method_list **        tempList;
-    int                                                                        endIndex;
-    int                                                                        oldSize;
-    int                                                                        newSize;
+    struct objc_method_list ***list;
+    struct objc_method_list **ptr;
+    int endIndex;
+    int oldSize;
+    int newSize;
+
+    if (!cls->methodLists) {
+        // cls has no methods - simply use this method list
+        cls->methodLists = (struct objc_method_list **)mlist;
+        _class_setInfo(cls, CLS_NO_METHOD_ARRAY);
+        return;
+    }
+
+    // Create method list array if necessary
+    _objcTweakMethodListPointerForClass(cls);
+    
+    list = &cls->methodLists;
 
     // Locate unused entry for insertion point
     ptr = *list;
     while ((*ptr != 0) && (*ptr != END_OF_METHODS_LIST))
         ptr += 1;
 
-    // If array is full, double it
+    // If array is full, add to it
     if (*ptr == END_OF_METHODS_LIST)
     {
         // Calculate old and new dimensions
@@ -467,11 +729,9 @@ void       _objc_insertMethods    (struct objc_method_list *       mlist,
         oldSize  = (endIndex + 1) * sizeof(void *);
         newSize  = oldSize + sizeof(struct objc_method_list *); // only increase by 1
 
-        // Replace existing array with copy twice its size
-        tempList = (struct objc_method_list **) malloc_zone_realloc ((void *) _objc_create_zone (),
-                                                                     (void *) *list,
-                                                                     (size_t) newSize);
-        *list = tempList;
+        // Grow the method list array by one.
+        // This block may be from user code; don't use _realloc_internal
+        *list = (struct objc_method_list **)realloc(*list, newSize);
 
         // Zero out addition part of new array
         bzero (&((*list)[endIndex]), newSize - oldSize);
@@ -492,11 +752,34 @@ void      _objc_insertMethods    (struct objc_method_list *       mlist,
 
 /***********************************************************************
 * _objc_removeMethods.
+* Remove methods from a class.
+* Does not take any locks.
+* Does not flush any method caches.
+* If the class is currently in use, use class_removeMethods() instead.
 **********************************************************************/
-void   _objc_removeMethods    (struct objc_method_list *       mlist,
-                             struct objc_method_list ***       list)
+void _objc_removeMethods(struct objc_class *cls, 
+                         struct objc_method_list *mlist)
 {
-    struct objc_method_list ** ptr;
+    struct objc_method_list ***list;
+    struct objc_method_list **ptr;
+
+    if (cls->methodLists == NULL) {
+        // cls has no methods
+        return;
+    }
+    if (cls->methodLists == (struct objc_method_list **)mlist) {
+        // mlist is the class's only method list - erase it
+        cls->methodLists = NULL;
+        return;
+    }
+    if (cls->info & CLS_NO_METHOD_ARRAY) {
+        // cls has only one method list, and this isn't it - do nothing
+        return;
+    }
+
+    // cls has a method list array - search it
+
+    list = &cls->methodLists;
 
     // Locate list in the array
     ptr = *list;
@@ -518,16 +801,22 @@ void      _objc_removeMethods    (struct objc_method_list *       mlist,
 /***********************************************************************
 * _objc_add_category.  Install the specified category's methods and
 * protocols into the class it augments.
+* The class is assumed not to be in use yet: no locks are taken and 
+* no method caches are flushed.
 **********************************************************************/
 static inline void _objc_add_category(struct objc_class *cls, struct objc_category *category, int version)
 {
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: attaching category '%s (%s)'", cls->name, category->category_name);
+    }
+
     // Augment instance methods
     if (category->instance_methods)
-        _objc_insertMethods (category->instance_methods, &cls->methodLists);
+        _objc_insertMethods (cls, category->instance_methods);
 
     // Augment class methods
     if (category->class_methods)
-        _objc_insertMethods (category->class_methods, &cls->isa->methodLists);
+        _objc_insertMethods (cls->isa, category->class_methods);
 
     // Augment protocols
     if ((version >= 5) && category->protocols)
@@ -547,115 +836,180 @@ static inline void _objc_add_category(struct objc_class *cls, struct objc_catego
 }
 
 /***********************************************************************
-* _objc_add_category_flush_caches.  Install the specified category's methods into
-* the class it augments, and flush the class' method cache.
-*
+* _objc_add_category_flush_caches.  Install the specified category's 
+* methods into the class it augments, and flush the class' method cache.
 **********************************************************************/
 static void _objc_add_category_flush_caches(struct objc_class *cls, struct objc_category *category, int version)
 {
     // Install the category's methods into its intended class
+    OBJC_LOCK(&methodListLock);
     _objc_add_category (cls, category, version);
+    OBJC_UNLOCK(&methodListLock);
 
     // Flush caches so category's methods can get called
     _objc_flush_caches (cls);
 }
 
+
+/***********************************************************************
+* reverse_cat
+* Reverse the given linked list of pending categories. 
+* The pending category list is built backwards, and needs to be 
+* reversed before actually attaching the categories to a class.
+* Returns the head of the new linked list.
+**********************************************************************/
+static _objc_unresolved_category *reverse_cat(_objc_unresolved_category *cat)
+{
+    if (!cat) return NULL;
+
+    _objc_unresolved_category *prev = NULL;
+    _objc_unresolved_category *cur = cat;
+    _objc_unresolved_category *ahead = cat->next;
+    
+    while (cur) {
+        ahead = cur->next;
+        cur->next = prev;
+        prev = cur;
+        cur = ahead;
+    }
+
+    return prev;
+}
+
+
 /***********************************************************************
-* _objc_resolve_categories_for_class.  Install all categories intended
-* for the specified class, in reverse order from the order in which we
-* found the categories in the image.
-* This is done as lazily as we can.
+* resolve_categories_for_class.  
+* Install all existing categories intended for the specified class.
+* cls must be a true class and not a metaclass.
 **********************************************************************/
-void   _objc_resolve_categories_for_class  (struct objc_class *        cls)
+static void resolve_categories_for_class(struct objc_class *cls)
 {
-    _objc_unresolved_category *        cat;
+    _objc_unresolved_category *        pending;
     _objc_unresolved_category *        next;
 
     // Nothing to do if there are no categories at all
-    if (!category_hash)
-        return;
+    if (!category_hash) return;
 
     // Locate and remove first element in category list
     // associated with this class
-    cat = NXMapRemove (category_hash, cls->name);
+    pending = NXMapKeyFreeingRemove (category_hash, cls->name);
 
     // Traverse the list of categories, if any, registered for this class
-    while (cat)
-    {
-        if (cat->bindme) {
-            _objc_bindModuleContainingCategory(cat->cat);
+
+    // The pending list is built backwards. Reverse it and walk forwards.
+    pending = reverse_cat(pending);
+
+    while (pending) {
+        if (pending->cat) {
+            // Install the category
+            // use the non-flush-cache version since we are only
+            // called from the class intialization code
+            _objc_add_category(cls, pending->cat, pending->version);
         }
-        // Install the category
-        // use the non-flush-cache version since we are only
-        // called from the class intialization code
-        _objc_add_category (cls, cat->cat, cat->version);
 
         // Delink and reclaim this registration
-        next = cat->next;
-        free (cat);
-        cat = next;
+        next = pending->next;
+        _free_internal(pending);
+        pending = next;
+    }
+}
+
+
+/***********************************************************************
+* _objc_resolve_categories_for_class.  
+* Public version of resolve_categories_for_class. This was 
+* exported pre-10.4 for Omni et al. to workaround a problem 
+* with too-lazy category attachment.
+* cls should be a class, but this function can also cope with metaclasses.
+**********************************************************************/
+void _objc_resolve_categories_for_class(struct objc_class *cls)
+{
+
+    // If cls is a metaclass, get the class. 
+    // resolve_categories_for_class() requires a real class to work correctly.
+    if (ISMETA(cls)) {
+        if (strncmp(cls->name, "_%", 2) == 0) {
+            // Posee's meta's name is smashed and isn't in the class_hash, 
+            // so objc_getClass doesn't work.
+            char *baseName = strchr(cls->name, '%'); // get posee's real name
+            cls = objc_getClass(baseName);
+        } else {
+            cls = objc_getClass(cls->name);
+        }
     }
+
+    resolve_categories_for_class(cls);
 }
 
+
 /***********************************************************************
-* _objc_register_category.  Add the specified category to the registry
-* of categories to be installed later (once we know for sure which
-                                       * classes we have).  If there are multiple categories on a given class,
-* they will be processed in reverse order from the order in which they
-* were found in the image.
+* _objc_register_category.
+* Process a category read from an image. 
+* If the category's class exists, attach the category immediately. 
+* If the category's class does not exist yet, pend the category for 
+* later attachment. Pending categories are attached in the order 
+* they were discovered.
 **********************************************************************/
-static void _objc_register_category    (struct objc_category * cat,
-                                        long                                   version,
-                                        int                                            bindme)
+static void _objc_register_category(struct objc_category *cat, long version)
 {
     _objc_unresolved_category *        new_cat;
     _objc_unresolved_category *        old;
     struct objc_class *theClass;
 
-
-    // If the category's class exists, just add the category
-    // We could check to see if its initted, and if not, defer this
-    // work until _objc_resolve_categories_for_class for all cases
-    // The only trick then is whether we need to bind it.  This
-    // might be doable if we store an obscured pointer so that we
-    // avoid touching the memory... [BG 5/2001 still in think mode]
-    if (theClass = objc_lookUpClass (cat->class_name))
-    {
-        if (bindme) {
-            _objc_bindModuleContainingCategory(cat);
-        }
-        _objc_add_category_flush_caches (theClass, cat, version);
+    // If the category's class exists, attach the category.
+    if ((theClass = objc_lookUpClass(cat->class_name))) {
+        _objc_add_category_flush_caches(theClass, cat, version);
+        return;
+    }
+    
+    // If the category's class exists but is unconnected, 
+    // then attach the category to the class but don't bother 
+    // flushing any method caches (because they must be empty).
+    // YES unconnected, NO class_handler
+    if ((theClass = look_up_class(cat->class_name, YES, NO))) {
+        _objc_add_category(theClass, cat, version);
         return;
     }
 
+
+    // Category's class does not exist yet. 
+    // Save the category for later attachment.
+
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: pending category '%s (%s)'", cat->class_name, cat->category_name);
+    }
+
     // Create category lookup table if needed
     if (!category_hash)
         category_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype,
                                                   128,
-                                                  _objc_create_zone ());
+                                                  _objc_internal_zone ());
 
-    // Locate an existing category, if any, for the class.  This is linked
-    // after the new entry, so list is LIFO.
+    // Locate an existing list of categories, if any, for the class.
     old = NXMapGet (category_hash, cat->class_name);
 
-    // Register the category to be fixed up later
-    new_cat = malloc_zone_malloc (_objc_create_zone (),
-                                  sizeof(_objc_unresolved_category));
+    // Register the category to be fixed up later.
+    // The category list is built backwards, and is reversed again 
+    // by resolve_categories_for_class().
+    new_cat = _malloc_internal(sizeof(_objc_unresolved_category));
     new_cat->next    = old;
     new_cat->cat     = cat;
     new_cat->version = version;
-    new_cat->bindme  = bindme;                 // could use a bit in the next pointer instead of a whole word
-    (void) NXMapInsert (category_hash, cat->class_name , new_cat);
+    (void) NXMapKeyCopyingInsert (category_hash, cat->class_name, new_cat);
 }
 
+
 /***********************************************************************
-* _objc_add_categories_from_image.
+* _objc_read_categories_from_image.
+* Read all categories from the given image. 
+* Install them on their parent classes, or register them for later 
+*   installation. 
+* Register them for later +load, if implemented.
 **********************************************************************/
-static void _objc_add_categories_from_image (header_info *  hi)
+static void _objc_read_categories_from_image (header_info *  hi)
 {
     Module             mods;
     unsigned int       midx;
-    int                        isDynamic = (hi->mhdr->filetype == MH_DYLIB) || (hi->mhdr->filetype == MH_BUNDLE);
 
     if (_objcHeaderIsReplacement(hi)) {
         // Ignore any categories in this image
@@ -663,37 +1017,33 @@ static void _objc_add_categories_from_image (header_info *  hi)
     }
 
     // Major loop - process all modules in the header
-    mods = (Module) ((unsigned long) hi->mod_ptr + hi->image_slide);
-
-    trace(0xb120, hi->mod_count, 0, 0);
+    mods = hi->mod_ptr;
 
-    for (midx = 0; midx < hi->mod_count; midx += 1)
-    {
+    // NOTE: The module and category lists are traversed backwards 
+    // to preserve the pre-10.4 processing order. Changing the order 
+    // would have a small chance of introducing binary compatibility bugs.
+    midx = hi->mod_count;
+    while (midx-- > 0) {
         unsigned int   index;
         unsigned int   total;
-
+        
         // Nothing to do for a module without a symbol table
         if (mods[midx].symtab == NULL)
             continue;
-
+        
         // Total entries in symbol table (class entries followed
         // by category entries)
         total = mods[midx].symtab->cls_def_cnt +
             mods[midx].symtab->cat_def_cnt;
-
-
-        trace(0xb123, midx, mods[midx].symtab->cat_def_cnt, 0);
-
+        
         // Minor loop - register all categories from given module
-        for (index = mods[midx].symtab->cls_def_cnt; index < total; index += 1)
-        {
-            _objc_register_category(mods[midx].symtab->defs[index], mods[midx].version, isDynamic && !all_modules_prebound);
+        index = total;
+        while (index-- > mods[midx].symtab->cls_def_cnt) {
+            struct objc_category *cat = mods[midx].symtab->defs[index];
+            _objc_register_category(cat, mods[midx].version);
+            add_category_to_loadable_list(cat);
         }
-
-        trace(0xb124, midx, 0, 0);
     }
-
-    trace(0xb12f, 0, 0, 0);
 }
 
 
@@ -703,24 +1053,21 @@ static void _objc_add_categories_from_image (header_info *  hi)
 **********************************************************************/
 static const header_info *_headerForAddress(void *addr)
 {
-    const struct segment_command *     objcSeg;
-    unsigned int                       size;
-    unsigned long                      vmaddrPlus;
+    unsigned long                      size;
+    unsigned long                      seg;
     header_info *              hInfo;
 
     // Check all headers in the vector
     for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
     {
         // Locate header data, if any
-        objcSeg = (struct segment_command *)hInfo->objcData;
-        size = hInfo->objcDataSize;
-        if (!objcSeg)
-            continue;
+        if (!hInfo->objcSegmentHeader) continue;
+        seg = hInfo->objcSegmentHeader->vmaddr + hInfo->image_slide;
+        size = hInfo->objcSegmentHeader->filesize;
 
         // Is the class in this header?
-        vmaddrPlus = (unsigned long) objcSeg->vmaddr + hInfo->image_slide;
-        if ((vmaddrPlus <= (unsigned long) addr) &&
-            ((unsigned long) addr < (vmaddrPlus + size)))
+        if ((seg <= (unsigned long) addr) &&
+            ((unsigned long) addr < (seg + size)))
             return hInfo;
     }
 
@@ -729,16 +1076,6 @@ static const header_info *_headerForAddress(void *addr)
 }
 
 
-/***********************************************************************
-* _headerForCategory
-* Return the image header containing this category, or NULL
-**********************************************************************/
-static const header_info *_headerForCategory(struct objc_category *cat)
-{
-    return _headerForAddress(cat);
-}
-
-
 /***********************************************************************
 * _headerForClass
 * Return the image header containing this class, or NULL.
@@ -751,220 +1088,731 @@ static const header_info *_headerForClass(struct objc_class *cls)
 
 
 /***********************************************************************
-* _moduleForClassFromImage
-* Returns the module containing the definition for a class, or NULL.
-* The class is assumed to be in the given image, and the module
-* returned will be in that image.
+* _nameForHeader.
 **********************************************************************/
-static Module _moduleForClassFromImage(struct objc_class *cls,
-                                       const header_info *hInfo)
+const char *   _nameForHeader         (const headerType *      header)
 {
-    Module mods = (Module)((unsigned long)hInfo->mod_ptr + hInfo->image_slide);
-    int m, d;
-    for (m = 0; m < hInfo->mod_count; m++) {
-        if (mods[m].symtab) {
-            for (d = 0; d < mods[m].symtab->cls_def_cnt; d++) {
-                if (cls == (struct objc_class *) mods[m].symtab->defs[d]) {
-                    return &mods[m];
-                }
-            }
-        }
-    }
-    return NULL;
+    return _getObjcHeaderName ((headerType *) header);
 }
 
 
 /***********************************************************************
-* _moduleForCategoryFromImage
-* Returns the module containing the definition for a category, or NULL.
-* The category is assumed to be in the given image, and the module
-* returned will be in that image.
+* class_is_connected.
+* Returns TRUE if class cls is connected. 
+* A connected class has either a connected superclass or a NULL superclass, 
+* and is present in class_hash.
 **********************************************************************/
-static Module _moduleForCategoryFromImage(struct objc_category *cat,
-                                          const header_info *hInfo)
+static BOOL class_is_connected(struct objc_class *cls)
 {
-    Module mods = (Module)((unsigned long)hInfo->mod_ptr + hInfo->image_slide);
-    int m, d;
-    for (m = 0; m < hInfo->mod_count; m++) {
-        if (mods[m].symtab) {
-            for (d = mods[m].symtab->cls_def_cnt;
-                 d < mods[m].symtab->cls_def_cnt + mods[m].symtab->cat_def_cnt;
-                 d++)
-            {
-                if (cat == (struct objc_category *) mods[m].symtab->defs[d]) {
-                    return &mods[m];
-                }
-            }
-        }
-    }
-    return NULL;
+    BOOL result;
+    OBJC_LOCK(&classLock);
+    result = NXHashMember(class_hash, cls);
+    OBJC_UNLOCK(&classLock);
+    return result;
 }
 
 
 /***********************************************************************
-* _nameForHeader.
+* pendingClassRefsMapTable.  Return a pointer to the lookup table for
+* pending class refs.
 **********************************************************************/
-const char *   _nameForHeader         (const headerType *      header)
+static inline NXMapTable *pendingClassRefsMapTable(void)
 {
-    return _getObjcHeaderName ((headerType *) header);
+    // Allocate table if needed
+    if (!pendingClassRefsMap) {
+        pendingClassRefsMap = 
+            NXCreateMapTableFromZone(NXStrValueMapPrototype, 
+                                     10, _objc_internal_zone ());
+    }
+    
+    // Return table pointer
+    return pendingClassRefsMap;
 }
 
+
 /***********************************************************************
-* checkForPendingClassReferences.  Complete any fixups registered for
-* this class.
+* pendingSubclassesMapTable.  Return a pointer to the lookup table for
+* pending subclasses.
 **********************************************************************/
-static void    _objc_checkForPendingClassReferences           (struct objc_class *     cls)
+static inline NXMapTable *pendingSubclassesMapTable(void)
 {
-    PendingClass *     pending;
-
-    // Nothing to do if there are no pending classes
-    if (!pendingClassRefsMap)
-        return;
-
-    // Get pending list for this class
-    pending = NXMapGet (pendingClassRefsMap, cls->name);
-    if (!pending)
-        return;
-
-    // Remove the list from the table
-    (void) NXMapRemove (pendingClassRefsMap, cls->name);
-
-    // Process all elements in the list
-    while (pending)
-    {
-        PendingClass * next;
-
-        // Remember follower for loop
-        next = pending->next;
-
-        // Fill in a pointer to Class
-        // (satisfies caller of objc_pendClassReference)
-        if (pending->ref)
-            *pending->ref = objc_getClass (cls->name);
-
-        // Fill in super, isa, cache, and version for the class
-        // and its meta-class
-        // (satisfies caller of objc_pendClassInstallation)
-        // NOTE: There must be no more than one of these for
-        // any given classToSetUp
-        if (pending->classToSetUp)
-        {
-            struct objc_class *        fixCls;
-
-            // Locate the Class to be fixed up
-            fixCls = pending->classToSetUp;
-
-            // Set up super class fields with names to be replaced by pointers
-            fixCls->super_class      = (struct objc_class *) pending->nameof_superclass;
-            fixCls->isa->super_class = (struct objc_class *) pending->nameof_superclass;
-
-            // Fix up class pointers, version, and cache pointers
-            _class_install_relationships (fixCls, pending->version);
-        }
-
-        // Reclaim the element
-        free (pending);
-
-        // Move on
-        pending = next;
+    // Allocate table if needed
+    if (!pendingSubclassesMap) {
+        pendingSubclassesMap = 
+            NXCreateMapTableFromZone(NXStrValueMapPrototype, 
+                                     10, _objc_internal_zone ());
     }
+    
+    // Return table pointer
+    return pendingSubclassesMap;
 }
 
-/***********************************************************************
-* newPending.  Allocate and zero a PendingClass structure.
-**********************************************************************/
-static inline PendingClass *   newPending             (void)
-{
-    PendingClass *     pending;
-
-    pending = (PendingClass *) malloc_zone_calloc (_objc_create_zone (), 1, sizeof(PendingClass));
-
-    return pending;
-}
 
 /***********************************************************************
-* pendingClassRefsMapTable.  Return a pointer to the lookup table for
-* pending classes.
+* pendClassInstallation
+* Finish connecting class cls when its superclass becomes connected.
+* Check for multiple pends of the same class because connect_class does not.
 **********************************************************************/
-static inline NXMapTable *     pendingClassRefsMapTable    (void)
+static void pendClassInstallation(struct objc_class *cls, 
+                                  const char *superName)
 {
-    // Allocate table if needed
-    if (!pendingClassRefsMap)
-        pendingClassRefsMap = NXCreateMapTableFromZone (NXStrValueMapPrototype, 10, _objc_create_zone ());
+    NXMapTable *table;
+    PendingSubclass *pending;
+    PendingSubclass *oldList;
+    PendingSubclass *l;
+    
+    // Create and/or locate pending class lookup table
+    table = pendingSubclassesMapTable ();
 
-    // Return table pointer
-    return pendingClassRefsMap;
+    // Make sure this class isn't already in the pending list.
+    oldList = NXMapGet (table, superName);
+    for (l = oldList; l != NULL; l = l->next) {
+        if (l->subclass == cls) return;  // already here, nothing to do
+    }
+    
+    // Create entry referring to this class
+    pending = _malloc_internal(sizeof(PendingSubclass));
+    pending->subclass = cls;
+    
+    // Link new entry into head of list of entries for this class
+    pending->next = oldList;
+    
+    // (Re)place entry list in the table
+    (void) NXMapKeyCopyingInsert (table, superName, pending);
 }
 
+
 /***********************************************************************
-* objc_pendClassReference.  Register the specified class pointer (ref)
-* to be filled in later with a pointer to the class having the specified
-* name.
+* pendClassReference
+* Fix up a class ref when the class with the given name becomes connected.
 **********************************************************************/
-void   objc_pendClassReference        (const char *    className,
-                                     struct objc_class * *             ref)
+static void pendClassReference(struct objc_class **ref, 
+                               const char *className)
 {
-    NXMapTable *               table;
-    PendingClass *             pending;
-
+    NXMapTable *table;
+    PendingClassRef *pending;
+    
     // Create and/or locate pending class lookup table
     table = pendingClassRefsMapTable ();
-
+    
     // Create entry containing the class reference
-    pending = newPending ();
+    pending = _malloc_internal(sizeof(PendingClassRef));
     pending->ref = ref;
-
+    
     // Link new entry into head of list of entries for this class
-    pending->next = NXMapGet (pendingClassRefsMap, className);
-
+    pending->next = NXMapGet (table, className);
+    
     // (Re)place entry list in the table
-    (void) NXMapInsert (table, className, pending);
+    (void) NXMapKeyCopyingInsert (table, className, pending);
+
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: pended reference to class '%s' at %p", 
+                     className, (void *)ref);
+    }
 }
 
+
 /***********************************************************************
-* objc_pendClassInstallation.  Register the specified class to have its
-* super class pointers filled in later because the superclass is not
-* yet found.
+* resolve_references_to_class
+* Fix up any pending class refs to this class.
 **********************************************************************/
-void   objc_pendClassInstallation     (struct objc_class *cls, int version)
+static void resolve_references_to_class(struct objc_class *cls)
 {
-    NXMapTable *               table;
-    PendingClass *             pending;
+    PendingClassRef *pending;
+    
+    if (!pendingClassRefsMap) return;  // no unresolved refs for any class
 
-    // Create and/or locate pending class lookup table
-    table = pendingClassRefsMapTable ();
+    pending = NXMapGet(pendingClassRefsMap, cls->name); 
+    if (!pending) return;  // no unresolved refs for this class
 
-    // Create entry referring to this class
-    pending = newPending ();
-    pending->classToSetUp         = cls;
-    pending->nameof_superclass = (const char *) cls->super_class;
-    pending->version      = version;
+    NXMapKeyFreeingRemove(pendingClassRefsMap, cls->name);
 
-    // Link new entry into head of list of entries for this class
-    pending->next                 = NXMapGet (pendingClassRefsMap, cls->super_class);
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: resolving references to class '%s'", cls->name);
+    }
 
-    // (Re)place entry list in the table
-    (void) NXMapInsert (table, cls->super_class, pending);
+    while (pending) {
+        PendingClassRef *next = pending->next;
+        if (pending->ref) *pending->ref = cls;
+        _free_internal(pending);
+        pending = next;
+    }
+
+    if (NXCountMapTable(pendingClassRefsMap) == 0) {
+        NXFreeMapTable(pendingClassRefsMap);
+        pendingClassRefsMap = NULL;
+    }
+}
+
+
+/***********************************************************************
+* resolve_subclasses_of_class
+* Fix up any pending subclasses of this class.
+**********************************************************************/
+static void resolve_subclasses_of_class(struct objc_class *cls)
+{
+    PendingSubclass *pending;
+    
+    if (!pendingSubclassesMap) return;  // no unresolved subclasses 
+
+    pending = NXMapGet(pendingSubclassesMap, cls->name); 
+    if (!pending) return;  // no unresolved subclasses for this class
+
+    NXMapKeyFreeingRemove(pendingSubclassesMap, cls->name);
+
+    // Destroy the pending table if it's now empty, to save memory.
+    if (NXCountMapTable(pendingSubclassesMap) == 0) {
+        NXFreeMapTable(pendingSubclassesMap);
+        pendingSubclassesMap = NULL;
+    }
+
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: resolving subclasses of class '%s'", cls->name);
+    }
+
+    while (pending) {
+        PendingSubclass *next = pending->next;
+        if (pending->subclass) connect_class(pending->subclass);
+        _free_internal(pending);
+        pending = next;
+    }
+}
+
+
+/***********************************************************************
+* get_base_method_list
+* Returns the method list containing the class's own methods, 
+* ignoring any method lists added by categories or class_addMethods. 
+* Called only by add_class_to_loadable_list. 
+* Does not hold methodListLock because add_class_to_loadable_list 
+* does not manipulate in-use classes.
+**********************************************************************/
+static struct objc_method_list *get_base_method_list(struct objc_class *cls) 
+{
+    struct objc_method_list **ptr;
+
+    if (!cls->methodLists) return NULL;
+    if (cls->info & CLS_NO_METHOD_ARRAY) return (struct objc_method_list *)cls->methodLists;
+    ptr = cls->methodLists;
+    if (!*ptr  ||  *ptr == END_OF_METHODS_LIST) return NULL;
+    while ( *ptr != 0 && *ptr != END_OF_METHODS_LIST ) { ptr++; }
+    --ptr;
+    return *ptr;
+}
+
+
+/***********************************************************************
+* add_class_to_loadable_list
+* Class cls has just become connected. Schedule it for +load if
+* it implements a +load method.
+**********************************************************************/
+static void add_class_to_loadable_list(struct objc_class *cls)
+{
+    IMP method = NULL;
+    struct objc_method_list *mlist;
+    
+    mlist = get_base_method_list(cls->isa);
+    if (mlist) {
+        method = lookupNamedMethodInMethodList (mlist, "load");
+    }
+    // Don't bother if cls has no +load method
+    if (!method) return;
+    
+    if (PrintLoading) {
+        _objc_inform("LOAD: class '%s' scheduled for +load", cls->name);
+    }
+    
+    if (loadable_classes_used == loadable_classes_allocated) {
+        loadable_classes_allocated = loadable_classes_allocated*2 + 16;
+        loadable_classes =
+            _realloc_internal(loadable_classes,
+                              loadable_classes_allocated *
+                              sizeof(struct loadable_class));
+    }
+    
+    loadable_classes[loadable_classes_used].cls = cls;
+    loadable_classes[loadable_classes_used].method = method;
+    loadable_classes_used++;
+}
+
+
+/***********************************************************************
+* add_category_to_loadable_list
+* Category cat's parent class exists and the category has been attached
+* to its class. Schedule this category for +load after its parent class
+* becomes connected and has its own +load method called.
+**********************************************************************/
+static void add_category_to_loadable_list(struct objc_category *cat)
+{
+    IMP method = NULL;
+    struct objc_method_list *mlist;
+
+    mlist = cat->class_methods;
+    if (mlist) {
+        method = lookupNamedMethodInMethodList (mlist, "load");
+    }
+    // Don't bother if cat has no +load method
+    if (!method) return;
+
+    if (PrintLoading) {
+        _objc_inform("LOAD: category '%s(%s)' scheduled for +load", 
+                     cat->class_name, cat->category_name);
+    }
+    
+    if (loadable_categories_used == loadable_categories_allocated) {
+        loadable_categories_allocated = loadable_categories_allocated*2 + 16;
+        loadable_categories =
+            _realloc_internal(loadable_categories,
+                              loadable_categories_allocated *
+                              sizeof(struct loadable_category));
+    }
+
+    loadable_categories[loadable_categories_used].cat = cat;
+    loadable_categories[loadable_categories_used].method = method;
+    loadable_categories_used++;
+}
+
+
+/***********************************************************************
+* remove_class_from_loadable_list
+* Class cls may have been loadable before, but it is now no longer 
+* loadable (because its image is being unmapped). 
+**********************************************************************/
+static void remove_class_from_loadable_list(struct objc_class *cls)
+{
+    if (loadable_classes) {
+        int i;
+        for (i = 0; i < loadable_classes_used; i++) {
+            if (loadable_classes[i].cls == cls) {
+                loadable_classes[i].cls = NULL;
+                if (PrintLoading) {
+                    _objc_inform("LOAD: class '%s' unscheduled for +load", cls->name);
+                }
+                return;
+            }
+        }
+    }
+}
+
+
+/***********************************************************************
+* remove_category_from_loadable_list
+* Category cat may have been loadable before, but it is now no longer 
+* loadable (because its image is being unmapped). 
+**********************************************************************/
+static void remove_category_from_loadable_list(struct objc_category *cat)
+{
+    if (loadable_categories) {
+        int i;
+        for (i = 0; i < loadable_categories_used; i++) {
+            if (loadable_categories[i].cat == cat) {
+                loadable_categories[i].cat = NULL;
+                if (PrintLoading) {
+                    _objc_inform("LOAD: category '%s(%s)' unscheduled for +load",
+                                 cat->class_name, cat->category_name);
+                }
+                return;
+            }
+        }
+    }
+}
+
+
+/***********************************************************************
+* call_class_loads
+* Call all pending class +load methods.
+* If new classes become loadable, +load is NOT called for them.
+*
+* Called only by call_load_methods().
+**********************************************************************/
+static void call_class_loads(void)
+{
+    int i;
+    
+    // Detach current loadable list.
+    struct loadable_class *classes = loadable_classes;
+    int used = loadable_classes_used;
+    loadable_classes = NULL;
+    loadable_classes_allocated = 0;
+    loadable_classes_used = 0;
+    
+    // Call all +loads for the detached list.
+    for (i = 0; i < used; i++) {
+        struct objc_class *cls = classes[i].cls;
+        IMP load_method = classes[i].method;
+        if (!cls) continue; 
+
+        if (PrintLoading) {
+            _objc_inform("LOAD: +[%s load]\n", cls->name);
+        }
+        (*load_method) ((id) cls, @selector(load));
+    }
+    
+    // Destroy the detached list.
+    if (classes) _free_internal(classes);
+}
+
+
+/***********************************************************************
+* call_category_loads
+* Call some pending category +load methods.
+* The parent class of the +load-implementing categories has all of 
+*   its categories attached, in case some are lazily waiting for +initalize.
+* Don't call +load unless the parent class is connected.
+* If new categories become loadable, +load is NOT called, and they 
+*   are added to the end of the loadable list, and we return TRUE.
+* Return FALSE if no new categories became loadable.
+*
+* Called only by call_load_methods().
+**********************************************************************/
+static BOOL call_category_loads(void)
+{
+    int i, shift;
+    BOOL new_categories_added = NO;
+    
+    // Detach current loadable list.
+    struct loadable_category *cats = loadable_categories;
+    int used = loadable_categories_used;
+    int allocated = loadable_categories_allocated;
+    loadable_categories = NULL;
+    loadable_categories_allocated = 0;
+    loadable_categories_used = 0;
+
+    // Call all +loads for the detached list.
+    for (i = 0; i < used; i++) {
+        struct objc_category *cat = cats[i].cat;
+        IMP load_method = cats[i].method;
+        struct objc_class *cls;
+        if (!cat) continue;
+
+        cls = objc_getClass(cat->class_name);
+        if (cls  &&  class_is_connected(cls)) {
+            if (PrintLoading) {
+                _objc_inform("LOAD: +[%s(%s) load]\n", 
+                             cls->name, cat->category_name);
+            }
+            (*load_method) ((id) cls, @selector(load));
+            cats[i].cat = NULL;
+        }
+    }
+
+    // Compact detached list (order-preserving)
+    shift = 0;
+    for (i = 0; i < used; i++) {
+        if (cats[i].cat) {
+            cats[i-shift] = cats[i];
+        } else {
+            shift++;
+        }
+    }
+    used -= shift;
+
+    // Copy any new +load candidates from the new list to the detached list.
+    new_categories_added = (loadable_categories_used > 0);
+    for (i = 0; i < loadable_categories_used; i++) {
+        if (used == allocated) {
+            allocated = allocated*2 + 16;
+            cats = _realloc_internal(cats, allocated * 
+                                     sizeof(struct loadable_category));
+        }
+        cats[used++] = loadable_categories[i];
+    }
+
+    // Destroy the new list.
+    if (loadable_categories) _free_internal(loadable_categories);
+
+    // Reattach the (now augmented) detached list. 
+    // But if there's nothing left to load, destroy the list.
+    if (used) {
+        loadable_categories = cats;
+        loadable_categories_used = used;
+        loadable_categories_allocated = allocated;
+    } else {
+        if (cats) _free_internal(cats);
+        loadable_categories = NULL;
+        loadable_categories_used = 0;
+        loadable_categories_allocated = 0;
+    }
+
+    if (PrintLoading) {
+        if (loadable_categories_used != 0) {
+            _objc_inform("LOAD: %d categories still waiting for +load\n",
+                         loadable_categories_used);
+        }
+    }
+
+    return new_categories_added;
+}
+
+
+/***********************************************************************
+* call_load_methods
+* Call all pending class and category +load methods.
+* Class +load methods are called superclass-first. 
+* Category +load methods are not called until after the parent class's +load.
+* 
+* This method must be RE-ENTRANT, because a +load could trigger 
+* more image mapping. In addition, the superclass-first ordering 
+* must be preserved in the face of re-entrant calls. Therefore, 
+* only the OUTERMOST call of this function will do anything, and 
+* that call will handle all loadable classes, even those generated 
+* while it was running.
+*
+* The sequence below preserves +load ordering in the face of 
+* image loading during a +load, and make sure that no 
+* +load method is forgotten because it was added during 
+* a +load call.
+* Sequence:
+* 1. Repeatedly call class +loads until there aren't any more
+* 2. Call category +loads ONCE.
+* 3. Run more +loads if:
+*    (a) there are more classes to load, OR
+*    (b) there are some potential category +loads that have 
+*        still never been attempted.
+* Category +loads are only run once to ensure "parent class first" 
+* ordering, even if a category +load triggers a new loadable class 
+* and a new loadable category attached to that class. 
+*
+* fixme this is not thread-safe, but neither is the rest of image mapping.
+**********************************************************************/
+static void call_load_methods(void)
+{
+    static pthread_t load_method_thread NOBSS = NULL;
+    BOOL more_categories;
+
+    if (load_method_thread) {
+        // +loads are already being called. Do nothing, but complain 
+        // if it looks like multithreaded use of this thread-unsafe code.
+
+        if (! pthread_equal(load_method_thread, pthread_self())) {
+            _objc_inform("WARNING: multi-threaded library loading detected "
+                         "(implementation is not thread-safe)");
+        }
+        return;
+    }
+    
+    // Nobody else is calling +loads, so we should do it ourselves.
+    load_method_thread = pthread_self();
+
+    do {
+        // 1. Repeatedly call class +loads until there aren't any more
+        while (loadable_classes_used > 0) {
+            call_class_loads();
+        }
+
+        // 2. Call category +loads ONCE
+        more_categories = call_category_loads();
+
+        // 3. Run more +loads if there are classes OR more untried categories
+    } while (loadable_classes_used > 0  ||  more_categories);
+
+    load_method_thread = NULL;
+}
+
+
+/***********************************************************************
+* really_connect_class
+* Connect cls to superclass supercls unconditionally.
+* Also adjust the class hash tables and handle +load and pended subclasses.
+*
+* This should be called from connect_class() ONLY.
+**********************************************************************/
+static void really_connect_class(struct objc_class *cls, 
+                                 struct objc_class *supercls)
+{
+    struct objc_class *oldCls;
+    struct objc_class *meta = cls->isa;
+
+    // Wire the classes together.
+    if (supercls) {
+        cls->super_class = supercls;
+        meta->super_class = supercls->isa;
+        meta->isa = supercls->isa->isa;
+    } else {        
+        cls->super_class = NULL; // superclass of root class is NULL
+        meta->super_class = cls; // superclass of root metaclass is root class
+        meta->isa = meta;      // metaclass of root metaclass is root metaclass
+    }
+
+    OBJC_LOCK(&classLock);
+
+    // Update hash tables. 
+    NXHashRemove(unconnected_class_hash, cls);
+    oldCls = NXHashInsert(class_hash, cls);
+
+    // Delete unconnected_class_hash if it is now empty.
+    if (NXCountHashTable(unconnected_class_hash) == 0) {
+        NXFreeHashTable(unconnected_class_hash);
+        unconnected_class_hash = NULL;
+    }
+
+    OBJC_UNLOCK(&classLock);
+
+    // Warn if the new class has the same name as a previously-installed class.
+    // The new class is kept and the old class is discarded.
+    if (oldCls) {
+        const header_info *oldHeader = _headerForClass(oldCls);
+        const header_info *newHeader = _headerForClass(cls);
+        const char *oldName = _nameForHeader(oldHeader->mhdr);
+        const char *newName = _nameForHeader(newHeader->mhdr);
+        
+        _objc_inform ("Both %s and %s have implementations of class %s.",
+                      oldName, newName, oldCls->name);
+        _objc_inform ("Using implementation from %s.", newName);
+    }
+    // Prepare for +load and connect newly-connectable subclasses
+    add_class_to_loadable_list(cls);
+    resolve_subclasses_of_class(cls);
+
+    // GC debugging: make sure all classes with -dealloc also have -finalize
+    if (CheckFinalizers) {
+        extern IMP findIMPInClass(Class cls, SEL sel);
+        if (findIMPInClass(cls, sel_getUid("dealloc"))  &&  
+            ! findIMPInClass(cls, sel_getUid("finalize")))
+        {
+            _objc_inform("GC: class '%s' implements -dealloc but not -finalize", cls->name);
+        }
+    }
+
+    // Debugging: if this class has ivars, make sure this class's ivars don't 
+    // overlap with its super's. This catches some broken fragile base classes.
+    // Do not use super->instance_size vs. self->ivar[0] to check this. 
+    // Ivars may be packed across instance_size boundaries.
+    if (DebugFragileSuperclasses  &&  cls->ivars  &&  cls->ivars->ivar_count) {
+        struct objc_class *ivar_cls = supercls;
+
+        // Find closest superclass that has some ivars, if one exists.
+        while (ivar_cls  &&  
+               (!ivar_cls->ivars || ivar_cls->ivars->ivar_count == 0))
+        {
+            ivar_cls = ivar_cls->super_class;
+        }
+
+        if (ivar_cls) {
+            // Compare superclass's last ivar to this class's first ivar
+            struct objc_ivar *super_ivar = 
+                &ivar_cls->ivars->ivar_list[ivar_cls->ivars->ivar_count - 1];
+            struct objc_ivar *self_ivar = 
+                &cls->ivars->ivar_list[0];
+
+            // fixme could be smarter about super's ivar size
+            if (self_ivar->ivar_offset <= super_ivar->ivar_offset) {
+                _objc_inform("WARNING: ivars of superclass '%s' and "
+                             "subclass '%s' overlap; superclass may have "
+                             "changed since subclass was compiled", 
+                             ivar_cls->name, cls->name);
+            }
+        }
+    }
+}
+
+
+/***********************************************************************
+* connect_class
+* Connect class cls to its superclasses, if possible.
+* If cls becomes connected, move it from unconnected_class_hash 
+*   to connected_class_hash.
+* Returns TRUE if cls is connected.
+* Returns FALSE if cls could not be connected for some reason 
+*   (missing superclass or still-unconnected superclass)
+**********************************************************************/
+static BOOL connect_class(struct objc_class *cls)
+{
+    if (class_is_connected(cls)) {
+        // This class is already connected to its superclass.
+        // Do nothing.
+        return TRUE;
+    }
+    else if (cls->super_class == NULL) {
+        // This class is a root class. 
+        // Connect it to itself. 
+
+        if (PrintConnecting) {
+            _objc_inform("CONNECT: class '%s' now connected (root class)", 
+                        cls->name);
+        }
+
+        really_connect_class(cls, NULL);
+        return TRUE;
+    }
+    else {
+        // This class is not a root class and is not yet connected.
+        // Connect it if its superclass and root class are already connected. 
+        // Otherwise, add this class to the to-be-connected list, 
+        // pending the completion of its superclass and root class.
+
+        // At this point, cls->super_class and cls->isa->isa are still STRINGS
+        char *supercls_name = (char *)cls->super_class;
+        struct objc_class *supercls;
+
+        // YES unconnected, YES class handler
+        if (NULL == (supercls = look_up_class(supercls_name, YES, YES))) {
+            // Superclass does not exist yet.
+            // pendClassInstallation will handle duplicate pends of this class
+            pendClassInstallation(cls, supercls_name);
+
+            if (PrintConnecting) {
+                _objc_inform("CONNECT: class '%s' NOT connected (missing super)", cls->name);
+            }
+            return FALSE;
+        }
+        
+        if (! connect_class(supercls)) {
+            // Superclass exists but is not yet connected.
+            // pendClassInstallation will handle duplicate pends of this class
+            pendClassInstallation(cls, supercls_name);
+
+            if (PrintConnecting) {
+                _objc_inform("CONNECT: class '%s' NOT connected (unconnected super)", cls->name);
+            }
+            return FALSE;
+        }
+
+        // Superclass exists and is connected. 
+        // Connect this class to the superclass.
+        
+        if (PrintConnecting) {
+            _objc_inform("CONNECT: class '%s' now connected", cls->name);
+        }
+
+        really_connect_class(cls, supercls);
+        return TRUE;
+    } 
 }
 
+
 /***********************************************************************
-* _objc_add_classes_from_image.  Install all classes contained in the
-* specified image.
+* _objc_read_classes_from_image.
+* Read classes from the given image, perform assorted minor fixups, 
+* Does not connect classes to superclasses. 
+* Does attach pended categories to the classes.
+* Adds all classes to unconnected_class_hash. class_hash is unchanged.
 **********************************************************************/
-static void    _objc_add_classes_from_image(NXHashTable *clsHash, header_info *hi)
+static void    _objc_read_classes_from_image(header_info *hi)
 {
     unsigned int       index;
     unsigned int       midx;
     Module             mods;
-    int                        isDynamic = (hi->mhdr->filetype == MH_DYLIB) || (hi->mhdr->filetype == MH_BUNDLE);
+    int                isBundle = (hi->mhdr->filetype == MH_BUNDLE);
 
     if (_objcHeaderIsReplacement(hi)) {
         // Ignore any classes in this image
         return;
     }
 
+    // class_hash starts small, enough only for libobjc itself. 
+    // If other Objective-C libraries are found, immediately resize 
+    // class_hash, assuming that Foundation and AppKit are about 
+    // to add lots of classes.
+    OBJC_LOCK(&classLock);
+    if (hi->mhdr != &_mh_dylib_header && _NXHashCapacity(class_hash) < 1024) {
+        _NXHashRehashToCapacity(class_hash, 1024);
+    }
+    OBJC_UNLOCK(&classLock);
+
     // Major loop - process all modules in the image
-    mods = (Module) ((unsigned long) hi->mod_ptr + hi->image_slide);
+    mods = hi->mod_ptr;
     for (midx = 0; midx < hi->mod_count; midx += 1)
     {
         // Skip module containing no classes
@@ -974,101 +1822,88 @@ static void     _objc_add_classes_from_image(NXHashTable *clsHash, header_info *hi)
         // Minor loop - process all the classes in given module
         for (index = 0; index < mods[midx].symtab->cls_def_cnt; index += 1)
         {
-            struct objc_class *        oldCls;
             struct objc_class *        newCls;
 
             // Locate the class description pointer
             newCls = mods[midx].symtab->defs[index];
 
-            // remember to bind the module on initialization
-            if (isDynamic  &&  !all_modules_prebound)
-                newCls->info |= CLS_NEED_BIND ;
-
-            // Convert old style method list to the new style
-            _objcTweakMethodListPointerForClass (newCls);
-
-            oldCls = NXHashInsert (clsHash, newCls);
-
-            // Non-Nil oldCls is a class that NXHashInsert just
-            // bumped from table because it has the same name
-            // as newCls
-            if (oldCls)
-            {
-                const header_info *    oldHeader;
-                const header_info *    newHeader;
-                const char *           oldName;
-                const char *           newName;
-
-                // Log the duplication
-                oldHeader = _headerForClass (oldCls);
-                newHeader = _headerForClass (newCls);
-                oldName   = _nameForHeader  (oldHeader->mhdr);
-                newName   = _nameForHeader  (newHeader->mhdr);
-                _objc_inform ("Both %s and %s have implementations of class %s.",
-                              oldName, newName, oldCls->name);
-                _objc_inform ("Using implementation from %s.", newName);
-
-                // Use the chosen class
-                // NOTE: Isn't this a NOP?
-                newCls = objc_lookUpClass (oldCls->name);
+            // Classes loaded from Mach-O bundles can be unloaded later.
+            // Nothing uses this class yet, so _class_setInfo is not needed.
+            if (isBundle) newCls->info |= CLS_FROM_BUNDLE;
+            if (isBundle) newCls->isa->info |= CLS_FROM_BUNDLE;
+
+            // Use common static empty cache instead of NULL
+            if (newCls->cache == NULL)
+                newCls->cache = (Cache) &emptyCache;
+            if (newCls->isa->cache == NULL)
+                newCls->isa->cache = (Cache) &emptyCache;
+
+            // Set metaclass version
+            newCls->isa->version = mods[midx].version;
+
+            // methodLists is NULL or a single list, not an array
+            newCls->info |= CLS_NO_METHOD_ARRAY;
+            newCls->isa->info |= CLS_NO_METHOD_ARRAY;
+            
+            // Install into unconnected_class_hash
+            OBJC_LOCK(&classLock);
+            if (!unconnected_class_hash) {
+                unconnected_class_hash = 
+                    NXCreateHashTableFromZone(classHashPrototype, 128, NULL, 
+                                              _objc_internal_zone());
             }
+            NXHashInsert(unconnected_class_hash, newCls);
+            OBJC_UNLOCK(&classLock);
 
-            // Unless newCls was a duplicate, and we chose the
-            // existing one instead, set the version in the meta-class
-            if (newCls != oldCls)
-                newCls->isa->version = mods[midx].version;
-
-            // Install new categories intended for this class
-            // NOTE: But, if we displaced an existing "isEqual"
-            // class, the categories have already been installed
-            // on an old class and are gone from the registry!!
-
-            // we defer this work until the class is initialized.
-            //_objc_resolve_categories_for_class (newCls);
-
-            // Resolve (a) pointers to the named class, and/or
-            // (b) the super_class, cache, and version
-            // fields of newCls and its meta-class
-            // NOTE: But, if we displaced an existing "isEqual"
-            // class, this has already been done... with an
-            // old-now-"unused" class!!
-            _objc_checkForPendingClassReferences (newCls);
+            // Fix up pended class refs to this class, if any
+            resolve_references_to_class(newCls);
 
+            // Attach pended categories for this class, if any
+            resolve_categories_for_class(newCls);
         }
     }
 }
 
+
 /***********************************************************************
-* _objc_fixup_string_objects_for_image.  Initialize the isa pointers
-* of all NSConstantString objects.
+* _objc_connect_classes_from_image.
+* Connect the classes in the given image to their superclasses,
+* or register them for later connection if any superclasses are missing.
 **********************************************************************/
-static void    _objc_fixup_string_objects_for_image   (header_info *   hi)
+static void _objc_connect_classes_from_image(header_info *hi)
 {
-    unsigned int                               size;
-    OBJC_CONSTANT_STRING_PTR   section;
-    struct objc_class *                                                constantStringClass;
-    unsigned int                               index;
-
-    // Locate section holding string objects
-    section = _getObjcStringObjects ((headerType *) hi->mhdr, &size);
-    if (!section || !size)
-        return;
-    section = (OBJC_CONSTANT_STRING_PTR) ((unsigned long) section + hi->image_slide);
-
-    // Luckily NXConstantString is the same size as NSConstantString
-    constantStringClass = objc_getClass ("NSConstantString");
+    unsigned int index;
+    unsigned int midx;
+    Module mods;
+    BOOL replacement = _objcHeaderIsReplacement(hi);
 
-    // Process each string object in the section
-    for (index = 0; index < size; index += 1)
+    // Major loop - process all modules in the image
+    mods = hi->mod_ptr;
+    for (midx = 0; midx < hi->mod_count; midx += 1)
     {
-        struct objc_class * *          isaptr;
+        // Skip module containing no classes
+        if (mods[midx].symtab == NULL)
+            continue;
 
-        isaptr = (struct objc_class * *) OBJC_CONSTANT_STRING_DEREF section[index];
-        if (*isaptr == 0)
-            *isaptr = constantStringClass;
+        // Minor loop - process all the classes in given module
+        for (index = 0; index < mods[midx].symtab->cls_def_cnt; index += 1)
+        {
+            struct objc_class *cls = mods[midx].symtab->defs[index];
+            if (! replacement) {
+                BOOL connected = connect_class(cls);
+                if (connected  &&  callbackFunction) {
+                    (*callbackFunction)(cls, 0);
+                }
+            } else {
+                // Replacement image - fix up super_class only (#3704817)
+                const char *super_name = (const char *) cls->super_class;
+                if (super_name) cls->super_class = objc_getClass(super_name);
+            }
+        }
     }
 }
 
+
 /***********************************************************************
 * _objc_map_class_refs_for_image.  Convert the class ref entries from
 * a class name string pointer to a class pointer.  If the class does
@@ -1097,58 +1932,106 @@ static void _objc_map_class_refs_for_image (header_info * hi)
         ref = (const char *) cls_refs[index];
 
         // Get pointer to class of this name
-        cls = (struct objc_class *)objc_lookUpClass (ref);
-
-        // If class isn't there yet, use pending mechanism
-        if (!cls)
-        {
-            // Register this ref to be set later
-            objc_pendClassReference (ref, &cls_refs[index]);
-
-            // Use place-holder class
+        // YES unconnected, YES class loader
+        cls = look_up_class(ref, YES, YES);
+        if (cls) {
+            // Referenced class exists. Fix up the reference.
+            cls_refs[index] = cls;
+        } else {
+            // Referenced class does not exist yet. Insert a placeholder 
+            // class and fix up the reference later.
+            pendClassReference (&cls_refs[index], ref);
             cls_refs[index] = _objc_getNonexistentClass ();
         }
-
-        // Replace name string pointer with class pointer
-        else
-            cls_refs[index] = cls;
     }
 }
 
+
+/***********************************************************************
+* _objc_remove_pending_class_refs_in_image
+* Delete any pending class ref fixups for class refs in the given image, 
+* because the image is about to be unloaded.
+**********************************************************************/
+static void _objc_remove_pending_class_refs_in_image(header_info *hi)
+{
+    struct objc_class **cls_refs, **cls_refs_end;
+    unsigned int size;
+
+    if (!pendingClassRefsMap) return;
+
+    // Locate class refs in this image
+    cls_refs = _getObjcClassRefs ((headerType *) hi->mhdr, &size);
+    if (!cls_refs)
+        return;
+    cls_refs = (struct objc_class **) ((uintptr_t)cls_refs + hi->image_slide);
+    cls_refs_end = (struct objc_class **)(size + (uintptr_t)cls_refs);
+
+    // Search the pending class ref table for class refs in this range.
+    // The class refs may have already been stomped with nonexistentClass, 
+    // so there's no way to recover the original class name.
+    
+    const char *key;
+    PendingClassRef *pending;
+    NXMapState  state = NXInitMapState(pendingClassRefsMap);
+    while(NXNextMapState(pendingClassRefsMap, &state, 
+                         (const void **)&key, (const void **)&pending)) 
+    {
+        for ( ; pending != NULL; pending = pending->next) {
+            if (pending->ref >= cls_refs  &&  pending->ref < cls_refs_end) {
+                pending->ref = NULL;
+            }
+        }
+    } 
+}
+
+
 /***********************************************************************
 * map_selrefs.  Register each selector in the specified array.  If a
 * given selector is already registered, update this array to point to
 * the registered selector string.
+* If copy is TRUE, all selector data is always copied. This is used 
+* for registering selectors from unloadable bundles, so the selector 
+* can still be used after the bundle's data segment is unmapped.
+* Returns YES if dst was written to, NO if it was unchanged.
 **********************************************************************/
-static inline void map_selrefs(SEL *sels, unsigned int cnt)
+static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy)
 {
-    unsigned int       index;
+    BOOL result = NO;
+    unsigned int cnt = size / sizeof(SEL);
+    unsigned int index;
 
     sel_lock();
 
     // Process each selector
     for (index = 0; index < cnt; index += 1)
     {
-        SEL    sel;
+        SEL sel;
 
         // Lookup pointer to uniqued string
-        sel = sel_registerNameNoCopyNoLock ((const char *) sels[index]);
+        sel = sel_registerNameNoLock((const char *) src[index], copy);
 
         // Replace this selector with uniqued one (avoid
         // modifying the VM page if this would be a NOP)
-        if (sels[index] != sel)
-            sels[index] = sel;
+        if (dst[index] != sel) {
+            dst[index] = sel;
+            result = YES;
+        }
     }
     
     sel_unlock();
+
+    return result;
 }
 
 
 /***********************************************************************
 * map_method_descs.  For each method in the specified method list,
 * replace the name pointer with a uniqued selector.
+* If copy is TRUE, all selector data is always copied. This is used 
+* for registering selectors from unloadable bundles, so the selector 
+* can still be used after the bundle's data segment is unmapped.
 **********************************************************************/
-static void  map_method_descs (struct objc_method_description_list * methods)
+static void  map_method_descs (struct objc_method_description_list * methods, BOOL copy)
 {
     unsigned int       index;
 
@@ -1164,7 +2047,7 @@ static void  map_method_descs (struct objc_method_description_list * methods)
         method = &methods->list[index];
 
         // Lookup pointer to uniqued string
-        sel = sel_registerNameNoCopyNoLock ((const char *) method->name);
+        sel = sel_registerNameNoLock((const char *) method->name, copy);
 
         // Replace this selector with uniqued one (avoid
         // modifying the VM page if this would be a NOP)
@@ -1191,6 +2074,7 @@ static void _objc_fixup_protocol_objects_for_image (header_info * hi)
     unsigned int       size;
     OBJC_PROTOCOL_PTR  protos;
     unsigned int       index;
+    int isBundle = hi->mhdr->filetype == MH_BUNDLE;
 
     // Locate protocols in the image
     protos = (OBJC_PROTOCOL_PTR) _getObjcProtocols ((headerType *) hi->mhdr, &size);
@@ -1205,11 +2089,11 @@ static void _objc_fixup_protocol_objects_for_image (header_info * hi)
     {
         // Selectorize the instance methods
         if (protos[index] OBJC_PROTOCOL_DEREF instance_methods)
-            map_method_descs (protos[index] OBJC_PROTOCOL_DEREF instance_methods);
+            map_method_descs (protos[index] OBJC_PROTOCOL_DEREF instance_methods, isBundle);
 
         // Selectorize the class methods
         if (protos[index] OBJC_PROTOCOL_DEREF class_methods)
-            map_method_descs (protos[index] OBJC_PROTOCOL_DEREF class_methods);
+            map_method_descs (protos[index] OBJC_PROTOCOL_DEREF class_methods, isBundle);
     }
 
     // Invoke Protocol class method to fix up the protocol
@@ -1232,363 +2116,389 @@ void _objc_bindModuleContainingList() {
     */
 }
 
-/**********************************************************************
-* _objc_bind_symbol.  Bind the module containing the symbol.  Use 2-level namespace API
-*    Only look in images that we know to have ObjC symbols (e.g. 9 for Mail 7/2001)
-*    Radar 2701686
-***********************************************************************/
-static void _objc_bind_symbol(const char *name)
-{
-    static header_info *lastHeader = NULL;
-    header_info *hInfo;
-    const headerType   *imageHeader = lastHeader ? lastHeader->mhdr : NULL;
 
-    // First assume there is some locality and search where we last found a symbol
-    if ( imageHeader
-        && NSIsSymbolNameDefinedInImage(imageHeader, name)
-        && NSLookupSymbolInImage(imageHeader, name, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND) != NULL )
-    {
-        // Found
-        return;
-    }
+/***********************************************************************
+* _objc_addHeader.
+**********************************************************************/
 
-    // Symbol wasn't found in the image we last searched
-    // Search in all the images known to contain ObjcC
-    for ( hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
-    {
-        if (_objcHeaderIsReplacement(hInfo)) {
-            continue; // no classes or categories used from image; skip it
-        }
-        imageHeader = hInfo->mhdr;
-        if ( hInfo != lastHeader
-             && NSIsSymbolNameDefinedInImage(imageHeader, name)
-             && NSLookupSymbolInImage(imageHeader, name, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND) != NULL )
-        {
-            // found
-            lastHeader = hInfo;
-            return;
-        }
-    }
-    // die now, or later ??
-    // _objc_fatal("could not find %s", name);
-}
-
-/***********************************************************************
-* _symbolNameForCategory
-* Constructs the symbol name for the given category.
-* The symbol name is ".objc_category_name_<classname>_<categoryname>",
-* where <classname> is the class name with the leading '%'s stripped.
-* The caller must free() the result.
-**********************************************************************/
-static char *_symbolNameForCategory(Category cat)
-{
-    char *             class_name;
-    char *             category_name;
-    char *             name;
-
-    class_name    = cat->class_name;
-    category_name = cat->category_name;
-
-    name = malloc(strlen(class_name) + strlen(category_name) + 30);
+// tested with 2; typical case is 4, but OmniWeb & Mail push it towards 20
+#define HINFO_SIZE 16
 
-    while (*class_name == '%')
-        class_name += 1;
-    strcpy (name, ".objc_category_name_");
-    strcat (name, class_name);
-    strcat (name, "_");
-    strcat (name, category_name);
-    return name;
-}
+static int HeaderInfoCounter NOBSS = 0;
+static header_info HeaderInfoTable[HINFO_SIZE] NOBSS = { {0} };
 
-/***********************************************************************
-* _symbolNameForClass
-* Constructs the symbol name for the given class.
-* The symbol name is ".objc_class_name_<classname>",
-* where <classname> is the class name with the leading '%'s stripped.
-* The caller must free() the result.
-**********************************************************************/
-static char *_symbolNameForClass(Class cls) 
+static header_info * _objc_addHeader(const struct mach_header *header)
 {
-    char *             name;
-    const char *       class_name;
+    int mod_count = 0;
+    uintptr_t mod_unslid;
+    uint32_t info_size = 0;
+    uintptr_t image_info_unslid;
+    const struct segment_command *objc_segment;
+    ptrdiff_t slide;
+    header_info *result;
 
-    class_name = cls->name;
+    // Locate the __OBJC segment
+    objc_segment = getsegbynamefromheader(header, SEG_OBJC);
+    if (!objc_segment) return NULL;
 
-    name = malloc(strlen(class_name) + 20);
+    // Locate some sections in the __OBJC segment
+    mod_unslid = (uintptr_t)_getObjcModules(header, &mod_count);
+    if (!mod_unslid) return NULL;
+    image_info_unslid = (uintptr_t)_getObjcImageInfo(header, &info_size);
 
-    while (*class_name == '%')
-        class_name += 1;
-    strcpy (name, ".objc_class_name_");
-    strcat (name, class_name);
-    return name;
-}
+    // Calculate vm slide.
+    slide = _getImageSlide(header);
 
 
-/***********************************************************************
-* _objc_bindClassIfNeeded.
-* If the given class is still marked as needs-bind, bind the module 
-*   containing it.
-* Called during _objc_call_loads_for_image just before sending +load, 
-*   and during class_initialize just before sending +initialize.
-**********************************************************************/
-void _objc_bindClassIfNeeded(struct objc_class *cls)
-{
-    // Clear NEED_BIND *after* binding to prevent race
-    // This assumes that simultaneous binding of one module by two threads is ok.
-    if (cls->info & CLS_NEED_BIND) {
-        _objc_bindModuleContainingClass(cls);
-        cls->info &= ~CLS_NEED_BIND;
+    // Find or allocate a header_info entry.
+    if (HeaderInfoCounter < HINFO_SIZE) {
+        result = &HeaderInfoTable[HeaderInfoCounter++];
+    } else {
+        result = _malloc_internal(sizeof(header_info));
     }
-}
 
+    // Set up the new header_info entry.
+    result->mhdr = header;
+    result->mod_ptr = (Module)(mod_unslid + slide);
+    result->mod_count  = mod_count;
+    result->image_slide        = slide;
+    result->objcSegmentHeader = objc_segment;
+    if (image_info_unslid) {
+        result->info = (objc_image_info *)(image_info_unslid + slide);
+    } else {
+        result->info = NULL;
+    }
 
-/***********************************************************************
-* _objc_bindModuleContainingCategory.  Bind the module containing the
-* category. If that module is already bound, do nothing.
-**********************************************************************/
-static void _objc_bindModuleContainingCategory(struct objc_category *cat)
-{
-    const header_info *hInfo;
-    
-    if (PrintBinding) {
-        _objc_inform("binding category %s(%s)",
-                     cat->class_name, cat->category_name);
+    // Make sure every copy of objc_image_info in this image is the same.
+    // This means same version and same bitwise contents.
+    if (result->info) {
+        objc_image_info *start = result->info;
+        objc_image_info *end = 
+            (objc_image_info *)(info_size + (uint8_t *)start);
+        objc_image_info *info = start;
+        while (info < end) {
+            // version is byte size, except for version 0
+            size_t struct_size = info->version;
+            if (struct_size == 0) struct_size = 2 * sizeof(uint32_t);
+            if (info->version != start->version  ||  
+                0 != memcmp(info, start, struct_size))
+            {
+                _objc_fatal("'%s' has inconsistently-compiled Objective-C "
+                            "code. Please recompile all code in it.", 
+                            _nameForHeader(header));
+            }
+            info = (objc_image_info *)(struct_size + (uint8_t *)info);
+        }
     }
-    
-    hInfo = _headerForCategory(cat);
-    if (hInfo) {
-        Module module = _moduleForCategoryFromImage(cat, hInfo);
-        if (module) {
-            _dyld_bind_objc_module(module);
-            return;
+
+    // Add the header to the header list. 
+    // The header is appended to the list, to preserve the bottom-up order.
+    result->next = NULL;
+    if (!FirstHeader) {
+        // list is empty
+        FirstHeader = LastHeader = result;
+    } else {
+        if (!LastHeader) {
+            // list is not empty, but LastHeader is invalid - recompute it
+            LastHeader = FirstHeader;
+            while (LastHeader->next) LastHeader = LastHeader->next;
         }
+        // LastHeader is now valid
+        LastHeader->next = result;
+        LastHeader = result;
     }
     
-    {
-        // Header-finding or module-finding shortcut didn't work.
-        // Bind using symbol name.
-        char *symbolName = _symbolNameForCategory(cat);
-        _objc_bind_symbol(symbolName);
-        free(symbolName);
-    }
+    return result;
 }
 
-    
+
 /***********************************************************************
-* _objc_bindModuleContainingClass.  Bind the module containing the
-* class. If that module is already bound, do nothing.
-* This is done lazily, just before calling +load or +initialize.
+* _objc_RemoveHeader
+* Remove the given header from the header list.
+* FirstHeader is updated. 
+* LastHeader is set to NULL. Any code that uses LastHeader must 
+* detect this NULL and recompute LastHeader by traversing the list.
 **********************************************************************/
-void _objc_bindModuleContainingClass(struct objc_class *cls)
+static void _objc_removeHeader(header_info *hi)
 {
-    const header_info *hInfo;
-    
-    if (PrintBinding) {
-        _objc_inform("binding class %s", cls->name);
-    }
-    
-    // Use the real class behind the poser
-    if (CLS_GETINFO (cls, CLS_POSING)) {
-        cls = getOriginalClassForPosingClass (cls);
-    }
-    
-    hInfo = _headerForClass(cls);
-    if (hInfo) {
-        Module module = _moduleForClassFromImage(cls, hInfo);
-        if (module) {
-            _dyld_bind_objc_module(module);
-            return;
+    header_info **hiP;
+
+    for (hiP = &FirstHeader; *hiP != NULL; hiP = &(**hiP).next) {
+        if (*hiP == hi) {
+            header_info *deadHead = *hiP;
+
+            // Remove from the linked list (updating FirstHeader if necessary).
+            *hiP = (**hiP).next;
+            
+            // Update LastHeader if necessary.
+            if (LastHeader == deadHead) {
+                LastHeader = NULL;  // will be recomputed next time it's used
+            }
+
+            // Free the memory, unless it was in the static HeaderInfoTable.
+            if (deadHead < HeaderInfoTable  ||
+                deadHead >= HeaderInfoTable + HINFO_SIZE)
+            {
+                _free_internal(deadHead);
+            }
+
+            break;
         }
     }
-    
-    {
-        // Module not bound, and header-finding or module-finding shortcut
-        // didn't work. Bind using symbol name.
-        // This happens for the NSCF class structs which are copied elsewhere.
-        char *symbolName = _symbolNameForClass(cls);
-        _objc_bind_symbol(symbolName);
-        free(symbolName);
-    }
 }
 
 
 /***********************************************************************
-* _objc_addHeader.
-*
+* check_gc
+* Check whether the executable supports or requires GC, and make sure 
+* all already-loaded libraries support the executable's GC mode.
+* Returns TRUE if the executable wants GC on.
 **********************************************************************/
-
-// tested with 2; typical case is 4, but OmniWeb & Mail push it towards 20
-#define HINFO_SIZE 16
-
-static int HeaderInfoCounter = 0;
-static header_info HeaderInfoTable[HINFO_SIZE] = { {0} };
-
-static header_info * _objc_addHeader(const headerType *header, unsigned long   vmaddr_slide)
+static BOOL check_wants_gc(void)
 {
-    int mod_count;
-    Module mod_ptr = _getObjcModules ((headerType *) header, &mod_count);
-    char *image_info_ptr = (char *)_getObjcImageInfo((headerType *)header);
-    header_info *result;
-    
-    // if there is no objc data - ignore this entry!
-    if (mod_ptr == NULL) {
-        return NULL;
-    }
-
-    if (HeaderInfoCounter < HINFO_SIZE) {
-        // avoid mallocs for the common case
-        result = &HeaderInfoTable[HeaderInfoCounter++];
+    // GC is off in Tiger.
+    return NO;
+    /*
+    const header_info *hi;
+    BOOL appWantsGC;
+
+    // Environment variables can override the following.
+    if (ForceGC) {
+        _objc_inform("GC: forcing GC ON because OBJC_FORCE_GC is set");
+        appWantsGC = YES;
+    } 
+    else if (ForceNoGC) {
+        _objc_inform("GC: forcing GC OFF because OBJC_FORCE_NO_GC is set");
+        appWantsGC = NO;
     }
     else {
-        result = malloc_zone_malloc(_objc_create_zone(), sizeof(header_info));
-    }
-
-    // Set up the new vector entry
-    result->mhdr = header;
-    result->mod_ptr = mod_ptr;
-    result->mod_count  = mod_count;
-    result->image_slide        = vmaddr_slide;
-    result->objcData = _getObjcHeaderData(header, &result->objcDataSize);
-    if (image_info_ptr) {
-        result->info = (objc_image_info *)(vmaddr_slide + image_info_ptr);
-    } else {
-        result->info = NULL;
+        // Find the executable and check its GC bits. 
+        // If the executable cannot be found, default to NO.
+        // (The executable will not be found if the executable contains 
+        // no Objective-C code.)
+        appWantsGC = NO;
+        for (hi = FirstHeader; hi != NULL; hi = hi->next) {
+            if (hi->mhdr->filetype == MH_EXECUTE) {
+                appWantsGC = _objcHeaderSupportsGC(hi) ? YES : NO;
+                if (PrintGC) {
+                    _objc_inform("GC: executable '%s' %s GC",
+                                 _nameForHeader(hi->mhdr), 
+                                 appWantsGC ? "supports" : "does not support");
+                }
+            }
+        }
     }
-
-    // chain it on
-    // (a simple lock here would go a long way towards thread safety)
-    result->next = FirstHeader;
-    FirstHeader = result;
-    
-    return result;
+    return appWantsGC;
+    */
 }
 
-/**********************************************************************
-* _objc_fatalHeader
-*
-* If we have it we're in trouble
-**************************************************************************/
-static void    _objc_fatalHeader(const headerType *header)
+/***********************************************************************
+* verify_gc_readiness
+* if we want gc, verify that every header describes files compiled
+* and presumably ready for gc.
+************************************************************************/
+
+static void verify_gc_readiness(BOOL wantsGC, header_info *hi) 
 {
-    header_info *hInfo;
+    BOOL busted = NO;
+
+    // Find the libraries and check their GC bits against the app's request
+    for (; hi != NULL; hi = hi->next) {
+        if (hi->mhdr->filetype == MH_EXECUTE) {
+            continue;
+        }
+        else if (hi->mhdr == &_mh_dylib_header) {
+            // libobjc itself works with anything even though it is not 
+            // compiled with -fobjc-gc (fixme should it be?)
+        } 
+        else if (wantsGC  &&  ! _objcHeaderSupportsGC(hi)) {
+            // App wants GC but library does not support it - bad
+            _objc_inform("'%s' was not compiled with -fobjc-gc, but "
+                         "the application requires GC",
+                         _nameForHeader(hi->mhdr));
+            busted = YES;
+        } 
+
+        if (PrintGC) {
+            _objc_inform("GC: library '%s' %s GC", _nameForHeader(hi->mhdr), 
+                         _objcHeaderSupportsGC(hi) ? "supports" : "does not support");
+        }
+    }
     
-    for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) {
-        if (hInfo->mhdr == header) {
-            _objc_fatal("cannot unmap an image containing ObjC data");
+    if (busted) {
+        // GC state is not consistent. 
+        // Kill the process unless one of the forcing flags is set.
+        if (!ForceGC  &&  !ForceNoGC) {
+            _objc_fatal("*** GC capability of application and some libraries did not match");
         }
     }
 }
 
+
 /***********************************************************************
 * _objc_fixup_selector_refs.  Register all of the selectors in each
 * image, and fix them all up.
-*
+* 
+* If the image is a dylib (not a bundle or an executable), and contains 
+* at least one full aligned page of selector refs, this function uses 
+* the shared range functions to try to recycle already-written memory 
+* from other processes. 
 **********************************************************************/
 static void _objc_fixup_selector_refs   (const header_info *   hi)
 {
-    unsigned int       size;
-    Module             mods;
-    SEL *              messages_refs;
+    unsigned int count;
+    Module mods;
+    vm_address_t local_sels;
+    vm_size_t local_size;
 
-    mods = (Module) ((unsigned long) hi->mod_ptr + hi->image_slide);
+    mods = hi->mod_ptr;
 
     // Fix up message refs
-    messages_refs = (SEL *) _getObjcMessageRefs ((headerType *) hi->mhdr, &size);
-    if (messages_refs)
-    {
-        messages_refs = (SEL *) ((unsigned long) messages_refs + hi->image_slide);
-        map_selrefs (messages_refs, size);
-    }
-}
-
-
-/***********************************************************************
-* _objc_call_loads_for_image.
-**********************************************************************/
-static void _objc_call_loads_for_image (header_info * header)
-{
-    struct objc_class *                cls;
-    struct objc_class * *      pClass;
-    Category *                 pCategory;
-    IMP                                load_method;
-    unsigned int               nModules;
-    unsigned int               nClasses;
-    unsigned int               nCategories;
-    struct objc_symtab *       symtab;
-    struct objc_module *       module;
+    local_sels = (vm_address_t) _getObjcMessageRefs ((headerType *) hi->mhdr, &count);
+    local_size = count * sizeof(SEL);
+    
+    if (local_sels) {
+        vm_address_t aligned_start, aligned_end;
+
+        local_sels = local_sels + hi->image_slide;
+        aligned_start = round_page(local_sels);
+        aligned_end = trunc_page(local_sels + local_size);
+        
+        if (aligned_start >= aligned_end  ||  
+            hi->mhdr->filetype == MH_BUNDLE  ||  
+            hi->mhdr->filetype == MH_EXECUTE) 
+        {
+            // Less than a page of sels, OR bundle or executable - fix in place
 
-    if (_objcHeaderIsReplacement(header)) {
-        return; // Don't call +load again
-    }
+            map_selrefs((SEL *)local_sels, (SEL *)local_sels, local_size, 
+                        hi->mhdr->filetype == MH_BUNDLE);
 
-    // Major loop - process all modules named in header
-    module = (struct objc_module *) ((unsigned long) header->mod_ptr + header->image_slide);
-    for (nModules = header->mod_count; nModules; nModules -= 1, module += 1)
-    {
-        symtab = module->symtab;
-        if (symtab == NULL)
-            continue;
+            if (PrintSharing) {
+                _objc_inform("SHARING: NONE  [%p..%p) (%d pages) for %s", 
+                             local_sels, local_sels+local_size, 
+                             (aligned_end > aligned_start ? 
+                              (aligned_end-aligned_start) / vm_page_size : 0), 
+                             _nameForHeader(hi->mhdr));
+            }
+        } 
+        else {
+            // At least one page of sels - try to use sharing
+            vm_range_t remote_range;
+            
+            if (PrintSharing) {
+                _objc_inform("SHARING: looking for range [%p..%p) ...", 
+                             aligned_start, aligned_end);
+            }
 
-        // Minor loop - call the +load from each class in the given module
-        for (nClasses = symtab->cls_def_cnt, pClass = (Class *) symtab->defs;
-             nClasses;
-             nClasses -= 1, pClass += 1)
-        {
-            struct objc_method_list **mlistp;
-            cls = (struct objc_class *)*pClass;
-            mlistp = get_base_method_list(cls->isa);
-            if (cls->isa->methodLists && mlistp)
-            {
-                // Look up the method manually (vs messaging the class) to bypass
-                // +initialize and cache fill on class that is not even loaded yet
-                load_method = class_lookupNamedMethodInMethodList (*mlistp, "load");
-                if (load_method) {
-                    _objc_bindClassIfNeeded(cls);
-                    (*load_method) ((id) cls, @selector(load));
+            remote_range = get_shared_range(aligned_start, aligned_end);
+
+            if (remote_range.address != 0) {
+                // Sharing succeeded - fix using remote_range
+                BOOL stomped;
+
+                // local_sels..aligned_start (unshared)
+                map_selrefs((SEL *)local_sels, (SEL *)local_sels, 
+                            aligned_start - local_sels, NO);
+                // aligned_start..aligned_end (shared)
+                stomped =
+                map_selrefs((SEL *)aligned_start, (SEL *)remote_range.address, 
+                            aligned_end - aligned_start, NO);
+                // aligned_end..local_sels+local_size (unshared)
+                map_selrefs((SEL *)aligned_end, (SEL *)aligned_end, 
+                            local_sels+local_size - aligned_end, NO);
+
+                install_shared_range(remote_range, aligned_start);
+
+                if (PrintSharing) {
+                    _objc_inform("SHARING: %s [%p..%p) (%d pages) for %s", 
+                                 stomped ? "TRIED" : "USING", 
+                                 local_sels, local_sels+local_size, 
+                                 (aligned_end-aligned_start) / vm_page_size,
+                                 _nameForHeader(hi->mhdr));
                 }
-            }
-        }
+            } 
+            else {
+                // Sharing failed, including first process - 
+                // fix in place and then offer to share
 
-        // Minor loop - call the +load from augmented class of
-        // each category in the given module
-        for (nCategories = symtab->cat_def_cnt,
-             pCategory = (Category *) &symtab->defs[symtab->cls_def_cnt];
-             nCategories;
-             nCategories -= 1, pCategory += 1)
-        {
-            struct objc_method_list *  methods;
+                map_selrefs((SEL *)local_sels, (SEL *)local_sels, local_size, NO);
 
-            methods = (*pCategory)->class_methods;
-            if (methods)
-            {
-                load_method = class_lookupNamedMethodInMethodList (methods, "load");
-                if (load_method) {
-                    // Strictly speaking we shouldn't need (and don't want) to get the class here
-                    // The side effect we're looking for is to load it if needed.
-                    // Since category +loads are rare we could spend some cycles finding out
-                    // if we have a "bindme" TBD and do it here, saving a class load.
-                    // But chances are the +load will cause class initialization anyway
-                    cls = objc_getClass ((*pCategory)->class_name);
-                    // the class & all categories are now bound in
-                    (*load_method) ((id) cls, @selector(load));
+                offer_shared_range(aligned_start, aligned_end);
+
+                if (PrintSharing) {
+                    _objc_inform("SHARING: OFFER [%p..%p) (%d pages) for %s", 
+                                 local_sels, local_sels+local_size, 
+                                 (aligned_end-aligned_start) / vm_page_size, 
+                                 _nameForHeader(hi->mhdr));
                 }
             }
         }
     }
 }
 
+
 /***********************************************************************
-* runtime configuration
+* objc_setConfiguration
+* Read environment variables that affect the runtime.
+* Also print environment variable help, if requested.
 **********************************************************************/
 static void objc_setConfiguration() {
-    if ( LaunchingDebug == -1 ) {
-        // watch image loading and binding
-        LaunchingDebug = getenv("LaunchingDebug") != NULL;
+    int PrintHelp = (getenv("OBJC_HELP") != NULL);
+    int PrintOptions = (getenv("OBJC_PRINT_OPTIONS") != NULL);
+    
+    if (PrintHelp) {
+        _objc_inform("OBJC_HELP: describe Objective-C runtime environment variables");
+        if (PrintOptions) {
+            _objc_inform("OBJC_HELP is set");
+        }
+        _objc_inform("OBJC_PRINT_OPTIONS: list which options are set");
+    }
+    if (PrintOptions) {
+        _objc_inform("OBJC_PRINT_OPTIONS is set");
     }
-    if ( PrintBinding == -1 ) {
-        PrintBinding = getenv("OBJC_PRINT_BIND") != NULL;
+    
+#define OPTION(var, env, help) \
+    if ( var == -1 ) { \
+        var = getenv(#env) != NULL; \
+        if (PrintHelp) _objc_inform(#env ": " help); \
+        if (PrintOptions && var) _objc_inform(#env " is set"); \
     }
+    
+    OPTION(PrintImages, OBJC_PRINT_IMAGES,
+           "log image and library names as the runtime loads them");
+    OPTION(PrintConnecting, OBJC_PRINT_CONNECTION,
+           "log progress of class and category connections");
+    OPTION(PrintLoading, OBJC_PRINT_LOAD_METHODS,
+           "log class and category +load methods as they are called");
+    OPTION(PrintRTP, OBJC_PRINT_RTP,
+           "log initialization of the Objective-C runtime pages");
+    OPTION(PrintGC, OBJC_PRINT_GC,
+           "log some GC operations");
+    OPTION(PrintSharing, OBJC_PRINT_SHARING,
+           "log cross-process memory sharing");
+    OPTION(PrintCxxCtors, OBJC_PRINT_CXX_CTORS, 
+           "log calls to C++ ctors and dtors for instance variables");
+
+    OPTION(DebugUnload, OBJC_DEBUG_UNLOAD,
+           "warn about poorly-behaving bundles when unloaded");
+    OPTION(DebugFragileSuperclasses, OBJC_DEBUG_FRAGILE_SUPERCLASSES, 
+           "warn about subclasses that may have been broken by subsequent changes to superclasses");
+
+    OPTION(UseInternalZone, OBJC_USE_INTERNAL_ZONE,
+           "allocate runtime data in a dedicated malloc zone");
+    OPTION(AllowInterposing, OBJC_ALLOW_INTERPOSING,
+           "allow function interposing of objc_msgSend()");
+
+    OPTION(ForceGC, OBJC_FORCE_GC,
+           "force GC ON, even if the executable wants it off");
+    OPTION(ForceNoGC, OBJC_FORCE_NO_GC,
+           "force GC OFF, even if the executable wants it on");
+    OPTION(CheckFinalizers, OBJC_CHECK_FINALIZERS, 
+           "warn about classes that implement -dealloc but not -finalize");
+#undef OPTION
 }
+
+
 /***********************************************************************
 * objc_setMultithreaded.
 **********************************************************************/
@@ -1613,263 +2523,476 @@ void _objc_pthread_destroyspecific(void *arg)
 
         // add further cleanup here...
 
-        free(data);
+        _free_internal(data);
     }
 }
 
 
 /***********************************************************************
-* _objcInit.
-* Library initializer called by dyld & from crt0
+* _objcInit
+* Former library initializer. This function is now merely a placeholder 
+* for external callers. All runtime initialization has now been moved 
+* to map_images().
 **********************************************************************/
+void _objcInit(void)
+{
+    // do nothing
+}
+
 
-void _objcInit(void) {
+/***********************************************************************
+* map_images
+* Process the given images which are being mapped in by dyld.
+* All class registration and fixups are performed (or deferred pending
+* discovery of missing superclasses etc), and +load methods are called.
+*
+* info[] is in bottom-up order i.e. libobjc will be earlier in the 
+* array than any library that links to libobjc.
+**********************************************************************/
+static void map_images(const struct dyld_image_info infoList[], 
+                       uint32_t infoCount)
+{
+    static BOOL firstTime = YES;
+    static BOOL wantsGC NOBSS = NO;
+    uint32_t i;
+    header_info *firstNewHeader = NULL;
     header_info *hInfo;
-    static int _done = 0;
-    extern void __CFInitialize(void);
-    extern int ptrace(int, int, int, int);     // a system call visible to sc_trace
 
-    /* Protect against multiple invocations, as all library
-        * initializers should. */
-    if (0 != _done) return;
-    _done = 1;
+    // Perform first-time initialization if necessary.
+    // This function is called before ordinary library initializers. 
+    if (firstTime) {
+        pthread_key_create(&_objc_pthread_key, _objc_pthread_destroyspecific);
+        objc_setConfiguration();   // read environment variables
+        _objc_init_class_hash ();  // create class_hash
+        // grab selectors for which @selector() doesn't work
+        cxx_construct_sel = sel_registerName(cxx_construct_name);
+        cxx_destruct_sel  = sel_registerName(cxx_destruct_name);
+    }
 
-    ptrace(0xb000, 0, 0, 0);
-    trace(0xb000, 0, 0, 0);
+    if (PrintImages) {
+        _objc_inform("IMAGES: processing %u newly-mapped images...\n", infoCount);
+    }
 
-    // make sure CF is initialized before we go further;
-    // someday this can be removed, as it'll probably be automatic
-    __CFInitialize();
-    
-    pthread_key_create(&_objc_pthread_key, _objc_pthread_destroyspecific);
 
-    // Create the class lookup table
-    _objc_init_class_hash ();
+    // Find all images with an __OBJC segment.
+    // firstNewHeader is set the the first one, and the header_info 
+    // linked list following firstNewHeader is the rest.
+    for (i = 0; i < infoCount; i++) {
+        const struct mach_header *mhdr = infoList[i].imageLoadAddress;
 
-    trace(0xb001, 0, 0, 0);
+        hInfo = _objc_addHeader(mhdr);
+        if (!hInfo) {
+            // no objc data in this entry
+            if (PrintImages) {
+                _objc_inform("IMAGES: image '%s' contains no __OBJC segment\n",
+                             infoList[i].imageFilePath);
+            }
+            continue;
+        }
 
-    objc_setConfiguration();    // Get our configuration
-    
-    trace(0xb003, 0, 0, 0);
+        if (!firstNewHeader) firstNewHeader = hInfo;
+        
+        if (PrintImages) {
+            _objc_inform("IMAGES: loading image for %s%s%s%s\n", 
+                         _nameForHeader(mhdr), 
+                         mhdr->filetype == MH_BUNDLE ? " (bundle)" : "", 
+                         _objcHeaderIsReplacement(hInfo) ? " (replacement)":"",
+                         _objcHeaderSupportsGC(hInfo) ? " (supports GC)":"");
+        }
+    }
 
-    // a pre-cheetah comment:
-    // XXXXX BEFORE HERE *NO* PAGES ARE STOMPED ON;
+    // Perform one-time runtime initialization that must be deferred until 
+    // the executable itself is found. This needs to be done before 
+    // further initialization.
+    // (The executable may not be present in this infoList if the 
+    // executable does not contain Objective-C code but Objective-C 
+    // is dynamically loaded later. In that case, check_wants_gc() 
+    // will do the right thing.)
+    if (firstTime) {
+        wantsGC = check_wants_gc();
+        verify_gc_readiness(wantsGC, FirstHeader);
+        // TIGER DEVELOPMENT ONLY
+        // REQUIRE A SPECIAL NON-SHIPPING FILE TO ENABLE GC
+        if (wantsGC) {
+            // make sure that the special file is there before proceeding with GC
+            struct stat ignored;
+            wantsGC = stat("/autozone", &ignored) != -1;
+            if (!wantsGC && PrintGC)
+                _objc_inform("GC: disabled, lacking /autozone file");
+        }
+                                                                                          
+        gc_init(wantsGC);           // needs executable for GC decision
+        rtp_init();                 // needs GC decision first
+    } else {
+        verify_gc_readiness(wantsGC, firstNewHeader);
+    }
 
-    // Register our image mapping routine with dyld so it
-    // gets invoked when an image is added.  This also invokes
-    // the callback right now on any images already present.
 
-    // The modules present in the application and the existing
-    // mapped images are treated differently than a newly discovered
-    // mapped image - we process all modules for classes before
-    // trying to install_relationships (glue up their superclasses)
-    // or trying to send them any +load methods.
+    // Initialize everything. Parts of this order are important for 
+    // correctness or performance.
 
-    // So we tell the map_image dyld callback to not do this part...
+    // Read classes from all images.
+    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
+        _objc_read_classes_from_image(hInfo);
+    }
 
-    Postpone_install_relationships = 1;
+    // Read categories from all images. 
+    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
+        _objc_read_categories_from_image(hInfo);
+    }
 
-    // register for unmapping first so we can't miss any during load attempts
-    _dyld_register_func_for_remove_image (&_objc_unmap_image);
+    // Connect classes from all images.
+    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
+        _objc_connect_classes_from_image(hInfo);
+    }
 
-    // finally, register for images
-    _dyld_register_func_for_add_image (&_objc_map_image);
+    // Fix up class refs, selector refs, and protocol objects from all images.
+    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
+        _objc_map_class_refs_for_image(hInfo);
+        _objc_fixup_selector_refs(hInfo);
+        _objc_fixup_protocol_objects_for_image(hInfo);
+    }
 
-    // a pre-cheetah comment:
-    // XXXXX BEFORE HERE *ALL* PAGES ARE STOMPED ON
+    // Close any shared range file left open during selector uniquing
+    clear_shared_range_file_cache();
 
-    Postpone_install_relationships  = 0;
+    firstTime = NO;
 
-    trace(0xb006, 0, 0, 0);
-    
-    // Install relations on classes that were found
-    for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
-    {
-        int                    nModules;
-        int                    index;
-        struct objc_module *   module;
-        struct objc_class *    cls;
+    // Call pending +load methods.
+    // Note that this may in turn cause map_images() to be called again.
+    call_load_methods();
+}
 
-        module = (struct objc_module *) ((unsigned long) hInfo->mod_ptr + hInfo->image_slide);
-        for (nModules = hInfo->mod_count; nModules; nModules--, module++)
-        {
-            if (module->symtab) {
-                for (index = 0; index < module->symtab->cls_def_cnt; index++)
-                {
-                    cls = (struct objc_class *) module->symtab->defs[index];
-                    _class_install_relationships (cls, module->version);
-                }
-            }
-        }
 
-        trace(0xb007, hInfo, hInfo->mod_count, 0);
+/***********************************************************************
+* unmap_images
+* Process the given images which are about to be unmapped by dyld.
+* Currently we assume only MH_BUNDLE images are unmappable, and 
+* print warnings about anything else.
+**********************************************************************/
+static void unmap_images(const struct dyld_image_info infoList[], 
+                         uint32_t infoCount)
+{
+    uint32_t i;
 
+    if (PrintImages) {
+        _objc_inform("IMAGES: processing %u newly-unmapped images...\n", infoCount);
     }
 
-    trace(0xb008, 0, 0, 0);
+    for (i = 0; i < infoCount; i++) {
+        const struct mach_header *mhdr = infoList[i].imageLoadAddress;
 
-    for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
-    {
-        // Initialize the isa pointers of all NXConstantString objects
-        (void)_objc_fixup_string_objects_for_image (hInfo);
-
-        // Convert class refs from name pointers to ids
-        (void)_objc_map_class_refs_for_image (hInfo);
+        if (mhdr->filetype == MH_BUNDLE) {
+            _objc_unmap_image(mhdr);
+        } else {
+            // currently only MH_BUNDLEs can be unmapped safely
+            if (PrintImages) {
+                _objc_inform("IMAGES: unmapped image '%s' was not a Mach-O bundle; ignoring\n", infoList[i].imageFilePath);
+            }
+        }
     }
-
-    trace(0xb00a, 0, 0, 0);
-
-    // For each image selectorize the method names and +_fixup each of
-    // protocols in the image
-    for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
-        _objc_fixup_protocol_objects_for_image (hInfo);
-
-    for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
-        _objc_call_loads_for_image (hInfo);
-    
-    ptrace(0xb00f, 0, 0, 0);   // end of __initialize_objc ObjC init
-    trace(0xb00f, 0, 0, 0);    // end of __initialize_objc ObjC init
 }
 
 
 /***********************************************************************
-* _objc_map_image.
+* _objc_notify_images
+* Callback from dyld informing objc of images to be added or removed.
+* This function is never called directly. Instead, a section 
+* __OBJC,__image_notify contains a function pointer to this, and dyld 
+* discovers it from there.
 **********************************************************************/
-static void    _objc_map_image(headerType *mh, unsigned long   vmaddr_slide)
+__private_extern__ 
+void _objc_notify_images(enum dyld_image_mode mode, uint32_t infoCount, 
+                         const struct dyld_image_info infoList[])
 {
-    static int dumpClasses = -1;
-    header_info *hInfo;
-
-    if ( dumpClasses == -1 ) {
-        if ( getenv("OBJC_DUMP_CLASSES") ) dumpClasses = 1;
-        else dumpClasses = 0;
+    if (mode == dyld_image_adding) {
+        map_images(infoList, infoCount);
+    } else if (mode == dyld_image_removing) {
+        unmap_images(infoList, infoCount);
     }
+}
 
-    trace(0xb100, 0, 0, 0);
 
-    // Add this header to the chain
-    hInfo = _objc_addHeader (mh, vmaddr_slide);
+/***********************************************************************
+* _objc_remove_classes_in_image
+* Remove all classes in the given image from the runtime, because 
+* the image is about to be unloaded.
+* Things to clean up:
+*   class_hash
+*   unconnected_class_hash
+*   pending subclasses list (only if class is still unconnected)
+*   loadable class list
+*   class's method caches
+*   class refs in all other images
+**********************************************************************/
+static void    _objc_remove_classes_in_image(header_info *hi)
+{
+    unsigned int       index;
+    unsigned int       midx;
+    Module             mods;
 
-    if (!hInfo) return;
+    OBJC_LOCK(&classLock);
     
-    if (LaunchingDebug) { 
-        _objc_syslog("objc_map_image for %s%s\n", 
-                     _nameForHeader(mh), 
-                     _objcHeaderIsReplacement(hInfo) ? " (replacement)" : "");
-    }
-
-    trace(0xb101, 0, 0, 0);
-
-    // Check if all loaded libraries up to and including this one are prebound
-    // SPI introduced in Panther (Mac OS X 10.3)
-    all_modules_prebound = _dyld_all_twolevel_modules_prebound();
-    if (PrintBinding) {
-        static int warned = -1;
-        if (warned != all_modules_prebound) {
-            _objc_inform("objc: binding: all_modules_prebound is now %d", 
-                         all_modules_prebound);
-            warned = all_modules_prebound;
+    // Major loop - process all modules in the image
+    mods = hi->mod_ptr;
+    for (midx = 0; midx < hi->mod_count; midx += 1)
+    {
+        // Skip module containing no classes
+        if (mods[midx].symtab == NULL)
+            continue;
+        
+        // Minor loop - process all the classes in given module
+        for (index = 0; index < mods[midx].symtab->cls_def_cnt; index += 1)
+        {
+            struct objc_class *        cls;
+            
+            // Locate the class description pointer
+            cls = mods[midx].symtab->defs[index];
+
+            // Remove from loadable class list, if present
+            remove_class_from_loadable_list(cls);
+
+            // Remove from unconnected_class_hash and pending subclasses
+            if (unconnected_class_hash  &&  NXHashMember(unconnected_class_hash, cls)) {
+                NXHashRemove(unconnected_class_hash, cls);
+                if (pendingSubclassesMap) {
+                    // Find this class in its superclass's pending list
+                    char *supercls_name = (char *)cls->super_class;
+                    PendingSubclass *pending = 
+                        NXMapGet(pendingSubclassesMap, supercls_name);
+                    for ( ; pending != NULL; pending = pending->next) {
+                        if (pending->subclass == cls) {
+                            pending->subclass = Nil;
+                            break;
+                        }
+                    }
+                }
+            }
+            
+            // Remove from class_hash
+            NXHashRemove(class_hash, cls);
+
+            // Free method list array (from objcTweakMethodListPointerForClass)
+            // These blocks might be from user code; don't use free_internal
+            if (cls->methodLists && !(cls->info & CLS_NO_METHOD_ARRAY)) {
+                free(cls->methodLists);
+            }
+            if (cls->isa->methodLists && !(cls->isa->info & CLS_NO_METHOD_ARRAY)) {
+                free(cls->isa->methodLists);
+            }
+            
+            // Free method caches, if any
+            if (cls->cache  &&  cls->cache != &emptyCache) {
+                _free_internal(cls->cache);
+            }
+            if (cls->isa->cache  &&  cls->isa->cache != &emptyCache) {
+                _free_internal(cls->isa->cache);
+            }
         }
     }
 
-    // Register any categories and/or classes and/or selectors this image contains
-    _objc_add_categories_from_image (hInfo);
 
-    trace(0xb103, 0, 0, 0);
+    // Search all other images for class refs that point back to this range.
+    // Un-fix and re-pend any such class refs.
 
-    _objc_add_classes_from_image (class_hash, hInfo);
+    // Get the location of the dying image's __OBJC segment
+    uintptr_t seg = hi->objcSegmentHeader->vmaddr + hi->image_slide;
+    size_t seg_size = hi->objcSegmentHeader->filesize;
 
-    trace(0xb104, 0, 0, 0);
+    header_info *other_hi;
+    for (other_hi = FirstHeader; other_hi != NULL; other_hi = other_hi->next) {
+        struct objc_class **other_refs;
+        unsigned int size;
+        if (other_hi == hi) continue;  // skip the image being unloaded
 
-    _objc_fixup_selector_refs (hInfo);
+        // Locate class refs in the other image
+        other_refs = _getObjcClassRefs((headerType *)other_hi->mhdr, &size);
+        if (!other_refs) continue;
+        other_refs = (struct objc_class **)((uintptr_t)other_refs + other_hi->image_slide);
 
-    trace(0xb105, 0, 0, 0);
-
-    // Log all known class names, if asked
-    if ( dumpClasses )
-    {
-        printf ("classes...\n");
-        objc_dump_class_hash ();
+        // Process each class ref
+        for (index = 0; index < size; index++) {
+            if ((uintptr_t)(other_refs[index]) >= seg  &&  
+                (uintptr_t)(other_refs[index]) < seg+seg_size) 
+            {
+                pendClassReference(&other_refs[index],other_refs[index]->name);
+                other_refs[index] = _objc_getNonexistentClass ();
+            }
+        }
     }
 
-    if (!Postpone_install_relationships)
-    {
-        int                    nModules;
-        int                    index;
-        struct objc_module *   module;
-
-        // Major loop - process each module
-        module = (struct objc_module *) ((unsigned long) hInfo->mod_ptr + hInfo->image_slide);
-
-        trace(0xb106, hInfo->mod_count, 0, 0);
-
-        for (nModules = hInfo->mod_count; nModules; nModules--, module++)
-        {
-            if (!module->symtab) continue;
-
-            // Minor loop - process each class in a given module
-            for (index = 0; index < module->symtab->cls_def_cnt; index += 1)
-            {
-                struct objc_class * cls;
+    OBJC_UNLOCK(&classLock);
+}
 
-                // Locate the class description
-                cls = (struct objc_class *) module->symtab->defs[index];
 
-                // If there is no superclass or the superclass can be found,
-                // install this class, and invoke the expected callback
-                if (!((struct objc_class *)cls)->super_class || objc_lookUpClass ((char *) ((struct objc_class *)cls)->super_class))
-                {
-                    _class_install_relationships (cls, module->version);
-                    if (callbackFunction)
-                        (*callbackFunction) (cls, 0);
-                }
-                else
-                {
-                    // Super class can not be found yet, arrange for this class to
-                    // be filled in later
-                    objc_pendClassInstallation (cls, module->version);
-                    ((struct objc_class *)cls)->super_class      = _objc_getNonexistentClass ();
-                    ((struct objc_class *)cls)->isa->super_class = _objc_getNonexistentClass ();
+/***********************************************************************
+* _objc_remove_categories_in_image
+* Remove all categories in the given image from the runtime, because 
+* the image is about to be unloaded.
+* Things to clean up:
+*    unresolved category list
+*    loadable category list
+**********************************************************************/
+static void    _objc_remove_categories_in_image(header_info *hi)
+{
+    Module mods;
+    unsigned int midx;
+    
+    // Major loop - process all modules in the header
+    mods = hi->mod_ptr;
+    
+    for (midx = 0; midx < hi->mod_count; midx++) {
+        unsigned int index;
+        unsigned int total;
+        Symtab symtab = mods[midx].symtab;
+        
+        // Nothing to do for a module without a symbol table
+        if (symtab == NULL) continue;
+        
+        // Total entries in symbol table (class entries followed
+        // by category entries)
+        total = symtab->cls_def_cnt + symtab->cat_def_cnt;
+        
+        // Minor loop - check all categories from given module
+        for (index = symtab->cls_def_cnt; index < total; index++) {
+            struct objc_category *cat = symtab->defs[index];
+
+            // Clean up loadable category list
+            remove_category_from_loadable_list(cat);
+
+            // Clean up category_hash
+            if (category_hash) {
+                _objc_unresolved_category *cat_entry = 
+                    NXMapGet(category_hash, cat->class_name);
+                for ( ; cat_entry != NULL; cat_entry = cat_entry->next) {
+                    if (cat_entry->cat == cat) {
+                        cat_entry->cat = NULL;
+                        break;
+                    }
                 }
             }
         }
+    }
+}
 
-        trace(0xb108, 0, 0, 0);
-
-        // Initialize the isa pointers of all NXConstantString objects
-        _objc_fixup_string_objects_for_image (hInfo);
-
-        trace(0xb109, 0, 0, 0);
 
-        // Convert class refs from name pointers to ids
-        _objc_map_class_refs_for_image (hInfo);
+/***********************************************************************
+* unload_paranoia
+* Various paranoid debugging checks that look for poorly-behaving 
+* unloadable bundles. 
+* Called by _objc_unmap_image when OBJC_UNLOAD_DEBUG is set.
+**********************************************************************/
+static void unload_paranoia(header_info *hi) 
+{
+    // Get the location of the dying image's __OBJC segment
+    uintptr_t seg = hi->objcSegmentHeader->vmaddr + hi->image_slide;
+    size_t seg_size = hi->objcSegmentHeader->filesize;
 
-        trace(0xb10a, 0, 0, 0);
+    _objc_inform("UNLOAD DEBUG: unloading image '%s' [%p..%p]", 
+                 _nameForHeader(hi->mhdr), seg, seg+seg_size);
 
-        // Selectorize the method names and +_fixup each of
-        // protocols in the image
-        _objc_fixup_protocol_objects_for_image (hInfo);
+    OBJC_LOCK(&classLock);
 
-        trace(0xb10b, 0, 0, 0);
+    // Make sure the image contains no categories on surviving classes.
+    {
+        Module mods;
+        unsigned int midx;
+
+        // Major loop - process all modules in the header
+        mods = hi->mod_ptr;
+        
+        for (midx = 0; midx < hi->mod_count; midx++) {
+            unsigned int index;
+            unsigned int total;
+            Symtab symtab = mods[midx].symtab;
+
+            // Nothing to do for a module without a symbol table
+            if (symtab == NULL) continue;
+            
+            // Total entries in symbol table (class entries followed
+            // by category entries)
+            total = symtab->cls_def_cnt + symtab->cat_def_cnt;
+            
+            // Minor loop - check all categories from given module
+            for (index = symtab->cls_def_cnt; index < total; index++) {
+                struct objc_category *cat = symtab->defs[index];
+                struct objc_class query;
+
+                query.name = cat->class_name;
+                if (NXHashMember(class_hash, &query)) {
+                    _objc_inform("UNLOAD DEBUG: dying image contains category '%s(%s)' on surviving class '%s'!", cat->class_name, cat->category_name, cat->class_name);
+                }
+            }
+        }
+    }
 
-        // Call +load on all classes and categorized classes
-        _objc_call_loads_for_image (hInfo);
+    // Make sure no surviving class is in the dying image.
+    // Make sure no surviving class has a superclass in the dying image.
+    // fixme check method implementations too
+    {
+        struct objc_class *cls;
+        NXHashState state;
 
-        trace(0xb10c, 0, 0, 0);
+        state = NXInitHashState(class_hash);
+        while (NXNextHashState(class_hash, &state, (void **)&cls)) {
+            if ((vm_address_t)cls >= seg  && 
+                (vm_address_t)cls < seg+seg_size) 
+            {
+                _objc_inform("UNLOAD DEBUG: dying image contains surviving class '%s'!", cls->name);
+            }
+            
+            if ((vm_address_t)cls->super_class >= seg  &&  
+                (vm_address_t)cls->super_class < seg+seg_size)
+            {
+                _objc_inform("UNLOAD DEBUG: dying image contains superclass '%s' of surviving class '%s'!", cls->super_class->name, cls->name);
+            }
+        }
     }
 
-    trace(0xb10f, 0, 0, 0);
+    OBJC_UNLOCK(&classLock);
 }
 
+
 /***********************************************************************
 * _objc_unmap_image.
+* Destroy any Objective-C data for the given image, which is about to 
+* be unloaded by dyld.
+* Note: not thread-safe, but image loading isn't either.
 **********************************************************************/
-static void    _objc_unmap_image(headerType *mh, unsigned long vmaddr_slide) {
-    // we shouldn't have it if it didn't have objc data
-    // if we do have it, do a fatal
-    _objc_fatalHeader(mh);
+static void    _objc_unmap_image(const headerType *mh) 
+{
+    header_info *hi;
+    
+    // Find the runtime's header_info struct for the image
+    for (hi = FirstHeader; hi != NULL; hi = hi->next) {
+        if (hi->mhdr == mh) break;
+    }
+    if (hi == NULL) return;  // no objc data for this image
+
+    if (PrintImages) { 
+        _objc_inform("IMAGES: unloading image for %s%s%s%s\n", 
+                     _nameForHeader(mh), 
+                     mh->filetype == MH_BUNDLE ? " (bundle)" : "", 
+                     _objcHeaderIsReplacement(hi) ? " (replacement)" : "", 
+                     _objcHeaderSupportsGC(hi) ? " (supports GC)" : "");
+    }
+
+    // Cleanup:
+    // Remove image's classes from the class list and free auxiliary data.
+    // Remove image's unresolved or loadable categories and free auxiliary data
+    // Remove image's unresolved class refs.
+    _objc_remove_classes_in_image(hi);
+    _objc_remove_categories_in_image(hi);
+    _objc_remove_pending_class_refs_in_image(hi);
+    
+    // Perform various debugging checks if requested.
+    if (DebugUnload) unload_paranoia(hi);
+
+    // Remove header_info from header list
+    _objc_removeHeader(hi);
 }
 
+
 /***********************************************************************
 * _objc_setNilReceiver
 **********************************************************************/
@@ -1902,3 +3025,471 @@ void _objc_setClassLoader(BOOL (*newClassLoader)(const char *))
 {
     _objc_classLoader = newClassLoader;
 }
+
+
+#if defined(__ppc__)
+
+/**********************************************************************
+* objc_write_branch
+* Writes at entry a PPC branch instruction sequence that branches to target.
+* The sequence written will be 1 or 4 instructions long. 
+* Returns the number of instructions written.
+**********************************************************************/
+__private_extern__ size_t objc_write_branch(void *entry, void *target) 
+{
+    unsigned *address = (unsigned *)entry;                              // location to store the 32 bit PPC instructions
+    intptr_t destination = (intptr_t)target;                            // destination as an absolute address
+    intptr_t displacement = (intptr_t)destination - (intptr_t)address;  // destination as a branch relative offset
+
+    // Test to see if either the displacement or destination is within the +/- 2^25 range needed 
+    // for a simple PPC branch instruction.  Shifting the high bit of the displacement (or destination)
+    // left 6 bits and then 6 bits arithmetically to the right does a sign extend of the 26th bit.  If
+    // that result is equivalent to the original value, then the displacement (or destination) will fit
+    // into a simple branch.  Otherwise a four instruction branch sequence is required. 
+    if (((displacement << 6) >> 6) == displacement) {
+        // use a relative branch with the displacement
+        address[0] = 0x48000000 | (displacement & 0x03fffffc); // b *+displacement
+        // issued 1 instruction
+        return 1;
+    } else if (((destination << 6) >> 6) == destination) {
+        // use an absolute branch with the destination
+        address[0] = 0x48000000 | (destination & 0x03fffffc) | 2; // ba destination (2 is the absolute flag)
+        // issued 1 instruction
+        return 1;
+    } else {
+        // The four instruction branch sequence requires that the destination be loaded
+        // into a register, moved to the CTR register then branch using the contents
+        // of the CTR register.
+        unsigned lo = destination & 0xffff;
+        unsigned hi = (destination >> 16) & 0xffff;
+
+        address[0] = 0x3d800000 | hi;               // lis r12,hi           ; load the hi half of destination
+        address[1] = 0x618c0000 | lo;               // ori r12,r12,lo       ; merge in the lo half of destination
+        address[2] = 0x7d8903a6;                    // mtctr                ; move destination to the CTR register
+        address[3] = 0x4e800420;                    // bctr                 ; branch to destination
+        // issued 4 instructions
+        return 4;
+    }
+}
+
+// defined(__ppc__)
+#endif
+
+
+/**********************************************************************
+* secure_open
+* Securely open a file from a world-writable directory (like /tmp)
+* If the file does not exist, it will be atomically created with mode 0600
+* If the file exists, it must be, and remain after opening: 
+*   1. a regular file (in particular, not a symlink)
+*   2. owned by euid
+*   3. permissions 0600
+*   4. link count == 1
+* Returns a file descriptor or -1. Errno may or may not be set on error.
+**********************************************************************/
+__private_extern__ int secure_open(const char *filename, int flags, uid_t euid)
+{
+    struct stat fs, ls;
+    int fd = -1;
+    BOOL truncate = NO;
+    BOOL create = NO;
+
+    if (flags & O_TRUNC) {
+        // Don't truncate the file until after it is open and verified.
+        truncate = YES;
+        flags &= ~O_TRUNC;
+    }
+    if (flags & O_CREAT) {
+        // Don't create except when we're ready for it
+        create = YES;
+        flags &= ~O_CREAT;
+        flags &= ~O_EXCL;
+    }
+
+    if (lstat(filename, &ls) < 0) {
+        if (errno == ENOENT  &&  create) {
+            // No such file - create it
+            fd = open(filename, flags | O_CREAT | O_EXCL, 0600);
+            if (fd >= 0) {
+                // File was created successfully.
+                // New file does not need to be truncated.
+                return fd;
+            } else {
+                // File creation failed.
+                return -1;
+            }
+        } else {
+            // lstat failed, or user doesn't want to create the file
+            return -1;
+        }
+    } else {
+        // lstat succeeded - verify attributes and open
+        if (S_ISREG(ls.st_mode)  &&  // regular file?
+            ls.st_nlink == 1  &&     // link count == 1?
+            ls.st_uid == euid  &&    // owned by euid?
+            (ls.st_mode & ALLPERMS) == (S_IRUSR | S_IWUSR))  // mode 0600?
+        {
+            // Attributes look ok - open it and check attributes again
+            fd = open(filename, flags, 0000);
+            if (fd >= 0) {
+                // File is open - double-check attributes
+                if (0 == fstat(fd, &fs)  &&  
+                    fs.st_nlink == ls.st_nlink  &&  // link count == 1?
+                    fs.st_uid == ls.st_uid  &&      // owned by euid?
+                    fs.st_mode == ls.st_mode  &&    // regular file, 0600?
+                    fs.st_ino == ls.st_ino  &&      // same inode as before?
+                    fs.st_dev == ls.st_dev)         // same device as before?
+                {
+                    // File is open and OK
+                    if (truncate) ftruncate(fd, 0);
+                    return fd;
+                } else {
+                    // Opened file looks funny - close it
+                    close(fd);
+                    return -1;
+                }
+            } else {
+                // File didn't open
+                return -1;
+            }
+        } else {
+            // Unopened file looks funny - don't open it
+            return -1;
+        }
+    }
+}
+
+
+/**********************************************************************
+ * Shared range support:
+ *
+ * Some libraries contain many pages worth of selector references. 
+ * In most processes, these libraries get loaded at the same addresses, 
+ * so the selectors are uniqued to the same values. To save memory, 
+ * the runtime tries to share these memory pages across processes. 
+ *
+ * A file /tmp/objc_sharing_<arch>_<euid> records memory ranges and process 
+ * IDs. When a set of selector refs is to be uniqued, this file is checked 
+ * for a matching memory range being shared by another process. If 
+ * such a range is found:
+ * 1. map the sharing process's memory somewhere into this address space
+ * 2. read from the real selector refs and write into the mapped memory. 
+ * 3. vm_copy from the mapped memory to the real selector refs location
+ * 4. deallocate the mapped memory
+ * 
+ * The mapped memory is merely used as a guess. Correct execution is 
+ * guaranteed no matter what values the mapped memory actually contains.
+ * If the mapped memory really matches the values needed in this process, 
+ * the mapped memory will be unchanged. If the mapped memory doesn't match, 
+ * or contains random values, it will be fixed up to the correct values.
+ * The memory is shared whenever the guess happens to be correct.
+ *
+ * The file of shared ranges is imprecise. Processes may die leaving 
+ * their entries in the file. A PID may be recycled to some process that 
+ * does not use Objective-C. The sharing mechanism is robust in the face 
+ * of these failures. Bad shared memory is simply fixed up. No shared 
+ * memory means the selectors are fixed in place. If an entry in the 
+ * file is found to be unusable, the process that finds it will instead 
+ * offer to share its own memory, replacing the bad entry in the file.
+ * 
+ * Individual entries in the file are written atomically, but the file is 
+ * otherwise unsynchronized. At worst, a sharing opportunity may be missed 
+ * because two new entries are written simultaneously in the same place.
+ **********************************************************************/
+
+
+struct remote_range_t {
+    vm_range_t range;
+    pid_t pid;
+};
+
+
+// Cache for the last shared range file used, and its EUID.
+static pthread_mutex_t sharedRangeLock = PTHREAD_MUTEX_INITIALIZER;
+static uid_t sharedRangeEUID = 0;
+static FILE * sharedRangeFile = NULL;
+static BOOL sharedRangeFileInUse = NO;
+
+
+/**********************************************************************
+* open_shared_range_file
+* Open the shared range file "/tmp/objc_sharing_<arch>_<euid>" in 
+* the given mode.
+* The returned file should be closed with close_shared_range_file().
+**********************************************************************/
+static FILE *open_shared_range_file(BOOL create)
+{
+    const char arch[] = 
+#if defined(__ppc__)  ||  defined(ppc)
+        "ppc";
+#elif defined(__ppc64__)  ||  defined(ppc64)
+        "ppc64";
+#elif defined(__i386__)  ||  defined(i386)
+        "i386";
+#else
+#       error "unknown architecture"
+#endif
+    char filename[18 + sizeof(arch) + 1 + 3*sizeof(uid_t) + 1];
+    uid_t euid;
+    FILE *file = NULL;
+    int fd;
+
+    // Never share when superuser
+    euid = geteuid();
+    if (euid == 0) {
+        if (PrintSharing) { 
+            _objc_inform("SHARING: superuser never shares");
+        }
+        return NULL;
+    }
+
+    // Return cached file if it matches and it's not still being used
+    pthread_mutex_lock(&sharedRangeLock);
+    if (!sharedRangeFileInUse  &&  euid == sharedRangeEUID) {
+        file = sharedRangeFile;
+        sharedRangeFileInUse = YES;
+        pthread_mutex_unlock(&sharedRangeLock);
+        rewind(file);
+        return file;
+    }
+    pthread_mutex_unlock(&sharedRangeLock);
+
+    // Open /tmp/objc_sharing_<euid>
+    snprintf(filename,sizeof(filename), "/tmp/objc_sharing_%s_%u", arch, euid);
+    fd = secure_open(filename, O_RDWR | (create ? O_CREAT : 0), euid);
+    if (fd >= 0) {
+        file = fdopen(fd, "r+");
+    }
+
+    if (file) {
+        // Cache this file if there's no already-open file cached
+        pthread_mutex_lock(&sharedRangeLock);
+        if (!sharedRangeFileInUse) {
+            sharedRangeFile = file;
+            sharedRangeEUID = euid;
+            sharedRangeFileInUse = YES;
+        }
+        pthread_mutex_unlock(&sharedRangeLock);
+    } 
+    else {
+        // open() or fdopen() failed
+        if (PrintSharing) {
+            _objc_inform("SHARING: bad or missing sharing file '%s': %s", 
+                         filename, errno ? strerror(errno) : 
+                         "potential security violation");
+        }
+    }    
+
+    return file;
+}
+
+
+/**********************************************************************
+* close_shared_range_file
+* Close a file opened with open_shared_range_file.
+* The file may actually be kept open and cached for a future 
+* open_shared_range_file call. If so, clear_shared_range_file_cache() 
+* can be used to really close the file.
+**********************************************************************/
+static void close_shared_range_file(FILE *file)
+{
+    // Flush any writes in case the file is kept open.
+    fflush(file);
+
+    pthread_mutex_lock(&sharedRangeLock);
+    if (file == sharedRangeFile  &&  sharedRangeFileInUse) {
+        // This file is the cached shared file. 
+        // Leave the file open and cached, but no longer in use.
+        sharedRangeFileInUse = NO;
+    } else {
+        // This is not the cached file.
+        fclose(file);
+    }
+    pthread_mutex_unlock(&sharedRangeLock);
+}
+
+
+/**********************************************************************
+* clear_shared_range_file_cache
+* Really close any file left open by close_shared_range_file.
+* This is called by map_images() after loading multiple images, each 
+* of which may have used the shared range file.
+**********************************************************************/
+static void clear_shared_range_file_cache(void)
+{
+    pthread_mutex_lock(&sharedRangeLock);
+    if (sharedRangeFile  &&  !sharedRangeFileInUse) {
+        fclose(sharedRangeFile);
+        sharedRangeFile = NULL;
+        sharedRangeEUID = 0;
+        sharedRangeFileInUse = 0;
+    }
+    pthread_mutex_unlock(&sharedRangeLock);
+}
+
+
+/**********************************************************************
+* get_shared_range
+* Try to find a shared range matching addresses [aligned_start..aligned_end). 
+* If a range is found, it is mapped into this process and returned. 
+* If no range is found, or the found range could not be mapped for 
+*   some reason, the range {0, 0} is returned.
+* aligned_start and aligned_end must be page-aligned.
+**********************************************************************/
+static vm_range_t get_shared_range(vm_address_t aligned_start, 
+                                   vm_address_t aligned_end)
+{
+    struct remote_range_t remote;
+    vm_range_t result;
+    FILE *file;
+
+    result.address = 0;
+    result.size = 0;
+
+    // Open shared range file, but don't create it
+    file = open_shared_range_file(NO);
+    if (!file) return result;
+
+    // Search for the desired memory range
+    while (1 == fread(&remote, sizeof(remote), 1, file)) {
+        if (remote.pid != 0  &&  
+            remote.range.address == aligned_start  &&  
+            remote.range.size == aligned_end - aligned_start) 
+        {
+            // Found a match in the file - try to grab the memory
+            mach_port_name_t remote_task;
+            vm_prot_t cur_prot, max_prot;
+            vm_address_t local_addr;
+            kern_return_t kr;
+
+            // Find the task offering the memory
+            kr = task_for_pid(mach_task_self(), remote.pid, &remote_task);
+            if (kr != KERN_SUCCESS) {
+                // task is dead
+                if (PrintSharing) {
+                    _objc_inform("SHARING: no task for pid %d: %s", 
+                                 remote.pid, mach_error_string(kr));
+                }
+                break;
+            }
+
+            // Map the memory into our process
+            local_addr = 0;
+            kr = vm_remap(mach_task_self(), &local_addr, remote.range.size,
+                          0 /*alignment*/, 1 /*anywhere*/, 
+                          remote_task, remote.range.address, 
+                          1 /*copy*/, &cur_prot, &max_prot, VM_INHERIT_NONE);
+            mach_port_deallocate(mach_task_self(), remote_task);
+
+            if (kr != KERN_SUCCESS) {
+                // couldn't map memory
+                if (PrintSharing) {
+                    _objc_inform("SHARING: vm_remap from pid %d failed: %s", 
+                                 remote.pid, mach_error_string(kr));
+                }
+                break;
+            }
+
+            if (!(cur_prot & VM_PROT_READ)  ||  !(cur_prot & VM_PROT_WRITE)) {
+                // Received memory is not mapped read/write - don't use it
+                // fixme try to change permissions? check max_prot?
+                if (PrintSharing) {
+                    _objc_inform("SHARING: memory from pid %d not read/write", 
+                                 remote.pid);
+                }
+                vm_deallocate(mach_task_self(), local_addr, remote.range.size);
+                break;
+            }
+
+            // Success
+            result.address = local_addr;
+            result.size = remote.range.size;
+        }
+    }
+
+    close_shared_range_file(file);
+    return result;
+}
+
+
+/**********************************************************************
+* offer_shared_range
+* Offer memory range [aligned_start..aligned_end) in this process 
+*  to other Objective-C-using processes.
+* If some other entry in the shared range list matches this range, 
+*   is is overwritten with this process's PID. (Thus any stale PIDs are 
+*   replaced.)
+* If the shared range file could not be updated for any reason, this 
+*   function fails silently.
+* aligned_start and aligned_end must be page-aligned.
+**********************************************************************/
+static void offer_shared_range(vm_address_t aligned_start, 
+                               vm_address_t aligned_end)
+{
+    struct remote_range_t remote;
+    struct remote_range_t local;
+    BOOL found = NO;
+    FILE *file;
+    int err = 0;
+
+    local.range.address = aligned_start;
+    local.range.size = aligned_end - aligned_start;
+    local.pid = getpid();
+
+    // Open shared range file, creating if necessary
+    file = open_shared_range_file(YES);
+    if (!file) return;
+
+    // Find an existing entry for this range, if any
+    while (1 == fread(&remote, sizeof(remote), 1, file)) {
+        if (remote.pid != 0  &&  
+            remote.range.address == aligned_start  &&  
+            remote.range.size == aligned_end - aligned_start) 
+        {
+            // Found a match - overwrite it
+            err = fseek(file, -sizeof(remote), SEEK_CUR);
+            found = YES;
+            break;
+        }
+    }
+
+    if (!found) {
+        // No existing entry - write at the end of the file
+        err = fseek(file, 0, SEEK_END);
+    }
+
+    if (err == 0) {
+        fwrite(&local, sizeof(local), 1, file);
+    }
+    
+    close_shared_range_file(file);
+}
+
+
+/**********************************************************************
+* install_shared_range
+* Install a shared range received from get_shared_range() into 
+*   its final resting place. 
+* If possible, the memory is copied using virtual memory magic rather 
+*   than actual data writes. dst always gets updated values, even if 
+*   virtual memory magic is not possible.
+* The shared range is always deallocated. 
+* src and dst must be page-aligned.
+**********************************************************************/
+static void install_shared_range(vm_range_t src, vm_address_t dst)
+{
+    kern_return_t kr;
+
+    // Copy from src to dst
+    kr = vm_copy(mach_task_self(), src.address, src.size, dst);
+    if (kr != KERN_SUCCESS) {
+        // VM copy failed. Use non-VM copy.
+        if (PrintSharing) {
+            _objc_inform("SHARING: vm_copy failed: %s", mach_error_string(kr));
+        }
+        memmove((void *)dst, (void *)src.address, src.size);
+    }
+
+    // Unmap the shared range at src
+    vm_deallocate(mach_task_self(), src.address, src.size);
+}
diff --git a/runtime/objc-sel-set.h b/runtime/objc-sel-set.h
new file mode 100644 (file)
index 0000000..56412a6
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ * objc-sel-set.h
+ * A set of SELs used for SEL uniquing.
+ */
+
+#include <stdint.h>
+
+struct __objc_sel_set;
+
+extern struct __objc_sel_set *__objc_sel_set_create(uint32_t capacity);
+extern SEL __objc_sel_set_get(struct __objc_sel_set *sset, SEL candidate);
+extern void __objc_sel_set_add(struct __objc_sel_set *sset, SEL value);
+            
diff --git a/runtime/objc-sel-set.m b/runtime/objc-sel-set.m
new file mode 100644 (file)
index 0000000..bd6c2f8
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ * objc-sel-set.h
+ * A cut-down copy of CFSet used for SEL uniquing.
+ */
+
+
+// NOTE: even on a 64-bit system, the implementation is still limited
+// to 32-bit integers (like, the count), but SEL can be any size.
+
+#include <stdint.h>
+#import "objc-private.h"
+#import "objc-sel-set.h"
+
+static const uint32_t __objc_sel_set_capacities[43] = {
+    4, 8, 17, 29, 47, 76, 123, 199, 322, 521, 843, 1364, 2207, 3571, 5778, 9349,
+    15127, 24476, 39603, 64079, 103682, 167761, 271443, 439204, 710647, 1149851, 1860498,
+    3010349, 4870847, 7881196, 12752043, 20633239, 33385282, 54018521, 87403803, 141422324,
+    228826127, 370248451, 599074578, 969323029, 1568397607, 2537720636U, UINT32_MAX
+};
+
+static const uint32_t __objc_sel_set_buckets[42] = {    // primes
+   5, 11, 23, 41, 67, 113, 199, 317, 521, 839, 1361, 2207, 3571, 5779, 9349, 15121,
+   24473, 39607, 64081, 103681, 167759, 271429, 439199, 710641, 1149857, 1860503, 3010349,
+   4870843, 7881193, 12752029, 20633237, 33385273, 54018521, 87403763, 141422317, 228826121,
+   370248451, 599074561, 969323023, 1568397599, 2537720629U, 4106118251U
+};
+
+struct __objc_sel_set {
+    uint32_t _count;            /* number of slots used */
+    uint32_t _capacity;         /* maximum number of used slots */
+    uint32_t _bucketsNum;       /* number of slots */
+    SEL *_buckets;              /* can be NULL if not allocated yet */
+};
+
+struct __objc_sel_set_finds {
+    SEL match;
+    uint32_t nomatch;
+};
+
+// candidate may not be 0; match is 0 if not present
+static struct __objc_sel_set_finds __objc_sel_set_findBuckets(struct __objc_sel_set *sset, SEL candidate) {
+    struct __objc_sel_set_finds ret = {0, 0xffffffff};
+    uint32_t probe = (uint32_t)_objc_strhash((const char *)candidate) % sset->_bucketsNum;
+    for (;;) {
+        SEL currentSel = sset->_buckets[probe];
+        if (!currentSel) {
+            ret.nomatch = probe;
+            return ret;
+        } else if (!ret.match && 0 == _objc_strcmp((const char *)currentSel, (const char *)candidate)) {
+            ret.match = currentSel;
+        }
+        probe++;
+        if (sset->_bucketsNum <= probe) {
+            probe -= sset->_bucketsNum;
+        }
+    }
+}
+
+// create a set with given starting capacity, will resize as needed
+__private_extern__ struct __objc_sel_set *__objc_sel_set_create(uint32_t capacity) {
+    struct __objc_sel_set *sset = _malloc_internal(sizeof(struct __objc_sel_set));
+    if (!sset) _objc_fatal("objc_sel_set failure");
+    sset->_count = 0;
+    uint32_t idx;
+    for (idx = 0; __objc_sel_set_capacities[idx] < capacity; idx++);
+    if (42 <= idx) _objc_fatal("objc_sel_set failure");
+    sset->_capacity = __objc_sel_set_capacities[idx];
+    sset->_bucketsNum = __objc_sel_set_buckets[idx];
+    sset->_buckets = _calloc_internal(sset->_bucketsNum, sizeof(SEL));
+    if (!sset->_buckets) _objc_fatal("objc_sel_set failure");
+    return sset;
+}
+
+// returns 0 on failure; candidate may not be 0
+__private_extern__ SEL __objc_sel_set_get(struct __objc_sel_set *sset, SEL candidate) {
+    return __objc_sel_set_findBuckets(sset, candidate).match;
+}
+
+// value may not be 0; should not be called unless it is known the value is not in the set
+__private_extern__ void __objc_sel_set_add(struct __objc_sel_set *sset, SEL value) {
+    if (sset->_count == sset->_capacity) {
+        SEL *oldbuckets = sset->_buckets;
+        uint32_t oldnbuckets = sset->_bucketsNum;
+        uint32_t idx, capacity = sset->_count + 1;
+        for (idx = 0; __objc_sel_set_capacities[idx] < capacity; idx++);
+        if (42 <= idx) _objc_fatal("objc_sel_set failure");
+        sset->_capacity = __objc_sel_set_capacities[idx];
+        sset->_bucketsNum = __objc_sel_set_buckets[idx];
+        sset->_buckets = _calloc_internal(sset->_bucketsNum, sizeof(SEL));
+        if (!sset->_buckets) _objc_fatal("objc_sel_set failure");
+        for (idx = 0; idx < oldnbuckets; idx++) {
+            SEL currentSel = oldbuckets[idx];
+            if (currentSel) {
+                uint32_t nomatch = __objc_sel_set_findBuckets(sset, currentSel).nomatch;
+                sset->_buckets[nomatch] = currentSel;
+            }
+        }
+        _free_internal(oldbuckets);
+    }
+    uint32_t nomatch = __objc_sel_set_findBuckets(sset, value).nomatch;
+    sset->_buckets[nomatch] = value;
+    sset->_count++;
+}
index b62295d1c52beced7761ef7aabceb1c55d964da4..5a7f7758a39a02a1f72d71dc10c80bc26b0c2285 100644 (file)
  * This left me with 13528 selectors, which was nicely close to but under
  * 2^14 for the binary search.
  */
-/* GrP 2003-7-11
+/* GrP 2004-12-15
  * Current apps use well over 2^14 selectors. 
- * Reconstructed list using all methods from frameworks 
- *   AddressBook, AppKit, Foundation, WebKit on Panther 7B7.
- * 15293 selectors, still under 2^14
+ * The list current contains all selectors from 
+ * AppKit, WebKit, and their dependencies in Tiger 8A325.
+ * Full list: libobjc, CoreText, Foundation, HIToolbox, CoreData, QuartzCore, AppKit, WebKit
+ * 16371 selectors, just under 2^14
  */
 
 
-#define NUM_BUILTIN_SELS 15293
+#define NUM_BUILTIN_SELS 16371
 /* base-2 log of greatest power of 2 < NUM_BUILTIN_SELS */
 #define LG_NUM_BUILTIN_SELS 13
 
 static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
-       "AMPMDesignation",
-       "BMPRepresentation",
-       "CDATASectionImpl",
-       "CDATASectionWithImpl:",
-       "CGImage",
-       "CGLContextObj",
-       "CGLPixelFormatObj",
-       "DIBRepresentation",
+       ".cxx_construct",
+       ".cxx_destruct",
+       "CGColorSpace",
+       "CGCompositeOperationInContext:",
+       "CIContext",
+       "CI_affineTransform",
+       "CI_arrayWithAffineTransform:",
+       "CI_copyWithZone:map:",
+       "CI_initWithAffineTransform:",
+       "CI_initWithRect:",
+       "CI_rect",
+       "CTM",
        "DOMDocument",
-       "DOMImplementationImpl",
-       "DPSContext",
-       "DSQueryComponents",
-       "DSQueryString",
+       "DTD",
+       "DTDKind",
+       "DTDString",
        "EPSOperationWithView:insideRect:toData:",
        "EPSOperationWithView:insideRect:toData:printInfo:",
        "EPSOperationWithView:insideRect:toPath:printInfo:",
        "EPSRepresentation",
-       "GDBDumpCursorRects",
-       "HTMLRepresentationCount",
+       "HTMLData",
+       "HTMLFileWrapper",
        "HTTPBody",
+       "HTTPBodyStream",
+       "HTTPBodyStreamForTransmission",
        "HTTPContentType",
-       "HTTPCookiePolicyBaseURL",
        "HTTPExtraCookies",
        "HTTPMethod",
-       "HTTPPageNotFoundCacheLifetime",
        "HTTPReferrer",
        "HTTPResponse",
        "HTTPShouldHandleCookies",
        "HTTPUserAgent",
        "IBeamCursor",
-       "IDSensitivity",
-       "ISO8061StringFromDate:",
-       "JavaEnabled",
-       "JavaScriptCanOpenWindowsAutomatically",
-       "JavaScriptEnabled",
-       "LDAPConfigChanged:",
-       "LDAPConfigView",
-       "LDAPQueryString",
+       "ICCProfileData",
+       "MD5",
        "MIMEType",
        "MIMETypeEnumerator",
        "MIMETypeForExtension:",
@@ -103,10 +101,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "NPP_URLNotify",
        "NPP_Write",
        "NPP_WriteReady",
+       "PDFDocumentClass",
+       "PDFKitBundle",
        "PDFOperationWithView:insideRect:toData:",
        "PDFOperationWithView:insideRect:toData:printInfo:",
        "PDFOperationWithView:insideRect:toPath:printInfo:",
        "PDFRepresentation",
+       "PDFSubview",
+       "PDFViewClass",
        "PICTRepresentation",
        "QTMovie",
        "RTF",
@@ -121,9 +123,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "TIFFRepresentationOfImageRepsInArray:",
        "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:",
        "TIFFRepresentationUsingCompression:factor:",
-       "UID",
        "UIDelegate",
+       "URI",
+       "URIRepresentation",
+       "URIRepresentationForID:",
        "URL",
+       "URL:resourceDataDidBecomeAvailable:",
+       "URL:resourceDidFailLoadingWithError:",
+       "URL:resourceDidFailLoadingWithReason:",
        "URLFromPasteboard:",
        "URLHandle:resourceDataDidBecomeAvailable:",
        "URLHandle:resourceDidFailLoadingWithReason:",
@@ -136,51 +143,144 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "URLProtocol:didCancelAuthenticationChallenge:",
        "URLProtocol:didFailWithError:",
        "URLProtocol:didLoadData:",
+       "URLProtocol:didLoadData:lengthReceived:",
        "URLProtocol:didReceiveAuthenticationChallenge:",
        "URLProtocol:didReceiveResponse:cacheStoragePolicy:",
        "URLProtocol:wasRedirectedToRequest:redirectResponse:",
        "URLProtocolDidFinishLoading:",
+       "URLResourceDidCancelLoading:",
+       "URLResourceDidFinishLoading:",
        "URLString",
+       "URLWithAttributeString:",
        "URLWithString:",
        "URLWithString:relativeToURL:",
        "URLs",
-       "URLsFromPasteboard:",
        "URLsFromRunningOpenPanel",
        "UTF8String",
-       "_21vCardRepresentationAsData",
-       "_AEDesc",
+       "W",
+       "X",
+       "XMLDataWithOptions:",
+       "XMLFormatData",
+       "XMLString",
+       "XMLStringSequenceStarted:choiceStarted:appendingToString:",
+       "XMLStringWithOptions:",
+       "XPath",
+       "Y",
+       "Z",
+       "_ATSU_drawHighlightForRun:style:geometry:",
+       "_ATSU_drawRun:style:geometry:",
+       "_ATSU_floatWidthForRun:style:",
+       "_ATSU_pointToOffset:style:position:reversed:includePartialGlyphs:",
        "_BMPRepresentation:",
+       "_BRElementImpl",
        "_CGImageRef",
        "_CGSadjustWindows",
        "_CGSinsertWindow:withPriority:",
        "_CGSremoveWindow:",
-       "_DIBRepresentation",
+       "_CG_drawHighlightForRun:style:geometry:",
+       "_CG_drawRun:style:geometry:",
+       "_CG_floatWidthForRun:style:widths:fonts:glyphs:startPosition:numGlyphs:",
+       "_CG_pointToOffset:style:position:reversed:includePartialGlyphs:",
+       "_CSSStyleSheetImpl",
+       "_CSSStyleSheetWithImpl:",
+       "_DOMImplementationImpl",
+       "_DOMImplementationWithImpl:",
+       "_DOMStyleSheetImpl",
+       "_DOMStyleSheetWithImpl:",
+       "_DTDString",
+       "_EOAssertSafeMultiThreadedAccess:",
+       "_EOAssertSafeMultiThreadedReadAccess:",
+       "_HRElementImpl",
+       "_HTMLDocumentImpl",
+       "_HTMLElementImpl",
+       "_HTMLHtmlElementImpl",
+       "_IBCreatorID",
+       "_IFrameElementImpl",
+       "_KWQ_currentEditor",
        "_KWQ_isScrollView",
+       "_KWQ_numComposedCharacterSequences",
        "_KWQ_scrollFrameToVisible",
-       "_KWQ_scrollRectToVisible:",
-       "_KWQ_scrollRectToVisible:inView:",
+       "_KWQ_scrollPointRecursive:",
+       "_KWQ_scrollPointRecursive:inView:",
+       "_KWQ_scrollRectToVisible:forceCentering:",
+       "_KWQ_scrollRectToVisible:inView:forceCentering:",
+       "_KWQ_setBaseWritingDirection:",
        "_KWQ_setKeyboardFocusRingNeedsDisplay",
+       "_KWQ_setTypingParagraphStyle:",
+       "_KWQ_truncateToNumComposedCharacterSequences:",
+       "_KWQ_typingParagraphStyle",
+       "_MIMETypeForExtension:",
        "_MIMETypeForFile:",
+       "_MOClassName",
+       "_NSNavDisplayNameCompare:caseSensitive:",
        "_NSNavFilePropertyCompare:",
        "_NSNavFilePropertyCompareCaseInsenstive:",
        "_NSNavShortVersionCompare:",
+       "_RGBColorWithRGB:",
        "_RTFDFileWrapper",
-       "_RTFWithSelector:range:documentAttributes:",
        "_UIDelegateForwarder",
+       "_UIEventImpl",
+       "_URIisNil",
        "_URL",
+       "_URLByEscapingSpacesAndControlChars",
+       "_URLForHistory",
+       "_URLForString:",
        "_URLHasScheme:",
-       "_URLMatchesProxyExceptions:",
+       "_URLStringForString:",
        "_URLStringFromLocationHeader",
+       "_URLWithData:relativeToURL:",
+       "_URLWithDataAsString:",
+       "_URLWithDataAsString:relativeToURL:",
+       "_URLsFromSelectors:",
        "_URLsMatchItem:",
-       "_WebCore_linkCursor",
-       "__matrix",
-       "__registerDefaultPlaceholders",
-       "__setRequest:",
-       "__swatchColors",
+       "_UTIMIMETypeForExtension:",
+       "_UTIextensionForMIMEType:",
+       "_WebCore_cursorWithName:hotSpot:",
+       "_XMLStringWithCharactersOnly",
+       "_XMLStringWithOptions:appendingToString:",
+       "__adoptRequest:",
+       "__clearPreLiveColumnWidths",
+       "__close",
+       "__computePreLiveColumnResizeWidthsByColumn",
+       "__doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:",
+       "__drawRevealoverWithFrame:inView:forView:",
+       "__escapeString5991",
+       "__gmd_000__",
+       "__gmd_001__",
+       "__gmd_002__",
+       "__ivar_getTrackingCell",
+       "__ivar_setClickedRow:clickedColumn:",
+       "__ivar_setTrackingCell:",
+       "__needsRevealoverWithFrame:trackingRect:inView:",
+       "__normalImage",
+       "__oldnf_addInternalRedToTextAttributesOfNegativeValues",
+       "__oldnf_addThousandSeparators:withBuffer:",
+       "__oldnf_addThousandSeparatorsToFormat:withBuffer:",
+       "__oldnf_containsCharFromSet:",
+       "__oldnf_containsColorForTextAttributesOfNegativeValues",
+       "__oldnf_containsString:",
+       "__oldnf_copyToUnicharBuffer:saveLength:",
+       "__oldnf_decimalIsNotANumber:",
+       "__oldnf_deleteAllCharactersFromSet:",
+       "__oldnf_getObjectValue:forString:errorDescription:",
+       "__oldnf_numberStringForValueObject:withBuffer:andNegativeFlag:",
+       "__oldnf_removeInternalRedFromTextAttributesOfNegativeValues",
+       "__oldnf_replaceAllAppearancesOfString:withString:",
+       "__oldnf_replaceFirstAppearanceOfString:withString:",
+       "__oldnf_setLocalizationFromDefaults",
+       "__oldnf_stringForObjectValue:",
+       "__oldnf_stringWithSeparator:atFrequency:",
+       "__oldnf_surroundValueInString:withLength:andBuffer:",
+       "__preLiveResizeWidthOfColumn:",
+       "__sendDataSourceWriteDragDataWithIndexes:toPasteboard:",
        "_abbreviationForAbsoluteTime:",
+       "_abortAndRestartTracking:",
        "_abortEditingIfFirstResponderIsASubview",
-       "_absoluteAdvancementForGlyph:",
-       "_absoluteBoundingRectForGlyph:",
+       "_abstractViewImpl",
+       "_abstractViewWithImpl:",
+       "_acceptExpressions:flags:",
+       "_acceptOperator:flags:",
+       "_acceptSubpredicates:flags:",
        "_acceptableRowAboveKeyInVisibleRect:",
        "_acceptableRowAboveRow:minRow:",
        "_acceptableRowAboveRow:tryBelowPoint:",
@@ -190,6 +290,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_acceptsFirstResponderInItem:",
        "_acceptsMarkedText",
        "_accessibilityArrowScreenRect:",
+       "_accessibilityBoundsOfChild:",
        "_accessibilityButtonRect",
        "_accessibilityButtonUIElement",
        "_accessibilityCellLabelType",
@@ -199,6 +300,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_accessibilityIconHandlesTitle",
        "_accessibilityIndicatorRect",
        "_accessibilityIsModal",
+       "_accessibilityIsRadioGroup",
        "_accessibilityIsSupportedPartCode:",
        "_accessibilityLoadBrowserCellsAtRow:count:",
        "_accessibilityMaxValue",
@@ -206,11 +308,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_accessibilityMinValueWithoutCollapsing",
        "_accessibilityNextSplitterMinCoordinate",
        "_accessibilityNumberOfChildren",
+       "_accessibilityPanel",
+       "_accessibilityParentForSubview:",
        "_accessibilityPopUpButtonCellPressAction:",
        "_accessibilityPressAction:",
        "_accessibilityPreviousSplitterMaxCoordinate",
        "_accessibilityRowsInRange:",
+       "_accessibilityScreenRectForSegment:",
        "_accessibilitySearchFieldCellBounds",
+       "_accessibilitySegmentAtIndex:",
+       "_accessibilityShowMenu:",
        "_accessibilitySplitterMinCoordinate",
        "_accessibilitySplitterRects",
        "_accessibilitySupportedPartCodes",
@@ -228,9 +335,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_accessibilityValue",
        "_accessibilityViewCorrectedForFieldEditor:",
        "_actOnKeyDown:",
-       "_action:",
        "_actionCellInitWithCoder:",
        "_actionHasBegun:atIndex:",
+       "_actionHasBegun:atIndexPath:",
        "_actionInformationForLoadType:isFormSubmission:event:originalURL:",
        "_actionInformationForNavigationType:event:originalURL:",
        "_activate",
@@ -238,136 +345,208 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_activateServer",
        "_activateTrackingRectsForApplicationActivation",
        "_activateWindows",
+       "_activeFileListViewForResizing",
        "_actualOrderingFilePropertyAscending:",
+       "_adapter",
        "_addAnimatedColumn",
+       "_addAttachmentForElement:URL:needsParagraph:usePlaceholder:",
+       "_addAutosavingOfDocument:contentsToURL:",
        "_addBackForwardItem:",
        "_addBackForwardItemClippedAtTarget:",
        "_addBackForwardItems:",
+       "_addBindVarForConstVal:",
        "_addBinding:toController:withKeyPath:valueTransformerName:options:",
-       "_addCell:atIndex:",
-       "_addCellClipTipForCell:cellRect:",
-       "_addCellClipTipIfNecessaryForCell:cellRect:",
        "_addChild:",
        "_addCollection:options:sender:",
        "_addColor:",
        "_addColumnSubviewAndAnimateIfNecessary:",
+       "_addColumnToFetch:",
+       "_addColumnWithoutChangingVisibleColumn",
+       "_addContent",
        "_addContentsToDictionary:depth:",
+       "_addConversionsFromTypes:",
        "_addCornerDirtyRectForRect:list:count:",
        "_addCredential:forProtectionSpace:",
+       "_addCurrentDirectoryToRecentPlaces",
        "_addCursorRect:cursor:forView:",
-       "_addDeclaredKey:",
+       "_addDefaultTable",
+       "_addDeletesToDatabaseOp:forManyToMany:",
        "_addDescriptorCheckingForDuplicates:toCollection:",
        "_addDragTypesTo:",
-       "_addDrawerWithView:",
+       "_addEditableSubfieldForElement:",
+       "_addEntities:toConfiguration:",
+       "_addEntity:",
+       "_addExpandedNodeToObservedNodeMappingForExpandedNode:",
        "_addExtraFieldsToRequest:alwaysFromRequest:",
        "_addFontDescriptorFromDrag:toCollectionAtIndex:",
        "_addFramePathToString:",
        "_addHeartBeatClientView:",
+       "_addHiddenWindow:",
        "_addImage:named:",
-       "_addInstance:",
-       "_addInternalRedToTextAttributesOfNegativeValues",
+       "_addIndexedEntity:",
+       "_addInsertsToDatabaseOp:forManyToMany:",
        "_addItem:toTable:",
-       "_addItemsToSpaButton:fromArray:enabled:",
        "_addKeychainItem:",
-       "_addMembersFrom:toUniqueArray:",
+       "_addLibxml2TreeRepresentationToDoc:context:",
+       "_addListDefinition:forKey:",
+       "_addManyToManysToDatabaseOp:",
+       "_addMapping:forConfigurationWithName:",
+       "_addMarker:",
+       "_addMarkersToList:range:",
+       "_addMouseMovedListener:",
        "_addMultipleToTypingAttributes:",
-       "_addObject:forKey:",
-       "_addObject:withName:",
-       "_addObserver:forKey:options:context:",
+       "_addNumberOfIndexes:toSelectionIndexesAtIndex:sendObserverNotifications:",
+       "_addObject:objectIDMap:",
+       "_addObserver:forProperty:options:context:",
        "_addObserver:notificationNamesAndSelectorNames:object:onlyIfSelectorIsImplemented:",
        "_addOneRepFrom:toRep:",
        "_addOptionValue:toArray:withKey:typeString:",
+       "_addOverride:forKey:",
        "_addPathSegment:point:",
+       "_addPersistentStore:identifier:",
        "_addPlaceholderOptionValue:isDefault:toArray:withKey:binder:binding:",
-       "_addPrintFiltersToPopUpButton:",
+       "_addPlugIn:allowNonExecutable:",
+       "_addPlugInStreamClient:",
+       "_addPlugInsFromPath:allowNonExecutable:checkForExistingPlugIn:",
+       "_addProperty:",
+       "_addQuoteForElement:opening:level:",
+       "_addQuoteForLibXML2ElementNode:opening:level:",
        "_addRangeToArray:",
+       "_addRepresentedObject:toAttributedString:atRange:",
+       "_addRepresentedObjects:toAttributedString:atRange:",
        "_addRepsFrom:toRep:",
-       "_addRequestMessageBody",
        "_addResponse:",
-       "_addSizeToList:",
+       "_addResult:",
+       "_addRevealoverIfNecessaryForCell:cellRect:",
+       "_addRootColumnToFetch:",
+       "_addScrollerDashboardRegions:",
+       "_addScrollerDashboardRegions:from:",
        "_addSpellingAttributeForRange:",
+       "_addStaticSubfieldWithString:",
        "_addStringToRecentSearches:",
+       "_addSubentity:",
+       "_addSubfieldForElement:withString:",
+       "_addSubframeArchives:",
        "_addSubresourceClient:",
+       "_addSubresources:",
        "_addSubview:",
-       "_addThousandSeparators:withBuffer:",
-       "_addThousandSeparatorsToFormat:withBuffer:",
        "_addToGroups:ordered:",
-       "_addToMembersCache:",
+       "_addToLibxml2TreeRepresentationWithDoc:dtd:context:",
        "_addToOrphanList",
-       "_addToSubgroupsCache:",
+       "_addToStyle:fontA:fontB:",
        "_addToTypingAttributes:value:",
        "_addToolTipRect:",
-       "_addToolTipRect:displayDelegate:userData:",
-       "_addTrackingRect:andStartToolTipIfNecessary:view:owner:toolTip:",
+       "_addToolTipRect:displayDelegate:displayInfo:",
+       "_addTrackingRect:andStartToolTipIfNecessary:view:owner:toolTip:reuseExistingTrackingNum:",
+       "_addTrackingRect:owner:userData:assumeInside:useTrackingNum:",
+       "_addTrackingRects",
+       "_addTrackingRects:owner:userDataList:assumeInsideList:trackingNums:count:",
+       "_addTrackingRectsForView:",
+       "_addTrackingTag:",
+       "_addTrustedAttribute:atIndex:",
+       "_addUpdatesToDatabaseOp:forManyToMany:",
+       "_addVirtualToOneForToMany:",
+       "_addWhitespace",
        "_addWindow:",
        "_addWindowsMenu:enabled:",
        "_addedTab:atIndex:",
-       "_addiDiskPlaceholder",
+       "_additionIndexPathAppendChildIndex:",
        "_adjustCancelButtonCellImages::",
        "_adjustCharacterIndicesForRawGlyphRange:byDelta:",
        "_adjustClipIndicatorPosition",
        "_adjustControls:andSetColor:",
+       "_adjustDatePickerElement:by:",
        "_adjustDynamicDepthLimit",
        "_adjustEditedCellLocation",
        "_adjustFocusRingLocation:",
        "_adjustFocusRingSize:",
-       "_adjustFontOfObject:inController:index:triggerRedisplay:",
+       "_adjustFontOfObject:mode:triggerRedisplay:compareDirectly:toFont:",
        "_adjustFontSize",
        "_adjustForGrowBox",
-       "_adjustFrames",
+       "_adjustFrameOfOutlineCellIfNecessary:frame:",
+       "_adjustFrameSize",
+       "_adjustLayoutForTextAreaFrame:",
        "_adjustLength",
+       "_adjustMinContentSizeForMinFrameSize:",
        "_adjustMovieToView",
-       "_adjustObject:forChangeInController:editableState:adjustState:index:",
+       "_adjustNibControlSizes",
+       "_adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:",
+       "_adjustObject:mode:triggerRedisplay:",
+       "_adjustPanelForMinWidth",
        "_adjustPort",
+       "_adjustPrintingMarginsForHeaderAndFooter",
+       "_adjustRichTextFontSizeByRatio:",
        "_adjustSearchButtonCellImages::",
        "_adjustSelectionForItemEntry:numberOfRows:adjustFieldEditorIfNecessary:",
-       "_adjustStatesOfObject:index:state:triggerRedisplay:",
-       "_adjustTextColorOfObject:index:displayImmediately:",
+       "_adjustSheetEffect",
+       "_adjustStatesOfObject:mode:state:triggerRedisplay:",
+       "_adjustTextColorOfObject:mode:",
        "_adjustToMode",
        "_adjustWidthsToFit",
        "_adjustWindowToScreen",
        "_adjustedCenteredScrollRectToVisible:forceCenter:",
        "_adjustedFrameForSaving:",
        "_adjustedFrameFromDefaults:",
+       "_advanceTime",
+       "_aeteDataForAllSuites",
+       "_aeteElementClassDescriptions",
+       "_aeteElementClassDescriptionsExceptSupers:",
+       "_aetePropertyDescriptions",
        "_affectedExpandedNodes:",
+       "_affectedExpandedNodesForNode:",
+       "_afterAutosavingDocument:closeAndContinue:context:",
+       "_ageHeaderValue",
        "_ageLimitDate",
+       "_alignColumnForStretchedWindowWithInfo:",
        "_alignCoords",
        "_alignFirstVisibleColumnToDocumentViewEdge:",
+       "_alignSelectionUsingCSSValue:",
        "_alignedTitleRectWithRect:",
        "_allAttributeKeys",
        "_allBinderClasses",
-       "_allBindersNeedRefresh",
-       "_allItems",
-       "_allLabels",
        "_allPossibleLabelsToFit",
        "_allSidebarItemViews",
-       "_allSubclassDescriptionsForClassDescription:",
-       "_allValues",
+       "_allTokenFieldAttachments",
        "_allocAndInitPrivateIvars",
        "_allocAuxiliary:",
        "_allocAuxiliaryStorage",
+       "_allocData:",
        "_allocExtraData",
-       "_allocRowHeightCache",
        "_allocString:",
+       "_allocateAuxData",
+       "_allocateObserationStorage",
        "_allocatePPDStuffAndParse",
+       "_allowKillRing",
        "_allowSmallIcons",
        "_allowedItemIdentifiers",
        "_allowedToSetCookiesFromURL:withPolicyBaseURL:",
        "_allowsContextMenus",
+       "_allowsDisplayMode:",
        "_allowsDuplicateItems",
+       "_allowsNonNativeGlyphPacking",
+       "_allowsScreenFontKerning",
+       "_allowsSizeMode:",
        "_allowsTearOffs",
-       "_altContents",
+       "_alterCurrentSelection:direction:granularity:",
+       "_alterCurrentSelection:verticalDistance:",
        "_alternateAutoExpandImageForOutlineCell:inRow:withFrame:",
        "_alternateDown::::",
+       "_alternateICUValueForKey:",
+       "_alternateICUValues",
        "_alternatingRowBackgroundColors",
+       "_analogClockTrackMouse:inRect:ofView:untilMouseUp:",
+       "_analyzeContentBindingInSyncWithBinding:",
+       "_anchorElementImpl",
        "_animateLastAddedColumnToVisible",
+       "_animatePanel",
        "_animateSheet",
+       "_animatedScrollToPoint:",
+       "_animatedScrollingPreferencesChanged:",
        "_animates",
        "_animatingScrollTargetOrigin",
        "_animationIdler:",
        "_animationThread",
        "_animationTimerCallback:",
-       "_announce",
        "_antialiasThresholdChanged:",
        "_antialiased",
        "_anticipateRelease",
@@ -376,175 +555,241 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_appHasOpenNSWindow",
        "_appHasVisibleWindowOrPanel",
        "_appIcon",
+       "_appWillTerminate:",
        "_appendArcSegmentWithCenter:radius:angle1:angle2:",
-       "_appendCString:",
+       "_appendAttachment:toString:",
        "_appendColorPicker:",
-       "_appendElementClassForRelationship:toAETEData:",
-       "_appendElementClassesToAETEData:",
-       "_appendEnumerationsInSuite:toAETEData:",
-       "_appendItemsForNodeInfo:",
+       "_appendEventDeclarationsToAETEData:",
        "_appendKey:option:value:inKeyNode:",
        "_appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
-       "_appendPropertiesToAETEData:",
-       "_appendPropertyForAttributeOrToOneRelationship:withTerminologyDictionary:toAETEData:",
+       "_appendNodes:forNodeInfo:addSeparator:",
+       "_appendObjectClassDeclarationsToAETEData:",
        "_appendSanitizedTextBytes:length:encoding:isSymbol:attributes:",
        "_appendStringInKeyNode:key:value:",
        "_appendTextBytes:length:encoding:attributes:",
-       "_appendValue:withLabel:andIdentifier:",
+       "_appendTypeDefinitionsSuiteDeclarationToAETEData:",
+       "_appletElementImpl",
        "_applicationDidBecomeActive",
-       "_applicationDidLaunch:",
        "_applicationDidResignActive",
        "_applicationDidTerminate:",
        "_applicationStatusChange:",
        "_applicationWillLaunch:",
-       "_apply:context:",
-       "_applyDisplayedValueIfHasUncommittedChanges",
+       "_applicationWillTerminate:",
+       "_applyAllValuesFromValueBuffer",
+       "_applyDisplayedValueIfHasUncommittedChangesWithHandleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
        "_applyHTTPCredentials:",
        "_applyHTTPProxyCredentials:",
-       "_applyMarkerSettingsFromParagraphStyle:toCharacterRange:",
-       "_applyObjectValue:forBinding:",
-       "_applyValue:forKey:",
+       "_applyMarkerSettingsFromParagraphStyle:",
+       "_applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+       "_applyStyleToSelection:",
+       "_applyStylesheet:",
+       "_applyValue:forKey:registrationDomain:",
        "_applyValueTransformerToValue:forBindingInfo:reverse:",
-       "_applyValues:context:",
+       "_appropriateColorPanelSliderPane",
        "_aquaColorVariantChanged",
+       "_aquaScrollerBehaviorChanged:",
        "_aquaScrollerVariantChanged:",
        "_archiveToFile:",
+       "_archiveWithCurrentState:",
+       "_archiveWithMarkupString:nodes:",
        "_areAllPanelsNonactivating",
        "_areWritesCancelled",
+       "_areaElementImpl",
        "_argument",
+       "_argumentBindingCount",
+       "_argumentDescriptionForKey:",
+       "_argumentDescriptions",
+       "_argumentDescriptionsByName",
+       "_argumentDescriptionsFromUnnamedImplDeclaration:presoDeclaration:namedImplDeclarations:presoDeclarations:suiteName:commandName:",
        "_argumentForUnderlineStyle:",
-       "_argumentInfoAtIndex:",
-       "_argumentTerminologyDictionary:",
-       "_argumentsSelectionAppropriate",
-       "_arrangeObjectsWithSelectedObjects:",
+       "_argumentValueFromParameterDescriptor:usingTypeDescription:",
+       "_arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:",
        "_arrayByTranslatingAEList:toType:inSuite:",
+       "_arrayControllerWithContent:retain:",
        "_arrayForPartialPinningFromArray:",
-       "_arrowsConfig",
+       "_arrowKeyDownEventSelectorIfPreprocessing",
        "_asDescriptor",
        "_asIconHasAlpha",
+       "_asScriptTerminologyNameArray",
+       "_asScriptTerminologyNameString",
        "_ascenderDeltaForBehavior:",
        "_askDelegateWithURL:proxy:forRequest:failureCount:failureResponse:protocol:withCallback:context:",
        "_askDelegateWithURL:realm:forRequest:failureCount:failureResponse:protocol:withCallback:context:",
+       "_assertFilterRestrictsInsertionOfObjects:atArrangedObjectIndexes:",
+       "_assertValidStateWithSelector:",
+       "_assignObject:toPersistentStore:",
        "_assignObjectIds",
+       "_assignObjects:toStore:",
        "_atsFontID",
        "_attachSheetWindow:",
+       "_attachToParentWindow",
        "_attachToSupermenuView:",
-       "_attachedCell",
-       "_attachedSheet",
+       "_attachWindowForOrdering:relativeOp:",
        "_attachedSupermenuView",
+       "_attachmentAtGlyphIndex:containsWindowPoint:",
        "_attachmentCellForSelection",
-       "_attachmentFileWrapperDescription:",
        "_attachmentSizesRun",
-       "_attributeTerminologyDictionary:",
-       "_attributedStringForDrawing",
+       "_attrImpl",
+       "_attrWithImpl:",
+       "_attributeRunForCharacterAtIndex:",
+       "_attributeStringFromDOMRange:",
+       "_attributeValueClass",
+       "_attributedLabelsFromStringLabels:",
        "_attributedStringForEditing",
        "_attributedStringFromDescriptor:",
+       "_attributedStringFromRepresentedObjects:",
        "_attributedStringValue:invalid:",
+       "_attributedValuesFromStringValues:",
        "_attributes",
        "_attributes1ForPageOffset:entryOffset:baseAttributes:",
        "_attributes2ForPageOffset:entryOffset:blockType:baseAttributes:",
        "_attributesAreEqualToAttributesInAttributedString:",
+       "_attributesForElement:",
        "_audioCompleted",
        "_authenticationDoneWithChallenge:result:",
+       "_autoAppendsMDAttributesToSavedFile",
+       "_autoCompleteEditorTyping:",
+       "_autoCreateBinderForObject:withController:",
        "_autoExpandFlashOnce",
        "_autoExpandItem:",
        "_autoPositionMask",
        "_autoResizeState",
        "_autoSaveCofiguration",
        "_autoSizeView:::::",
+       "_autocompletesTyping",
        "_automateLiveResize",
        "_automateLiveScroll",
        "_autoreleaseDuringLiveResize",
+       "_autoreopenDocuments",
+       "_autoresizeToFit",
+       "_autoresizesLastColumnOnly",
        "_autosaveColumnsIfNecessary",
+       "_autosaveContentsURL",
+       "_autosaveForRegularQuit",
        "_autosaveRecentSearchList",
+       "_autosaveRecordPath",
+       "_autosavingBehavior",
+       "_autoscroll",
        "_autoscrollDate",
-       "_autoscrollDelay",
        "_autoscrollForDraggingInfo:timeDelta:",
-       "_autoscrollResponseMultiplier",
-       "_auxStorage",
+       "_autovalidateToolbarItem:",
+       "_autovalidateVisibleToolbarItems",
+       "_autovalidatesItems",
        "_availableBindingsWithFontBindingsFiltered:",
+       "_availableChannel",
+       "_availableChannelFromRegisteredChannels",
        "_availableFontSetNames",
-       "_avoidsActivation",
+       "_availablePaperWidthForPrintOperation:",
+       "_awakeFromFetch",
+       "_awakeFromInsert",
        "_backForwardCacheExpirationInterval",
        "_backForwardItems",
-       "_backForwardSwitcher",
        "_backgroundColor",
        "_backgroundFileLoadCompleted:",
-       "_backgroundTransparent",
        "_backingCGSFont",
-       "_backingType",
        "_barberImage:",
-       "_baseForKVOAClass",
+       "_base64StringFromData:",
+       "_baseElementImpl",
+       "_baseFontElementImpl",
        "_baseLineHeightForFont:",
        "_baseString",
        "_baseTransform",
-       "_baselineOffsetForUILayout",
+       "_baseWritingDirection",
+       "_baselineRenderingMode",
        "_batchClose",
+       "_batchCollapseItemsWithItemEntries:collapseChildren:",
+       "_batchCollapseItemsWithItemEntries:collapseChildren:clearExpandState:",
+       "_batchExpandItemsWithItemEntries:expandChildren:",
+       "_batchOrdering",
        "_batchZoom",
        "_beginColumnAnimationOptimization",
        "_beginCustomizationMode",
        "_beginDraggingColumn:",
        "_beginDrawForDragging",
-       "_beginLayout:",
+       "_beginDrawView:",
        "_beginListeningForApplicationStatusChanges",
        "_beginListeningForDeviceStatusChanges",
-       "_beginLoad",
+       "_beginListeningForPowerStatusChanges",
+       "_beginListeningForSessionStatusChanges",
        "_beginMark",
-       "_beginOriginLoad",
        "_beginScrolling",
        "_beginSpeakingString:optionallyToURL:",
        "_beginSrcDragItemViewerWithEvent:",
        "_beginSrcDragItemWithEvent:",
        "_beginTempEditingMode",
        "_beginToolbarEditingMode",
+       "_beginTransaction:",
        "_bestRepresentation:device:bestWidth:checkFlag:",
        "_betweenDropFeedbackStyle",
        "_betweenDropGapSize",
+       "_bidiLevels",
        "_bind:toController:withKeyPath:valueTransformerName:options:existingNibConnectors:connectorsToRemove:connectorsToAdd:",
+       "_bindNamespace:",
+       "_bindVariablesWithInsertedRow:",
        "_binderClassForBinding:withBinders:",
        "_binderForBinding:withBinders:createAutoreleasedInstanceIfNotFound:",
        "_binderWithClass:withBinders:createAutoreleasedInstanceIfNotFound:",
-       "_bindersToRefreshEnumerator",
        "_bindingAdaptor",
+       "_bindingAdaptorMethodsNeededMask",
+       "_bindingCreationDelegate",
        "_bindingInfoForBinding:",
        "_bindingInfoIndexForBinding:",
        "_bindingInformationWithExistingNibConnectors:availableControllerChoices:",
        "_bindingInfos",
        "_bitBlitSourceRect:toDestinationRect:",
+       "_bitmapFormat",
        "_blackRGBColor",
        "_blinkCaret:",
-       "_blobForCurrentObject",
        "_blockAndGetChildrenOfNavNode:",
+       "_blockClassForBlock:",
        "_blockHeartBeat:",
+       "_blockLevelElementForNode:",
+       "_blockRangeForCharRange:",
+       "_blockRangeForGlyphRange:",
+       "_blocksActionWhenModal:",
        "_blueAlternatingRowColor",
        "_blueControlTintColor",
        "_blueKeyboardFocusColor",
+       "_bodyBackgroundColor",
+       "_bodyElementImpl",
        "_bonafiedDealloc",
+       "_bonafiedDeallocHelper",
        "_boolValueForKey:",
        "_borderInset",
        "_borderType",
        "_borderView",
+       "_bottomContainerView",
        "_bottomCornerSize",
        "_bottomLeftResizeCursor",
        "_bottomRightResizeCursor",
        "_boundingRectForGlyphRange:inTextContainer:fast:fullLineRectsOnly:",
        "_boundsForCellFrame:",
        "_branchImageEnabled",
+       "_branchImageRectForBounds:",
        "_breakConnectionOfTableBinderIfAutoCreated:",
        "_bridge",
+       "_bridgeAtPoint:",
+       "_bridgeForCurrentSelection",
+       "_briefDescription",
        "_brightColorFromPoint:fullBrightness:",
+       "_browser:keyEvent:inColumn:",
+       "_browser:performKeyEquivalent:inColumn:",
        "_browserAction:",
        "_browserDelegate",
        "_browserDoubleAction:",
        "_buildCursor:cursorData:",
+       "_buildUI",
        "_builtInLocalizedDescription",
+       "_builtInLocalizedFailureReason",
+       "_builtInLocalizedRecoveryOptions",
+       "_builtInLocalizedRecoverySuggestion",
        "_bulletCharacter",
        "_bulletStringForString:",
-       "_bumpSelectedItem:",
        "_bundleForClassPresentInAppKit:",
        "_button",
        "_buttonBezelColors",
        "_buttonCellInitWithCoder:",
+       "_buttonElementImpl",
        "_buttonFrameSizeForSizeMode:",
        "_buttonHeight",
        "_buttonImageSource",
@@ -560,14 +805,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_cacheRepresentation:",
        "_cacheRepresentation:stayFocused:",
        "_cacheResourceLoadDelegateImplementations",
-       "_cacheStatistics",
+       "_cacheRow:rect:",
+       "_cacheRowHeightsIntoBucket:bucketFirstRowIndex:lastCacheableRowIndex:",
+       "_cacheSelectedObjectsIfNecessary",
        "_cacheUserKeyEquivalentInfo",
+       "_cacheViewImage:",
        "_cachedChildrenForNode:createIfNeeded:",
        "_cachedDisplayValue",
-       "_cachedGlobalWindowNum",
+       "_cachedObjectForKey:value:",
        "_cachedObjectValue",
+       "_cachedResponseForURL:",
        "_cachedResponseHasExpired",
        "_cachedResponsePassesValidityChecks",
+       "_cachedValuesAreValid",
+       "_cachingView",
        "_calcAndSetFilenameTitle",
        "_calcHeights:num:margin:operation:helpedBy:",
        "_calcMarginSize:operation:",
@@ -578,134 +829,157 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_calcTrackRect:andAdjustRect:",
        "_calcVisibleColumnAreaAvailable",
        "_calcWidths:num:margin:operation:helpedBy:",
-       "_calculateLineHeightInGlyphVector:forGlyphRange:usesLeading:lineheight:glyphOffset:fontLeading:",
        "_calculatePageRectsWithOperation:pageSize:layoutAssuredComplete:",
+       "_calculatePrintHeight",
+       "_calculateSelectedSegmentForPoint:",
        "_calculateSizeToFitWidthOfColumn:testLoadedOnly:",
        "_calculateTotalScaleForPrintingWithOperation:",
-       "_calibratedColorOK",
+       "_calculatedExpiration",
+       "_calendarContentAttributedStringWithSelectedDay:today:",
+       "_calendarID",
+       "_calendarWithID:",
        "_callImplementor:context:chars:glyphs:stringBuffer:font:",
-       "_canAcceptRichText",
        "_canAutoGenerateKeyboardLoops",
        "_canBecomeDefaultButtonCell",
        "_canCachePage",
        "_canChangeRulerMarkers",
-       "_canDrawOutsideLineHeight",
+       "_canCopy",
+       "_canCut",
+       "_canDelete",
+       "_canDeselect",
+       "_canDeselect:",
+       "_canDragRowForClickOnCell:column:row:atPoint:",
        "_canDrawOutsideOfItsBounds",
-       "_canHandleDelete",
+       "_canEdit",
        "_canHandleRequest:",
        "_canHaveToolbar",
-       "_canImportGraphics",
+       "_canHide",
+       "_canInitiateRowDragInColumn:",
        "_canMoveItemAsSource:",
        "_canOptimizeDrawing",
+       "_canPaste",
+       "_canProcessDragWithDraggingInfo:",
        "_canRunCustomizationPanel",
+       "_canSave",
+       "_canSaveGraphRootedAtObject:intoStore:givenOthers:",
+       "_canShowGoto",
        "_canShowMIMETypeAsHTML:",
+       "_canShowToolTip",
+       "_canSmartCopyOrDelete",
+       "_canSmartReplaceWithPasteboard:",
        "_canUseCompositing",
        "_canUseKeyEquivalentForMenuItem:",
-       "_canUsePersistentConnectionForRequest",
        "_canUseReorderResizeImageCache",
+       "_canUseResourceForRequest:",
+       "_canUserSetVisibilityPriority",
+       "_cancelAddMarker:",
        "_cancelAllUserAttentionRequests",
        "_cancelAnyScheduledAutoCollapse",
        "_cancelAutoExpandTimer",
+       "_cancelCurrentToolTipWindowImmediately:",
+       "_cancelDelayedAutocomplete",
        "_cancelDelayedKeyboardNavigationTabSwitch",
        "_cancelDelayedShowOpenHandCursor",
-       "_cancelEditOnMouseUp",
        "_cancelKey:",
+       "_cancelMovementTrackingTimer",
        "_cancelPerformSelectors",
        "_cancelRequest:",
-       "_cancelTypeAhead",
        "_cancelWithError:",
        "_cancelWithErrorCode:",
+       "_candidateDragRowIndexForClickInRow:",
        "_canonicalURLForURL:",
+       "_canonicalXMLStringPreservingComments:relationships:",
        "_captureInput",
        "_captureReorderResizeColumnImageCaches",
        "_captureVisibleIntoImageCache",
        "_captureVisibleIntoLiveResizeCache",
+       "_carbonNotification",
        "_carbonWindowClass",
-       "_cellClipTipRectForFrame:inView:",
-       "_cellForPoint:",
+       "_caseSensitiveCompare:",
+       "_cellForObject",
+       "_cellForPoint:characterIndex:level:row:column:range:",
        "_cellForRow:browser:browserColumn:",
        "_cellFrame",
+       "_cellFrameForAttachment:atCharIndex:",
        "_cellFurthestFrom:andCol:",
        "_cellInitWithCoder:",
+       "_cellOrControlForObject:",
        "_centerInnerBounds:",
        "_centerOnScreen",
        "_centerScanPoint:",
        "_centerTitle:inRect:",
        "_centeredScrollRectToVisible:forceCenter:",
-       "_certificatePolicy",
-       "_cfAppendCString:length:",
        "_cfBundle",
-       "_cfCapitalize:",
-       "_cfLowercase:",
-       "_cfNormalize:",
-       "_cfNumberType",
-       "_cfPad:length:padIndex:",
        "_cfPasteboard",
-       "_cfStreamError",
-       "_cfTrim:",
-       "_cfTrimWS",
        "_cfTypeID",
-       "_cfUppercase:",
-       "_cffireDate",
-       "_cffireTime",
-       "_cfindexOfObject:range:",
-       "_cflastIndexOfObject:inRange:",
        "_cfurl",
+       "_cgColor",
        "_cgsEventRecord",
        "_cgsEventTime",
-       "_cgsevent",
-       "_changeAddressFormat:",
-       "_changeAlertDidEnd:returnCode:contextInfo:",
+       "_chainNewError:toOriginalErrorDoublePointer:",
+       "_changeAlertSheetWasPresented:withResult:inContext:",
        "_changeAllDrawersFirstResponder",
        "_changeAllDrawersKeyState",
        "_changeAllDrawersMainState",
-       "_changeDictionaries:",
+       "_changeCSSColorUsingSelector:inRange:",
+       "_changeColorToColor:",
        "_changeDrawerFirstResponder",
        "_changeDrawerKeyState",
        "_changeDrawerMainState",
+       "_changeEditable:",
        "_changeFileListMode:",
        "_changeFirstResponder",
-       "_changeFrameOfColumn:toFrame:constrainWidth:",
+       "_changeHistory:",
        "_changeIntAttribute:by:range:",
        "_changeJustMain",
        "_changeKeyAndMainLimitedOK:",
        "_changeKeyState",
        "_changeLanguage:",
+       "_changeMDAttributes:atPath:",
        "_changeMainState",
        "_changeMinColorPanelSizeByDelta:compareWithOldMinSize:oldMinSize:setWindowFrame:",
        "_changeMinColorPanelSizeByDelta:setWindowFrame:",
+       "_changePrefixesForURI:toPrefix:",
        "_changeSelectionWithEvent:",
+       "_changeShadowAngle:",
+       "_changeShadowBlur:",
+       "_changeShadowOpacity:",
        "_changeSizeStyle:",
        "_changeSortDescriptorsForClickOnColumn:",
        "_changeSpellingFromMenu:",
        "_changeSpellingToWord:",
+       "_changeSyncPostingEnabled",
        "_changeTexture",
+       "_changeUUIDForSaveAs",
        "_changeWasDone:",
        "_changeWasRedone:",
        "_changeWasUndone:",
+       "_changeWordCaseWithSelector:",
+       "_changed",
        "_changed:",
        "_changedFlags",
+       "_changedObjectIDs",
        "_changingSelectionWithKeyboard",
-       "_charIndexToBreakLineByWordWrappingAtIndex:inRange:hyphenate:glyphVector:",
-       "_charRangeIsHighlightOptimizable:fromOldCharRange:",
-       "_characterCannotBeRendered:",
+       "_charIndexToBreakLineByWordWrappingAtIndex:lineFragmentWidth:hyphenate:",
+       "_characterCoverage",
+       "_characterDataImpl",
        "_characterRangeCurrentlyInAndAfterContainer:",
        "_characterRangeForPoint:inRect:ofView:",
-       "_checkCardAndColumns",
-       "_checkCardOnly",
        "_checkCollectionMoveOut:",
-       "_checkColumnsOnly",
-       "_checkDirectories",
+       "_checkDataSource",
        "_checkDirectoryListing",
+       "_checkDisplayDelegate:",
        "_checkFavoriteMode",
        "_checkForCookieExpiration",
        "_checkForObsoleteDelegateMethodsInObject:",
        "_checkForSimpleTrackingMode",
        "_checkForTerminateAfterLastWindowClosed:",
-       "_checkIfTimedOut",
-       "_checkInName:onHost:andPid:forUser:",
-       "_checkIndexIsBad",
+       "_checkForTimeouts",
+       "_checkGrammarInString:language:details:",
+       "_checkIfSpeakingThroughSpeechFeedbackWindowIsFinished:",
+       "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:",
        "_checkLoadComplete",
+       "_checkLoadCompleteForThisFrame",
        "_checkLoaded:rect:highlight:",
        "_checkMiniMode:",
        "_checkNavigationPolicyForRequest:dataSource:formState:andCall:withSelector:",
@@ -713,183 +987,233 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_checkRotatedOrScaledFromBase",
        "_checkSpellingForRange:excludingRange:",
        "_checkToolTipDelay",
+       "_checkTrashiness",
+       "_checkWantsDynamicToolTips",
        "_childFramesMatchItem:",
+       "_children",
+       "_childrenForNode:",
+       "_chooseBestMatchingFace",
        "_chooseCachedResponse",
        "_chooseCollection:",
        "_chooseFace:",
        "_chooseFamily:",
        "_chooseGuess:",
+       "_chooseSize:",
+       "_chooseSizeFromField:",
+       "_chooseSizeFromList:",
+       "_chooseSizeFromSlider:",
+       "_chooseableIndexesFromIndexes:",
        "_chosenSpellServer:launchIfNecessary:",
+       "_chunkAndCheckGrammarInString:language:usingSpellServer:details:",
        "_chunkAndFindMisspelledWordInString:language:learnedDictionaries:wordCount:usingSpellServer:",
-       "_classDescriptionForAppleEventCode:",
-       "_classDescriptionForType:inSuite:",
+       "_classDescriptionForName:",
+       "_classDescriptionForName:suiteName:isValid:",
        "_classDescriptionFromKey:andContainerClassDescription:",
-       "_classInfo",
+       "_classDescriptionsFromPropertyListDeclarations:suiteName:",
+       "_classNameForType:",
        "_classOfObjectsInNestedHomogeneousArray:",
-       "_classTerminologyDictionary",
-       "_cleanOutObsoleteItemsInCellorControl:",
-       "_cleanUp",
-       "_cleanUpConnection",
+       "_classSynonymDescriptionsFromImplDeclarations:presoDeclarations:",
+       "_cleanUpAfterSave",
+       "_cleanUpAfterTransaction",
+       "_cleanUpConnectionWithSynchronizePeerBinders:",
        "_cleanUpForCarbonAppTermination",
        "_cleanup",
        "_cleanupAndAuthenticate:sequence:conversation:invocation:raise:",
+       "_cleanupBindingsWithExistingNibConnectors:exception:",
        "_cleanupHelpForQuit",
+       "_cleanupMenuMaps",
        "_cleanupPausedActions",
+       "_clear",
+       "_clearAnimationInfo",
        "_clearAnyValidResponderOverride",
        "_clearCellFrame",
-       "_clearChangedProperties",
-       "_clearConfigPanel",
+       "_clearChangedThisTransaction:",
        "_clearControlTintColor",
        "_clearCurrentAttachmentSettings",
        "_clearDefaultMenuFormRepresentation",
+       "_clearDeletions",
        "_clearDependenciesWithPeerBindersInArray:",
+       "_clearDictionaries",
+       "_clearDirtyRectsForLockedTree",
        "_clearDirtyRectsForTree",
-       "_clearDocFontsUsed",
        "_clearDragMargins",
        "_clearEditingTextView:",
        "_clearErrors",
        "_clearEventMask",
        "_clearFocusForView",
+       "_clearImageForLockFocusUse",
        "_clearInitialFirstResponderAndLastKeyViewIfAutoGenerated",
+       "_clearInsertions",
        "_clearKeyCell",
        "_clearLastHitViewIfSelf",
+       "_clearLiveResizeColumnLayoutInfo",
+       "_clearMarkedRange",
        "_clearMarkedWidth",
        "_clearModalWindowLevel",
        "_clearMouseTracking",
        "_clearMouseTrackingForCell:",
+       "_clearObserving",
+       "_clearOriginalSnapshotAndInitializeRec:",
+       "_clearOriginalSnapshotForObject:",
        "_clearPageCache",
-       "_clearPageFontsUsed",
-       "_clearPressedButtons",
-       "_clearProvisionalDataSource",
+       "_clearPendingChanges",
+       "_clearRawProperties",
        "_clearRememberedEditingFirstResponder",
-       "_clearRollOver",
-       "_clearRowHeightCache",
+       "_clearSaveTimer",
        "_clearSelectedCell",
-       "_clearSheetFontsUsed",
        "_clearSpellingForRange:",
        "_clearTemporaryAttributes",
        "_clearTemporaryAttributesForCharacterRange:changeInLength:",
        "_clearTrackingRects",
-       "_clearTypeAhead",
+       "_clearUndoManageForFieldEditor:",
+       "_clearUnneccessaryItems:",
+       "_clearUnprocessedDeletions",
+       "_clearUnprocessedInsertions",
+       "_clearUnprocessedUpdates",
+       "_clearUpdates",
+       "_clearVisitedColumnContentWidths",
        "_clickedCharIndex",
-       "_clientRedirectCancelled",
+       "_clientRedirectCancelled:",
        "_clientRedirectedTo:delay:fireDate:lockHistory:isJavaScriptFormAction:",
        "_clientsCreatingIfNecessary:",
        "_clipIndicator",
        "_clipIndicatorIsShowing",
        "_clipViewAncestor",
+       "_clipViewBoundsChanged:",
        "_clippedItemViewers",
-       "_cloneFont:withFlag:",
+       "_clockAndCalendarAdvanceMonth:",
+       "_clockAndCalendarAdvanceMonthButtonCell",
+       "_clockAndCalendarCellSize",
+       "_clockAndCalendarFillDayCell:withColor:inFrame:",
+       "_clockAndCalendarGetClockFrame:calendarFrame:retreatMonthButtonCellFrame:advanceMonthButtonCellFrame:returnToHomeMonthButtonCellFrame:forDatePickerCellFrame:",
+       "_clockAndCalendarKeyDown:inRect:ofView:",
+       "_clockAndCalendarRetreatMonth:",
+       "_clockAndCalendarRetreatMonthButtonCell",
+       "_clockAndCalendarReturnToHomeMonth:",
+       "_clockAndCalendarReturnToHomeMonthButtonCell",
+       "_clockAndCalendarTakeDisplayedMonthFromDateValue",
+       "_clockAndCalendarTrackMouse:inRect:ofView:untilMouseUp:",
        "_close",
        "_close:",
+       "_closeAlertSheet:wasPresentedWithResult:inContext:",
        "_closeAndDeleteFileAsync",
+       "_closeBlocksForParagraphStyle:atIndex:inString:",
        "_closeButtonOrigin",
        "_closeDocumentsStartingWith:shouldClose:closeAllContext:",
        "_closeFileAsync",
        "_closeFileSync",
+       "_closeFlags:openFlags:inString:",
        "_closeForkAsync:",
        "_closeForkSync:",
-       "_closeIndex",
+       "_closeListsForParagraphStyle:atIndex:inString:",
        "_closeOldDataSources",
        "_closeSheet:andMoveParent:",
        "_closeWindow",
-       "_closedHandCursor",
+       "_cocoaErrorDescription",
+       "_cocoaErrorString:",
+       "_cocoaErrorString:alternate:",
+       "_cocoaTypeNameFromIdentifier:",
+       "_coerceValue:forKey:withDescription:",
        "_collapseAllAutoExpandedItems",
        "_collapseAutoExpandedItems:",
        "_collapseButtonOrigin",
        "_collapseItem:collapseChildren:clearExpandState:",
        "_collapseItemEntry:collapseChildren:clearExpandState:recursionLevel:",
-       "_collapseItemsWithItemEntries:collapseChildren:",
+       "_collapsePanel:andMoveParent:toFrame:",
        "_collapsedOrigin",
-       "_collection:setHidden:",
+       "_collectApplicableUserInfoFormatters:max:",
+       "_collectElasticRangeSurroundingCharacterAtIndex:minimumCharacterIndex:",
+       "_collectItemViewerFrames:intoRectArray:",
+       "_collectSubentities",
+       "_collection:setHidden:save:",
+       "_collectionImpl",
+       "_collectionWithImpl:",
        "_collectionWithName:",
        "_collectionWithName:index:",
        "_collections",
        "_collectionsChanged:",
+       "_color",
+       "_colorAsString:",
        "_colorAtIndex:",
-       "_colorByTranslatingRGBColor:toType:inSuite:",
+       "_colorByTranslatingRGBColorDescriptor:toType:inSuite:",
        "_colorComponentsForIndex:redComponent:greenComponent:blueComponent:",
-       "_colorFromPoint:",
+       "_colorForMetal:",
+       "_colorForMouseEvent:",
+       "_colorForNode:property:",
        "_colorList",
        "_colorListNamed:forDeviceType:",
        "_colorPickerWithIdentifier:",
        "_colorPickers",
        "_colorRect",
-       "_colorWellAcceptedColor:",
+       "_colorSpacesForColorPanelPaneUsingModel:",
+       "_colorSyncProfileClass",
+       "_colorSyncProfileSpace",
        "_colorWellCommonAwake",
        "_colorWithGradientImage:",
        "_colorizedImage:color:",
        "_columnAtLocation:",
        "_columnClosestToColumn:whenMoved:",
        "_columnRangeForDragImage",
+       "_columnResizeChangeFrameOfColumn:toFrame:constrainWidth:resizeInfo:",
        "_columnWidthAutoSaveNameWithPrefix",
-       "_commandDescriptionForAppleEventClass:andEventCode:",
-       "_commandFromEvent:inConstructionContext:",
+       "_commandDescriptionsFromPropertyListDeclarations:suiteName:",
+       "_commandFromEvent:",
+       "_commandMethodSelectorsByName",
        "_commandPopupRect",
-       "_commandTerminologyDictionary",
+       "_commitEditing",
+       "_commitEditingAndEndUndo",
+       "_commitEditingDiscardEditingCallback:",
+       "_commitEditingOtherCallback:",
        "_commitIfReady",
        "_commitIfReady:",
+       "_commitTransaction:",
        "_commonAwake",
        "_commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:",
-       "_commonFontInit",
+       "_commonHandleRootOrCurrentDirectoryChanged",
        "_commonInit",
        "_commonInitFrame:styleMask:backing:defer:",
        "_commonInitIvarBlock",
+       "_commonInitNSColorPickerColorSpacePopUp",
+       "_commonInitNavMatrix",
        "_commonInitNavNodePopUpButton",
-       "_commonInitSidebarItemViewTextField",
+       "_commonInitSidebarItemView",
        "_commonInitSplitViewController",
        "_commonInitState",
-       "_commonInitializationFrameName:groupName:",
+       "_commonInitTokenAttachmentWithStringValue:",
+       "_commonInitializationWithFrameName:groupName:",
        "_commonNavFilepathInputControllerInit",
        "_commonNewScroll:",
        "_commonSecureTextFieldInit:",
+       "_commonSetupTokenFieldCell",
+       "_commonTermination",
        "_compareForHeaderOrder:",
-       "_compareMultiLabelArrayWithRecordValue:",
-       "_compareMultiLabelDictionaryKeyWithRecordValue:",
-       "_compareMultiLabelDictionaryNoKeyWithRecordValue:",
-       "_compareMultiLabelScalarWithRecordValue:",
-       "_compareMultiNoLabelArrayWithRecordValue:",
-       "_compareMultiNoLabelDictionaryKeyWithRecordValue:",
-       "_compareMultiNoLabelDictionaryNoKeyWithRecordValue:",
-       "_compareMultiNoLabelScalarWithRecordValue:",
-       "_compareSingleArrayWithRecordValue:",
-       "_compareSingleDictionaryKeyWithRecordValue:",
-       "_compareSingleDictionaryNoKeyWithRecordValue:",
-       "_compareSingleScalarWithRecordValue:",
+       "_compareNode:withDisplayName:toNode:withDisplayName:",
        "_compareWidthWithSuperview",
        "_compat_continuousScrollingCapable",
-       "_compatibility_canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",
-       "_compatibility_displayName",
-       "_compatibility_doSavePanelSave:delegate:didSaveSelector:contextInfo:",
        "_compatibility_initWithUnkeyedCoder:",
-       "_compatibility_setFileName:",
-       "_compatibility_shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",
-       "_compatibility_windowForSheet",
+       "_compatibility_takeValue:forKey:",
        "_compatibleListShouldUseAlternateSelectedControlColor",
        "_compatibleWithRulebookVersion:",
        "_compiledScriptID",
        "_complete:",
-       "_completeName:",
        "_completeNoRecursion:",
-       "_completeProgressForConnection:",
+       "_completePathWithPrefix:intoString:matchesIntoArray:",
+       "_completeProgressForConnectionDelegate:",
        "_completionsFromDocumentForPartialWordRange:",
-       "_componentsSeparatedBySet:",
        "_composite:delta:fromRect:toPoint:",
        "_compositeAndUnlockCachedImage",
+       "_compositeFlipped:atPoint:fromRect:operation:fraction:",
+       "_compositeFlipped:inRect:fromRect:operation:fraction:",
        "_compositeHiddenViewHighlight",
        "_compositeImage",
        "_compositePointInRuler",
-       "_compositeToPoint:fromRect:operation:fraction:",
-       "_compositeToPoint:operation:fraction:",
        "_compositedBackground",
-       "_computeAllCellClipTips",
+       "_computeAllRevealovers",
        "_computeAndAlignFirstClosestVisibleColumn",
-       "_computeBezelRectWithTextCellFrame:inView:topLeft:bottomLeft:left:right:top:bottom:",
        "_computeBounds",
        "_computeColorScaleIfNecessaryWithSize:",
        "_computeCommonItemViewers",
        "_computeCustomItemViewers",
-       "_computeCustomItemViewersInRange:",
        "_computeDisplayedLabelForRect:",
        "_computeDisplayedSizeOfString:",
        "_computeDragImage",
@@ -903,25 +1227,28 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_computeMaxItemViewHeight",
        "_computeMenuForClippedItems",
        "_computeMenuForClippedItemsIfNeeded",
+       "_computeMinHeightForSimpleSavePanel:",
+       "_computeMinWidthForSimpleSavePanel:",
        "_computeMinimumDisplayedLabelForWidth:",
        "_computeMinimumDisplayedLabelSize",
        "_computeNominalDisplayedLabelSize",
        "_computeOrderedItemViewersOfType:",
-       "_computeOrderedItemViewersOfType:inRange:",
+       "_computeOrderedItemViewersOfType:inRange:resizeableOnly:",
+       "_computeOriginForRow:cacheHint:",
        "_computeParams",
        "_computePriorFirstResponder",
+       "_computeResizeableCustomItemViewersInRange:",
        "_computeToolbarItemKeyboardLoop",
        "_computeToolbarItemKeyboardLoopIfNecessary",
        "_computeTravelTimeForInsertionOfItemViewer:",
        "_computeWidthForSpace",
-       "_concatenateMultiDictionaryProperty:toString:",
-       "_concatenateMultiStringProperty:toString:",
-       "_concatenatePhoneProperty:toString:",
-       "_concatenateRelatedProperty:toString:",
-       "_concatenateStringProperty:toString:",
+       "_computedAttributesForElement:",
+       "_computedStringForNode:property:",
+       "_computedStyleForElement:",
+       "_concatenateKeyWithIBCreatorID:",
+       "_concealBinding:",
        "_concludeDefaultKeyLoopComputation",
-       "_concreteFontInit",
-       "_concreteFontInit:",
+       "_concludeReloadChildrenForNode:",
        "_concreteInputContextClass",
        "_conditionallySetsStates",
        "_configSheetDidEnd:returnCode:contextInfo:",
@@ -932,43 +1259,42 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_configureBottomControls",
        "_configureCell:forItemAtIndex:",
        "_configureDirectoryPopup",
+       "_configureFileListModeControlForMode:",
        "_configureForDirectory:name:",
        "_configureForFileListMode:",
+       "_configureForShowingInPanel",
        "_configureGreyButton:index:",
+       "_configureHistoryControl",
        "_configureLabelCellStringValue",
+       "_configureMDParts",
        "_configureMessageView",
        "_configurePathComponentPicker",
        "_configureSavePane",
+       "_configureSearching:",
        "_configureStreamDetails:",
+       "_configureTextViewForWordWrapMode",
        "_confirmSize:force:",
        "_conformsToProtocolNamed:",
        "_connectToCookieStorage",
-       "_connectionDidDie:",
        "_connectionWasBroken",
        "_connectionWasEstablished",
-       "_connectionWasReset",
        "_consistencyCheck:",
        "_consistencyError:startAtZeroError:cacheError:inconsistentBlockError:",
+       "_constrainAndSetDateValue:sendActionIfChanged:beepIfNoChange:",
        "_constrainColorIndexToVisibleBounds:dirtyIfNeeded:",
+       "_constrainDateValue:",
        "_constrainPoint:withEvent:",
        "_constrainSheetAndDisplay:",
        "_constructRequestForURL:isHead:",
-       "_containedInSingleColumnClipView",
-       "_containerDescription",
-       "_containerObservesTextViewFrameChanges",
        "_containerRelativeFrameOfColumn:",
        "_containerRelativeFrameOfInsideOfColumn:",
        "_containerRelativeTitleFrameOfColumn:",
        "_containerTextViewFrameChanged:",
        "_containerViewOfColumns",
        "_containerViewOfTitles",
-       "_containsChar:",
-       "_containsCharFromSet:",
-       "_containsColorForTextAttributesOfNegativeValues",
-       "_containsIMKeys:",
-       "_containsString:",
-       "_containsValue:",
+       "_contentHasShadow",
        "_contentRectExcludingToolbar",
+       "_contentRectForTextBlock:glyphRange:",
        "_contentRectIncludingToolbarAtHome",
        "_contentToFrameMaxXWidth",
        "_contentToFrameMaxXWidth:",
@@ -979,9 +1305,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_contentToFrameMinYHeight",
        "_contentToFrameMinYHeight:",
        "_contentView",
-       "_contentViewBoundsChanged:",
        "_contents",
+       "_contentsOfHTMLData:encoding:strippingTagsSeparatedByString:",
        "_contextAuxiliary",
+       "_contextByfeContext:",
        "_contextMenuEvent",
        "_contextMenuImpl",
        "_contextMenuTarget",
@@ -992,17 +1319,24 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_continueFragmentScrollAfterNavigationPolicy:formState:",
        "_continueLoadRequestAfterNavigationPolicy:formState:",
        "_continueLoadRequestAfterNewWindowPolicy:frameName:formState:",
-       "_continueLoadingWithAddressInfo",
-       "_continueLoadingWithFileDescriptor:",
        "_continueModalOperationPastPrintPanel",
        "_continueModalOperationToTheEnd:",
+       "_continueMovementTracking",
        "_continueRunWithStartTime:duration:",
+       "_continuousCheckingAllowed",
+       "_controlAppearanceChangesOnKeyStateChange",
        "_controlColor",
        "_controlMenuKnownAbsent:",
        "_controlSizeForScrollers",
        "_controlTintChanged:",
        "_controlView:textView:doCommandBySelector:",
-       "_convertDataToString:",
+       "_controllerEditor:didCommit:contextInfo:",
+       "_controllerForNode:createControllers:",
+       "_controllerKeys",
+       "_controllerNodeForObjectAtIndexPath:createControllers:error:",
+       "_convert:row:point:cacheHint:",
+       "_convert:toValueClassUsing:",
+       "_convertCharacters:length:toGlyphs:",
        "_convertPersistentItem:",
        "_convertPoint:fromAncestor:",
        "_convertPoint:toAncestor:",
@@ -1013,55 +1347,74 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_convertRectFromSuperview:test:",
        "_convertRectToSuperview:",
        "_convertStringToData:",
-       "_convertToNSRect:",
+       "_convertStringToNumber:",
        "_convertToQDRect:",
        "_convertToText:",
+       "_convertUnicodeCharacters:length:toGlyphs:",
+       "_convertValueToObjcValue:root:",
        "_cookieRequestHeaderFieldsForURL:withExtraCookies:",
        "_cookieToV0HeaderSegment",
        "_cookiesForURL:withExtraCookies:",
        "_copyDescription",
+       "_copyDetailsFromBinder:",
        "_copyDragCursor",
+       "_copyFlattenedPath",
+       "_copyImageToPasteboard",
+       "_copyLinkFromMenu:",
+       "_copyMutableSetFromToManyArray:",
        "_copyObject:toContainer:withKey:atIndex:replace:",
        "_copyObjectsInContainer:toContainer:withKey:atIndex:replace:",
        "_copyOfCustomView",
+       "_copyOldAttributesFromFilePath:andNewAttributes:toFileAtPath:",
        "_copyReplacingURLWithURL:",
-       "_copyStyleSettingsFromGlyphVector:toSubVector:subVectorIndex:",
-       "_copyToUnicharBuffer:saveLength:",
        "_copyValueOfDescriptorType:toBuffer:ofLength:",
-       "_correct:",
+       "_coreCursorType",
+       "_cornerViewFrame",
+       "_cornerViewHidesWithVerticalScroller",
        "_count",
        "_countBindings",
        "_countDisplayedDescendantsOfItem:",
        "_countDueToReceiver:",
        "_countOfValuesInContainer:withKey:",
-       "_countPartsInFormat:",
+       "_counterImpl",
+       "_counterWithImpl:",
        "_counterpart",
-       "_coveredCharSet",
        "_crackPoint:",
        "_crackRect:",
+       "_crackSize:",
        "_crayonMaskImage",
        "_crayonRowAboveRow:",
        "_crayonRowBelowRow:",
        "_crayonWithColor:",
        "_crayons",
+       "_createATSUTextLayoutForRun:style:",
+       "_createAlert",
        "_createAndShowProgressPanelIfAppropriate:",
-       "_createArrays",
+       "_createArrayWithObjectsAtIndexes:",
+       "_createAttributeDescriptionForNode:",
        "_createAuxData",
        "_createBackingStore",
+       "_createCGColorWithAlpha:",
        "_createCachedImage:",
+       "_createCachesAndOptimizeState",
        "_createCells",
        "_createClipIndicatorIfNecessary",
        "_createColumn:empty:",
-       "_createDefaultCollection",
+       "_createDefaultCollectionRep",
+       "_createDefaultOrUnflattenPageFormatIfNecessary",
+       "_createDefaultOrUnflattenPrintSettingsIfNecessary",
        "_createDockMenu:",
+       "_createElementContent:",
+       "_createEllipsisRunWithStringRange:attributes:",
        "_createFSRefForPath:",
        "_createFileDatabase",
        "_createFileIfNecessary",
+       "_createFloatStorage",
        "_createFontPanelRepFromCollection:removingHidden:",
        "_createFontPanelSizeRep",
        "_createFrameNamed:inParent:allowsScrolling:",
-       "_createGroup:",
        "_createImage:::",
+       "_createImageForLockFocusUseIfNecessary",
        "_createItem:",
        "_createItemFromItemIdentifier:",
        "_createItemTreeWithTargetFrame:clippedAtTarget:",
@@ -1069,53 +1422,67 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_createLRUList:",
        "_createMenuMapLock",
        "_createMovieController",
-       "_createMutableArrayValueGetterForKey:",
-       "_createObservationInfoWithBase:addingObserver:forPropertiesWithIndexes:count:options:context:",
-       "_createObservationInfoWithBase:removingObserver:",
-       "_createObservationInfoWithBase:removingObserver:forPropertiesWithIndexes:count:",
+       "_createMungledDictionary:",
+       "_createMutableArrayValueGetterWithContainerClassID:key:",
+       "_createMutableSetValueGetterWithContainerClassID:key:",
+       "_createMutableSetValueWithSelector:",
+       "_createMutationMethodsOnObject:forKey:",
+       "_createNewNodePreviewHelper",
+       "_createNonExecutableFilterWithKernelFile:filterDescription:",
+       "_createNonNilMutableArrayValueWithSelector:",
+       "_createOtherValueGetterWithContainerClassID:key:",
+       "_createOtherValueSetterWithContainerClassID:key:",
        "_createPDFImageRep",
        "_createPageCacheForItem:",
-       "_createPageFormatFromFlattenedData:",
        "_createPattern",
        "_createPatternFromRect:",
-       "_createPersonRecord:",
-       "_createPrintSettingsFromFlattenedData:",
-       "_createRecentRecord:forPerson:favorite:",
-       "_createSRLanguageModelWithDescription:",
-       "_createSRLanguagePath",
-       "_createSRLanguagePhraseWithString:",
-       "_createSRLanguageWordWithString:",
-       "_createSaveFile",
+       "_createPrefix",
+       "_createProfileFor:",
+       "_createRangeWithNode:",
+       "_createRawData",
+       "_createRelationshipDescriptionForNode:",
        "_createScrollViewAndWindow",
        "_createSelectedRowEntriesArrayIncludingExpandable:includingUnexpandable:withCurrentExpandState:",
        "_createStatusItemControlInWindow:",
        "_createStatusItemWindow",
-       "_createStoredValueGetterForKey:",
-       "_createStoredValueSetterForKey:",
-       "_createSubstringWithRange:",
+       "_createSubfields",
        "_createSurface",
-       "_createTemporaryDirectoryOn:orHiddenIn:andReturnRef:",
+       "_createTemporaryFolderOnVolume:orHiddenInFolder:andReturnRef:",
+       "_createTemporaryMOIDsForObjects:",
        "_createTextView",
        "_createTimer",
-       "_createValueGetterForKey:",
-       "_createValueSetterForKey:",
+       "_createTimer:",
+       "_createValueGetterWithContainerClassID:key:",
+       "_createValuePrimitiveGetterWithContainerClassID:key:",
+       "_createValuePrimitiveSetterWithContainerClassID:key:",
+       "_createValueSetterWithContainerClassID:key:",
        "_createWakeupPort",
        "_createWindowOpaqueShape",
        "_createWindowsMenuEntryWithTitle:enabled:",
        "_createdDate",
        "_creteCachedImageLockIfNeeded",
-       "_crosshairCursor",
        "_crunchyRawUnbonedPanel",
-       "_currentActivation",
+       "_ctTypesetter",
        "_currentAttachmentIndex",
        "_currentAttachmentRect",
+       "_currentBackForwardListItemToResetTo",
        "_currentBranchImage",
        "_currentClient",
-       "_currentFrame",
+       "_currentDeadKeyChar",
+       "_currentFileModificationDate",
+       "_currentFont",
        "_currentInputFilepath",
+       "_currentListLevel",
+       "_currentListNumber",
+       "_currentLocalMousePoint",
        "_currentPath",
        "_currentPoint",
+       "_currentSuiteName",
        "_cursorRectCursor",
+       "_cursorRectForColumn:",
+       "_customMetrics",
+       "_customTitleCell",
+       "_customTitleFrame",
        "_customizationPaletteSheetWindow",
        "_customizesAlwaysOnClickAndDrag",
        "_cycleDrawers:",
@@ -1125,51 +1492,73 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_cycleWindows:",
        "_cycleWindowsBackwards:",
        "_cycleWindowsReversed:",
+       "_dListElementImpl",
        "_darkBlueColor",
        "_darkGrayRGBColor",
+       "_dashboardBehavior:",
+       "_dataForURLComponentType:",
        "_dataForkReferenceNumber",
+       "_dataFromBase64String:",
        "_dataIfDoneBufferingData:",
+       "_dataSource",
+       "_dataSourceChild:ofItem:",
+       "_dataSourceIsItemExpandable:",
+       "_dataSourceNumberOfChildrenOfItem:",
        "_dataSourceRespondsToSortDescriptorsDidChange",
-       "_dataSourceRespondsToWriteDragRows",
+       "_dataSourceRespondsToWriteDragData",
        "_dataSourceSetValue:forColumn:row:",
        "_dataSourceValueForColumn:row:",
+       "_dataWithConversionForType:",
+       "_dataWithoutConversionForType:",
+       "_databaseContextState",
        "_dateByTranslatingLongDateTimeDescriptor:toType:inSuite:",
+       "_dateForIfModifiedSince",
+       "_dateForString:",
+       "_dateValue",
+       "_dateWithCookieDateString:",
        "_deactivate",
        "_deactivateTrackingRectsForApplicationDeactivation",
        "_deactivateWindows",
        "_dealloc",
+       "_deallocAuxiliary",
        "_deallocAuxiliaryStorage",
        "_deallocCursorRects",
+       "_deallocData",
+       "_deallocExtraData",
        "_deallocHardCore:",
        "_deallocateGState",
        "_deallocatePPDStuff",
        "_debug",
+       "_debugAETEElementClassDescriptions",
+       "_debugDrawRowNumberForRow:clipRect:",
+       "_debugDrawRowNumberInCell:withFrame:forRow:",
+       "_debugHeightBucketArrayDescription",
        "_debugLoggingLevel",
-       "_decimalIsNotANumber:",
-       "_decimalPoint",
-       "_declareExtraTypesForTypeArray:",
-       "_declaredKeys",
        "_decodeArrayOfObjectsForKey:",
        "_decodeByte",
-       "_decodeData:",
-       "_decodeData:dataForkData:resourceForkData:",
        "_decodeDepth",
-       "_decodeHeaderData:dataForkData:resourceForkData:",
-       "_decodeMatrixWithCoder:",
+       "_decodeDownloadData:",
+       "_decodeDownloadData:dataForkData:resourceForkData:",
+       "_decodeDownloadHeaderData:dataForkData:resourceForkData:",
        "_decodePropertyListForKey:",
        "_decodeWithoutNameWithCoder:newStyle:",
+       "_decrementInUseCounter",
        "_decrementLine:",
        "_decrementPage:",
-       "_defaultButtonCycleTime",
+       "_decrementSelectedSubfield",
+       "_deepCollectEntitiesInArray:entity:",
        "_defaultButtonPaused",
        "_defaultDocIcon",
        "_defaultFacesForFamily:",
        "_defaultFontSet",
        "_defaultGlyphForChar:",
+       "_defaultHandler",
        "_defaultItemIdentifiers",
        "_defaultKnobColor",
+       "_defaultLineHeight:",
        "_defaultLineHeightForUILayout",
-       "_defaultLineHightForUILayout",
+       "_defaultMessageAttributes",
+       "_defaultNewFolderName",
        "_defaultObjectClass",
        "_defaultObjectClassName",
        "_defaultProgressIndicatorColor",
@@ -1177,33 +1566,49 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_defaultSecondaryColor",
        "_defaultSelectedKnobColor",
        "_defaultSelectionColor",
-       "_defaultSelectorName",
-       "_defaultTableHeaderReverseSortImage",
-       "_defaultTableHeaderSortImage",
+       "_defaultSortDescriptorPrototypeKey",
+       "_defaultTitlebarTitleRect",
        "_defaultType:",
+       "_defaultValueForAttribute:range:",
        "_defaultWritingDirection",
        "_deferredAdjustMovie",
        "_deferredWindowChanged",
        "_defersCallbacksChanged",
-       "_delayedProcessAfterScrollWheel:",
+       "_delayedDeactiveWindowlessWell:",
+       "_delayedEnableRevealoverComputationAfterScrollWheel:",
+       "_delayedFreeRowEntryFreeList",
        "_delayedUpdateSwatch:",
-       "_delegate",
+       "_delayedWriteColors",
        "_delegate:handlesKey:",
+       "_delegateDoesNotCreateRowsInMatrix",
+       "_delegateDragOperationForDraggingInfo:",
+       "_delegateDragSourceActionMask",
+       "_delegateRespondsToGetToolTip",
+       "_delegateRespondsToSelectCellsByRow",
+       "_delegateRespondsToWillDisplayCell",
+       "_delegateTokensFromPasteboard:",
        "_delegateValidation:object:uiHandled:",
        "_delegateWillDisplayCell:forColumn:row:",
        "_delegateWillDisplayCellIfNecessary:forColumn:row:",
        "_delegateWillDisplayOutlineCell:forColumn:row:",
+       "_delegateWriteTokens:toPasteboard:",
        "_delegatedObject",
-       "_deleteAllCharactersFromSet:",
-       "_deleteConfirmSheetDidEnd:returnCode:contextInfo:",
-       "_deleteDictionaries:",
        "_deleteFileAsnyc",
-       "_deleteRecord:",
-       "_deletedUID",
+       "_deleteNode:byEntityName:",
+       "_deleteRange:preflight:killRing:prepend:smartDeleteOK:",
+       "_deleteSelection",
+       "_deleteWithDirection:granularity:killRing:",
+       "_deliverData",
        "_deltaForResizingImageRepView:",
        "_deltaForResizingTextField:",
+       "_deltasFromSnapshot:",
+       "_depopulateOpenRecentMenu:",
+       "_deregisterForAutosaveNotification",
        "_descStringForFont:",
        "_descendantFrameNamed:",
+       "_descriptionValues",
+       "_descriptionWithTabCount:",
+       "_descriptor",
        "_descriptorByTranslatingArray:ofObjectsOfType:inSuite:",
        "_descriptorByTranslatingColor:ofType:inSuite:",
        "_descriptorByTranslatingData:ofType:inSuite:",
@@ -1214,24 +1619,29 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_descriptorByTranslatingString:ofType:inSuite:",
        "_descriptorByTranslatingTextStorage:ofType:inSuite:",
        "_descriptorWithNumber:",
-       "_deselectAll",
        "_deselectAllAndEndEditingIfNecessary:",
        "_deselectAllExcept::andDraw:",
        "_deselectColumn:",
-       "_deselectRow:subrow:members:",
        "_deselectRowRange:",
-       "_deselectsWhenMouseLeavesDuringDrag",
        "_desiredKeyEquivalent",
        "_desiredKeyEquivalentModifierMask",
+       "_desiredTextAreaSize",
+       "_destinationEntityForToOne:",
+       "_destinationFloatValueForScroller:",
+       "_destroyAllPluginsInPendingPageCaches",
+       "_destroyFloatStorage",
+       "_destroyRealWindow",
        "_destroyRealWindow:",
-       "_destroyRealWindowIfNotVisible:",
+       "_destroyRealWindowForAllDrawers",
+       "_destroyRealWindowIfNeeded",
        "_destroyStream",
+       "_destroyStreamWithReason:",
        "_destroyTSMDocument:",
        "_destroyTimer",
-       "_destroyToolbarAssociation:",
        "_destroyWakeupPort",
        "_detachChildren",
        "_detachFromParent",
+       "_detachFromParentWindow",
        "_detachSheetWindow",
        "_detatchNextAndPreviousForAllSubviews",
        "_detatchNextAndPreviousForView:",
@@ -1245,51 +1655,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_dictionaryByTranslatingAERecord:toType:inSuite:",
        "_dictionaryForSavedConfiguration",
        "_dictionaryForSerialNumber:remove:clear:",
+       "_didAccessValueForKey:",
        "_didCancelAuthenticationChallenge:",
+       "_didChangeBackForwardKeys",
+       "_didChangeValue:forRelationship:named:withInverse:",
+       "_didChangeValueForKey:",
+       "_didChangeValuesForArrangedKeys:objectKeys:indexPathKeys:",
        "_didCloseFile:",
+       "_didCommitLoadForFrame:",
+       "_didCreateFile",
        "_didDeleteFile",
-       "_didEndCloseSheet:returnCode:closeContext:",
        "_didEndSheet:returnCode:contextInfo:",
+       "_didFailLoadWithError:forFrame:",
+       "_didFailProvisionalLoadWithError:forFrame:",
        "_didFailWithError:",
+       "_didFinishLoadForFrame:",
        "_didFinishLoading",
        "_didFinishReturnCachedResponse:",
-       "_didLoadData:",
+       "_didLoadData:lengthReceived:",
        "_didMountDeviceAtPath:",
        "_didNSOpenOrPrint",
+       "_didPresentDiscardEditingSheetWithRecovery:contextInfo:",
+       "_didPresentModalAlert:contextInfo:",
        "_didReceiveAuthenticationChallenge:",
        "_didReceiveResponse:cacheStoragePolicy:",
+       "_didSave",
+       "_didSaveChanges",
+       "_didSelectPopup:",
        "_didSetFocusForCell:withKeyboardFocusClipView:",
+       "_didStartProvisionalLoadForFrame:",
+       "_didTurnIntoFault",
        "_didUnmountDeviceAtPath:",
        "_dimmedImage:",
        "_dimpleDoubleClicked:event:",
        "_dimpleDragStarted:event:",
        "_direction",
-       "_directoriesToSearch",
-       "_directoryPopUpButtonClick:",
+       "_directoryListElementImpl",
        "_dirtyRect",
        "_dirtyRectUncoveredFromOldDocFrame:byNewDocFrame:",
        "_dirtyRegion",
        "_disableAutosavingAndColumnResizingNotificationsAndMark:",
-       "_disableCellClipTipCreation",
+       "_disableChangeNotifications",
+       "_disableChangeSync",
        "_disableCompositing",
-       "_disableCursorRectsForHiddenViews",
        "_disableEnablingKeyEquivalentForDefaultButtonCell",
        "_disableLayout",
        "_disableMovedPosting",
-       "_disableNotifications",
        "_disablePosting",
        "_disableResizedPosting",
        "_disableSecurity:",
        "_disableSelectionPosting",
+       "_disableToolTipCreationAndDisplay",
        "_disableTrackingRect:",
+       "_disabledTrackingInNeighborhoodOfMouse",
        "_discardCursorRectsForView:",
+       "_discardEditing",
        "_discardEditingForAllBinders",
+       "_discardEditingOfView:",
        "_discardEventsFromSubthread:",
        "_discardEventsWithMask:eventTime:",
+       "_discardMarkedText",
        "_discardTrackingRect:",
-       "_discardUncommittedChanges",
-       "_disconnect:",
-       "_disconnectFromDaemon:",
+       "_discardTrackingRects:count:",
+       "_discardValidateAndCommitValue:",
        "_diskCacheClear",
        "_diskCacheCreateDirectory",
        "_diskCacheCreateLRUList:",
@@ -1307,74 +1735,85 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_dismissSheet:",
        "_dispatchCallBack:flags:error:",
        "_dispatchCallBackWithError:",
-       "_dispatchKind:",
+       "_displayAllDrawersIfNeeded",
        "_displayChanged",
-       "_displayLDAPServerSheetOrPanel",
+       "_displayDelayedMenu",
+       "_displayIfNeeded",
        "_displayName",
        "_displayName:",
-       "_displayPathForPath:",
+       "_displayProfileChanged",
+       "_displayProfileChanged:",
        "_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:",
-       "_displaySelectedCard",
        "_displaySomeWindowsIfNeeded:",
+       "_displayTemporaryToolTipForView:withDisplayDelegate:displayInfo:",
+       "_displayTemporaryToolTipForView:withString:",
+       "_displayToolTipIfNecessaryIgnoringTime:",
+       "_displayWidth",
        "_displayedLabel",
        "_displayedLabelForRect:",
+       "_dispose:",
        "_disposeBackingStore",
        "_disposeMovieController",
+       "_disposeObjects:",
        "_disposeSurface",
+       "_distForGlyphLocation:",
        "_distanceForVerticalArrowKeyMovement",
        "_distanceFromBaseToTopOfWindow",
        "_distanceFromToolbarBaseToTitlebar",
        "_distanceInDragDirectionBeforeDragAttempt",
        "_distanceInNonDragDirectionBeforeAbortingDragAttempt",
-       "_doAction:",
+       "_distributeAvailableSpaceIfNecessary:toFlexibleSizedItems:lastItemIsRightAligned:",
+       "_divElementImpl",
        "_doActualViewPrinting",
        "_doAnimation",
        "_doAnimationStep",
        "_doAnimationStepWithProgress:",
        "_doAttachDrawer",
+       "_doAttachDrawerIgnoreHidden:",
        "_doAutoscroll:",
        "_doAutoscrolling",
        "_doAutoselectEdge",
+       "_doBidiProcessing",
        "_doCallback",
+       "_doChangeDirectoryForUserDrillIntoNode:",
        "_doClickAndQueueSendingOfAction:",
        "_doClickAndQueueSendingOfAction:removeAndAddColumnsIfNecessary:",
        "_doCloseDrawer",
        "_doCommandBySelector:forInputManager:",
+       "_doDelayedAutocomplete",
        "_doDelayedValidateVisibleToolbarItems",
-       "_doDelete:",
+       "_doDeleteInReceiver:",
        "_doDetachDrawer",
        "_doEditOperation:",
        "_doFinalAnimationStep",
+       "_doFindIndexesOfNodes:inDirectory:visitedNodes:",
        "_doHide",
        "_doImageDragUsingRows:event:pasteboard:source:slideBack:",
-       "_doInsertMember:inMemberList:",
+       "_doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:",
        "_doInvokeServiceIn:msg:pb:userData:error:unhide:",
-       "_doJustifyGlyphVector:withGlyphRange:delta:",
        "_doLayoutTabs:",
        "_doLayoutWithFullContainerStartingAtGlyphIndex:nextGlyphIndex:",
        "_doModalLoop:peek:",
        "_doModifySelectionWithEvent:onColumn:",
+       "_doNameCheck:",
        "_doOpenDrawer",
        "_doOpenFile:ok:tryTemp:",
        "_doOpenFiles:",
-       "_doOpenInSeparateWindow:model:",
        "_doOpenUntitled",
        "_doOptimizedLayoutStartingAtGlyphIndex:forSoftLayoutHole:inTextContainer:lineLimit:nextGlyphIndex:",
-       "_doOrderWindow:relativeTo:findKey:",
-       "_doOrderWindow:relativeTo:findKey:forCounter:force:",
        "_doOrderWindow:relativeTo:findKey:forCounter:force:isModal:",
        "_doPageArea:finishPage:helpedBy:pageLabel:",
+       "_doPopupSearchString",
        "_doPositionDrawer",
        "_doPositionDrawerAndSize:parentFrame:",
        "_doPositionDrawerAndSize:parentFrame:stashSize:",
        "_doPostColumnConfigurationDidChangeNotification:",
        "_doPostedModalLoopMsg:",
-       "_doPrintFile:ok:",
-       "_doPrintFiles:",
-       "_doRemove",
+       "_doPreSaveAssignmentsForRequest:",
+       "_doPrintFiles:withSettings:showPrintPanels:",
        "_doRemoveDrawer",
        "_doRemoveFromSuperviewWithOutNeedingDisplay:",
-       "_doResetOfCursorRects:cellClipTips:",
+       "_doResetOfCursorRects:revealovers:",
        "_doResizeDrawerWithDelta:fromFrame:",
        "_doRotationOnly",
        "_doRunLoop",
@@ -1390,31 +1829,50 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_doStartDrawer",
        "_doStopDrawer",
        "_doSynchronizationOfEditedFieldForColumnWidthChange",
-       "_doTabsInGlyphVector:glyphOrigin:lineWidth:",
-       "_doTiming",
+       "_doTypeSelectNodeInDirectory:withSearchString:visitedNodes:expandedNodesToVisit:recursively:",
        "_doUnhideWithoutActivation",
        "_doUpdate:",
-       "_doUpdateServicesMenu:",
+       "_doUpdateFromSnapshot:deltas:",
+       "_doUserComplete",
        "_doUserExpandOrCollapseOfItem:isExpand:optionKeyWasDown:",
-       "_doUserParagraphStyleLineHeight:fixed:",
        "_doUserParagraphStyleLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:isFinal:",
        "_doUserPathWithOp:inContext:",
-       "_doUserSetAttributes:",
+       "_doUserRemoveMarkerFormatInRange:",
        "_doUserSetAttributes:removeAttributes:",
+       "_doUserSetListMarkerFormat:options:",
+       "_doUserSetListMarkerFormat:options:inRange:level:",
        "_docController:shouldTerminate:",
        "_dockDied",
-       "_dockItem",
        "_dockRestarted",
+       "_document:didPrint:forScriptCommand:",
+       "_document:didPrint:inContext:",
        "_document:didSave:contextInfo:",
+       "_document:didSave:forScriptCommand:",
        "_document:pageLayoutDidReturn:contextInfo:",
        "_document:shouldClose:contextInfo:",
-       "_documentClassNames",
+       "_document:shouldClose:forScriptCommand:",
+       "_documentController:didPrint:appleEventSuspensionID:",
+       "_documentForURL:",
+       "_documentFragmentFromPasteboard:allowPlainText:",
+       "_documentFragmentWithArchive:",
+       "_documentFragmentWithImageResource:",
+       "_documentFragmentWithImpl:",
+       "_documentFragmentWithPaths:",
+       "_documentFromRange:document:documentAttributes:subresources:",
+       "_documentImpl",
+       "_documentInfoDictionary",
+       "_documentRange",
+       "_documentTypeImpl",
+       "_documentTypeString",
        "_documentWindow",
+       "_documentWithImpl:",
        "_doesOwnRealWindow",
-       "_done",
        "_donePoofing",
+       "_dontCountTowardsOriginLoadLimit",
        "_dosetTitle:andDefeatWrap:",
        "_doubleClickAtIndex:limitedRangeOK:",
+       "_downloadAssessment",
+       "_downloadAssessmentWithInitialData:",
        "_downloadEnded",
        "_downloadFinished",
        "_downloadStarted",
@@ -1428,25 +1886,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_dragDataItemViewer",
        "_dragEndedNotification:",
        "_dragFile:fromRect:slideBack:event:showAsModified:",
-       "_dragImageForElement:",
+       "_dragGlyphRange",
+       "_dragImageForLinkElement:",
+       "_dragImageForRowsWithIndexes:tableColumns:event:offset:",
        "_dragLocalSource",
        "_dragShouldBeginFromMouseDown:",
        "_dragUntilMouseUp:accepted:",
+       "_draggedColumnImageInset",
+       "_draggingDocumentViewAtWindowPoint:",
+       "_drawAlternatingRowBackgroundColors:inRect:",
+       "_drawAnalogClockWithFrame:inView:",
        "_drawAnimationStep",
+       "_drawAsMultiClippedContentInRect:",
+       "_drawAtomPartsWithRect:",
+       "_drawAtomPartsWithRect:cellFrame:",
+       "_drawAtomWithRect:cellFrame:",
        "_drawBackgroundForGlyphRange:atPoint:parameters:",
        "_drawBackgroundWithFrame:inView:",
        "_drawBezelBorder:inRect:",
-       "_drawBorder:",
+       "_drawBorder",
        "_drawBorder:inRect:",
        "_drawBorderInRect:",
        "_drawCellAt::insideOnly:",
-       "_drawCellClipTipWithFrame:inToolTipView:forView:",
        "_drawCenteredVerticallyInRect:",
+       "_drawClockAndCalendarWithFrame:inView:",
        "_drawColumn:",
        "_drawColumnHeaderRange:",
-       "_drawColumnsInRect:",
        "_drawContents:faceColor:textColor:inView:",
+       "_drawContentsAtRow:column:clipRect:",
+       "_drawContinuousCapacityWithFrame:inView:",
        "_drawCustomTrackWithTrackRect:inView:",
+       "_drawDelegate",
+       "_drawDiscreteCapacityWithFrame:inView:",
        "_drawDone:success:",
        "_drawDropHighlight",
        "_drawDropHighlightBetweenUpperRow:andLowerRow:atOffset:",
@@ -1456,23 +1927,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_drawEmptyColumnsForView:inRect:",
        "_drawEndCapInRect:",
        "_drawFocusRingWithFrame:",
+       "_drawFooterInRect:",
        "_drawForTransitionInWindow:usingHalftonePhaseForWindowOfSize:",
        "_drawFrame",
        "_drawFrame:",
        "_drawFrameInterior:clip:",
-       "_drawFrameRects:",
        "_drawFrameShadowAndFlushContext:",
        "_drawFromRect:toRect:operation:alpha:compositing:flipped:ignoreContext:",
        "_drawGapStyleDropHighlightBetweenUpperRow:andLowerRow:atOffset:inGapRect:",
        "_drawGlyphsForGlyphRange:atPoint:parameters:",
        "_drawGrowBoxWithClip:",
+       "_drawHeaderAndFooter",
        "_drawHeaderCell:withFrame:withStateFromColumn:",
        "_drawHeaderFillerInRect:matchLastState:",
+       "_drawHeaderInRect:",
        "_drawHeaderOfColumn:",
        "_drawHighlightWithFrame:inView:",
        "_drawHighlighted:",
        "_drawIcon",
        "_drawIndicatorInRect:",
+       "_drawInsertionPointIfNecessary",
        "_drawInsertionPointInRect:color:",
        "_drawKeyViewOutline:",
        "_drawKeyboardFocusRingWithFrame:",
@@ -1480,6 +1954,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_drawKeyboardFocusRingWithFrame:inView:",
        "_drawKeyboardUIIndicationForView:debuggingIndex:",
        "_drawKeyboardUILoopStartingAtResponder:validOnly:",
+       "_drawLabelHighlightIfNecessaryWithFrame:inView:fullHighlight:",
+       "_drawLineForGlyphRange:inContext:from:to:at:thickness:lineOrigin:breakForDescenders:",
        "_drawLineForGlyphRange:type:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:",
        "_drawLiveResizeCachedImage",
        "_drawLiveResizeHighlightWithFrame:inView:",
@@ -1488,8 +1964,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_drawMiniWindow:",
        "_drawOptimizedRectFills",
        "_drawOrientedLabel:inRect:",
+       "_drawOutlineCell:withFrame:inView:",
        "_drawOverflowHeaderInRect:",
        "_drawProgressArea",
+       "_drawRatingWithFrame:inView:",
        "_drawRealTitleWithFrame:inView:",
        "_drawRect:clip:",
        "_drawRect:liveResizeCacheCoveredArea:",
@@ -1497,14 +1975,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_drawRect:withOpaqueAncestor:",
        "_drawRectIfEmpty",
        "_drawRectIfEmptyWhenSubviewsCoverDirtyRect:",
+       "_drawRelevancyWithFrame:inView:",
        "_drawRemainderArea",
        "_drawRepresentation:",
        "_drawResizeIndicators:",
+       "_drawRevealoverWithFrame:inView:forView:",
+       "_drawRowHeaderBackgroundInRect:",
+       "_drawRowHeaderSeparatorAsSurface",
+       "_drawRowHeaderSeparatorInClipRect:",
        "_drawScrollViewFocusRing:clipRect:needsFullDisplay:",
        "_drawSortIndicatorIfNecessaryWithFrame:inView:",
        "_drawStandardPopUpBorderWithFrame:inView:",
        "_drawTabViewItem:inRect:",
        "_drawTableExteriorFocusRingIfNecessaryInClipRect:",
+       "_drawTextFieldWithStepperWithFrame:inView:",
        "_drawThemeBackground",
        "_drawThemeBezelBorder:inRect:",
        "_drawThemeBezelWithFrame:inView:",
@@ -1513,59 +1997,79 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_drawThemePopUpBorderWithFrame:inView:bordered:style:",
        "_drawThemeProgressArea:",
        "_drawThemeTab:withState:inRect:",
+       "_drawTickMarksWithFrame:inView:",
        "_drawTitleBar:",
        "_drawTitleStringIn:withColor:",
        "_drawTitlebar:",
-       "_drawTitlebarLines:inRect:clippedByRect:",
-       "_drawTitlebarPattern:inRect:clippedByRect:forKey:alignment:",
        "_drawTitledFrame:",
        "_drawTitlesForView:inRect:",
        "_drawToolbarTransitionIfNecessary",
+       "_drawUnifiedToolbar:",
+       "_drawUnifiedToolbarBackgroundInRect:withState:",
+       "_drawView:",
        "_drawViewBackgroundInRect:",
-       "_drawWinTab:inRect:tabColor:shadowColor:",
        "_drawWindowsGaugeRects:",
        "_drawWithImageCache",
-       "_drawerIsOpen",
        "_drawerTakeFocus",
-       "_drawerTransform",
        "_drawerVelocity",
+       "_drawerWindow",
        "_drawingEndSeparator",
-       "_drawingInClipTip",
+       "_drawingInRevealover",
        "_drawingRectForPart:",
+       "_drawnByAncestor",
        "_drawsBackground",
        "_drawsHorizontalGrid",
+       "_drawsNothing",
+       "_drawsOutsideBBox",
+       "_drawsOwnDescendants",
        "_drawsVerticalGrid",
+       "_drawsWithTintWhenHidden",
+       "_dropNode:",
        "_dstDraggingExitedAtPoint:draggingInfo:stillInViewBounds:",
-       "_dumpBookSegments",
+       "_dumpSetRepresentation:",
        "_dynamicColorsChanged:",
+       "_dynamicToolTipManager",
+       "_dynamicToolTipManagerClass",
+       "_dynamicToolTipManagerInstances",
+       "_dynamicToolTipsEnabled",
        "_edge",
-       "_editClickedCell:",
-       "_editCustomLabels:",
-       "_editableBinderAtIndex:forTableView:",
+       "_edges",
        "_editableBinderForTableColumn:",
+       "_editableStateWithMode:",
        "_editedDocumentCount",
-       "_editingBinder",
+       "_editingDelegateForwarder",
        "_editingFirstResponderIfIsASubview",
        "_editingInView:",
+       "_editor:didChangeEditingState:bindingAdaptor:",
+       "_effect",
        "_effectiveFocusRingType",
-       "_elementAtPoint:",
-       "_emptyMatrix:",
+       "_elementAtWindowPoint:",
+       "_elementAttributeRelationship",
+       "_elementFromTidyDoc:element:",
+       "_elementImpl",
+       "_elementIsBlockLevel:",
+       "_elementWithImpl:",
+       "_embedElementImpl",
+       "_emptyContents",
+       "_emptyStyle",
        "_enableAutosavingAndColumnResizingNotifications",
-       "_enableCellClipTipCreation",
+       "_enableChangeNotifications",
+       "_enableChangeSync",
        "_enableCompositing",
-       "_enableCursorRectsForNonHiddenViews",
        "_enableEnablingKeyEquivalentForDefaultButtonCell",
        "_enableItems",
        "_enableLayout",
        "_enableLogging:",
+       "_enableMatrixLiveResizeImageCacheing",
        "_enableMovedPosting",
-       "_enableNotifications",
        "_enablePosting",
-       "_enablePrivateEditing",
        "_enableResizedPosting",
        "_enableSecurity:",
        "_enableSelectionPostingAndPost",
+       "_enableToolTipCreationAndDisplay",
        "_enableTrackingRect:",
+       "_enabledStateWithMode:",
+       "_enablesOnWindowChangedKeyState",
        "_enclosingBrowser",
        "_enclosingBrowserView",
        "_enclosingSidebarItem",
@@ -1576,7 +2080,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_encodeMapTable:forTypes:withCoder:",
        "_encodePropertyList:forKey:",
        "_encodeWithoutNameWithCoder:newStyle:",
-       "_encodingCantBeStoredInEightBitCFString",
        "_encounteredCloseError",
        "_endChanging",
        "_endColumnAnimationOptimization",
@@ -1585,6 +2088,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_endCustomizationPanel",
        "_endDragging",
        "_endDrawForDragging",
+       "_endDrawView:",
        "_endEditingIfEditedCellIsChildOfItemEntry:",
        "_endEditingIfFirstResponderIsASubview",
        "_endEditingIfNecessaryWhenDeselectingColumnRange:",
@@ -1593,105 +2097,170 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_endEditingIfNecessaryWhenSelectingRowRange:byExtendingSelection:",
        "_endInsertionOptimization",
        "_endInsertionOptimizationWithDragSource:force:",
-       "_endLayout",
        "_endListeningForApplicationStatusChanges",
        "_endListeningForDeviceStatusChanges",
+       "_endListeningForPowerStatusChanges",
+       "_endListeningForSessionStatusChanges",
        "_endLiveResize",
        "_endLiveResizeAsTopLevel",
        "_endLiveResizeForAllDrawers",
        "_endMyEditing",
        "_endMyEditingAndRemainFirstResponder",
        "_endOfParagraphAtIndex:",
-       "_endRunMethod",
        "_endScrolling",
-       "_endStateReached",
        "_endTabWidth",
        "_endToolbarEditingMode",
        "_endTopLevelGroupings",
-       "_engineDataTypeForPropertyType:",
+       "_enqueueEndOfEventNotification",
+       "_ensureAndLockPreferredLanguageLock",
        "_ensureCapacity:",
        "_ensureLayoutCompleteToEndOfCharacterRange:",
+       "_ensureLocalizationDictionaryIsLoaded",
+       "_ensureMetadataLoaded",
        "_ensureMinAndMaxSizesConsistentWithBounds",
+       "_ensureObjectsAreMutable",
        "_ensureRangeCapacity:",
-       "_ensureSelectionAfterRemoveWithPreferredIndex:",
+       "_ensureSelectionAfterRemoveWithPreferredIndex:sendObserverNotifications:",
        "_ensureSubviewNextKeyViewsAreSubviews",
-       "_entries",
+       "_enterElement:tag:display:",
+       "_enterLibXML2ElementNode:tag:",
+       "_entity",
+       "_entityClass",
+       "_entityDescriptionForObjectID:",
+       "_entityForCurrentRow",
+       "_entityForExternalName:inConfigurationNamed:",
+       "_entityForName:",
+       "_entityID",
+       "_entityImpl",
+       "_entryForPath:",
+       "_entryForSpecifier:",
        "_enumeratedArgumentBindings:",
        "_enumeratedBindings:storage:number:numberFirstBinding:maxNumber:",
-       "_enumeratedDisplayPatternBindings:",
+       "_enumeratedDisplayPatternTitleBindings:",
        "_enumeratedEditableBindings:",
        "_enumeratedEnabledBindings:",
        "_enumeratedHiddenBindings:",
-       "_enumerationsInSuite:",
+       "_enumeratedPredicateBindings:",
+       "_enumerationBinding",
+       "_enumeratorDescriptionsFromImplDeclarations:presoDeclarations:",
        "_equalyResizeColumnsByDelta:resizeInfo:",
+       "_errorAlert:wasPresentedWithResult:inContext:",
+       "_errorWasPresentedWithRecovery:inContext:",
        "_errorWithCode:",
-       "_establishConnection",
+       "_escapeCharacters:amount:inString:appendingToString:",
+       "_escapeHTMLAttributeCharacters:withQuote:appendingToString:",
+       "_escapedStringForString:escapeQuotes:",
        "_evaluateRelativeToObjectInContainer:",
        "_evaluateToBeginningOrEndOfContainer:",
        "_evaluationErrorNumber",
-       "_eventDelegate",
+       "_eventImpl",
        "_eventInTitlebar:",
        "_eventRecordDelta:",
        "_eventRef",
        "_eventRelativeToWindow:",
-       "_eventWithCGSEvent:",
+       "_eventWithImpl:",
        "_evilHackToClearlastLeftHitInWindow",
-       "_exchangeDollarInString:withString:",
+       "_excludeObject:fromPropertyWithKey:",
+       "_excludedFromVisibleWindowList",
+       "_execute",
+       "_executeAdd:didCommitSuccessfully:actionSender:",
+       "_executeAddChild:didCommitSuccessfully:actionSender:",
+       "_executeFetch:didCommitSuccessfully:actionSender:",
+       "_executeInsert:didCommitSuccessfully:actionSender:",
+       "_executeInsertChild:didCommitSuccessfully:actionSender:",
+       "_executePerformAction",
+       "_executeSQLString:",
+       "_executeSave:didCommitSuccessfully:actionSender:",
+       "_executeSelectNext:didCommitSuccessfully:actionSender:",
+       "_executeSelectPrevious:didCommitSuccessfully:actionSender:",
+       "_executionContext",
        "_existsForArray:",
+       "_exitElement:tag:display:startIndex:",
+       "_exitLibXML2ElementNode:tag:startIndex:",
        "_expand",
        "_expandItemEntry:expandChildren:",
        "_expandItemEntry:expandChildren:startLevel:",
-       "_expandItemsWithItemEntries:expandChildren:",
        "_expandRep:",
-       "_expandedCFCharacterSet",
+       "_expandSelectionToGranularity:",
+       "_expandedNodesForObservedNode:",
        "_expirationDate",
+       "_expirationForResponse:",
        "_expiresDate",
-       "_exposeExtraBindings",
+       "_explicitlyCannotAdd",
+       "_explicitlyCannotAddChild",
+       "_explicitlyCannotInsert",
+       "_explicitlyCannotInsertChild",
+       "_explicitlyCannotRemove",
+       "_exposeBinding:valueClass:",
        "_exposedBindings",
+       "_expressionWithSubstitutionVariables:",
+       "_extendCharacterToGlyphMapToInclude:",
+       "_extendGlyphToWidthMapToInclude:font:",
+       "_extendNextScrollRelativeToCurrentPosition",
+       "_extendUnicodeCharacterToGlyphMapToInclude:",
        "_extendedCharRangeForInvalidation:editedCharRange:",
+       "_extendedGlyphRangeForRange:maxGlyphIndex:drawingToScreen:",
        "_extensionsFromTypeInfo:",
        "_extraWidthForCellHeight:",
-       "_extractResponseStatusLineFromBytes:length:",
        "_faceForFamily:fontName:",
-       "_fadePopUpWindow",
+       "_familyName",
        "_fastCStringContents:",
        "_fastCharacterContents",
-       "_fastDrawGlyphs:length:font:color:containerSize:usedRect:startingLocation:inRect:onView:context:pinToTop:",
-       "_fastHighlightGlyphRange:withinSelectedGlyphRange:",
-       "_fastestEncodingInCFStringEncoding",
-       "_fetchColorTable:",
+       "_fastDrawGlyphs:advances:length:font:color:containerSize:usedRect:startingLocation:inRect:onView:context:pinToTop:",
+       "_fastDrawString:attributes:length:inRect:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:typesetterBehavior:paragraphStyle:lineBreakMode:boundingRect:",
+       "_fastGetCachedRect:forRow:",
+       "_faultHandler",
+       "_feContext",
+       "_feImage",
+       "_feSampler",
+       "_feedbackWindowIsVisible",
+       "_fetch:",
+       "_fetchAllInstancesFromStore:intoContext:",
        "_fetchCurrentDirectory",
        "_fetchExpandedFrameSize",
        "_fetchExpandedState",
        "_fetchFileListMode",
+       "_fetchOrderedByFileProperty:orderedAscending:",
+       "_fetchRequestTemplatesByName",
        "_fetchRootDirectory",
        "_fetchUserSetHideExtensionButtonState",
+       "_fieldEditor",
+       "_fieldSetElementImpl",
        "_fileAttributes",
+       "_fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:",
        "_fileButtonOrigin",
-       "_fileExtensions",
-       "_fileListModeSwitcher",
+       "_fileListModeControlCell",
+       "_fileLocator",
+       "_fileModificationDate",
+       "_fileModificationDateForURL:",
+       "_fileNameExtensionsForType:forUseInSavePanel:",
        "_fileOperation:source:destination:files:",
        "_fileOperationCompleted:",
        "_filePathValue",
        "_fileURLValue",
-       "_filenameHasNonEmptyAllowedFileType:",
+       "_fileWrapperForURL:",
+       "_fileWrapperRepresentation",
+       "_filenameForCollection:",
+       "_filenameHasAcceptableFileType:",
+       "_filenameHasNonEmptyAcceptableFileType:",
        "_fillBackground:withAlternateColor:",
-       "_fillFloatArray:",
        "_fillGlyphHoleAtIndex:desiredNumberOfCharacters:",
        "_fillGrayRect:with:",
+       "_fillInBlock:forElement:backgroundColor:extraMargin:extraPadding:",
        "_fillLayoutHoleAtIndex:desiredNumberOfLines:",
-       "_fillPlatformGlyphArray:withGlyphsInRange:",
-       "_fillPlatformTextStyle:withAttributes:disableKerning:",
        "_fillSpellCheckerPopupButton:",
+       "_fillerRectHeight",
        "_fillsClipViewHeight",
        "_fillsClipViewWidth",
-       "_filterAndSortNodeList:",
+       "_filterList",
        "_filterNodeList:",
        "_filterObjects:",
-       "_finalObserver",
+       "_filterRestrictsInsertion",
+       "_filteredAndSortedChildrenOfNode:",
+       "_finalProgressComplete",
        "_finalScrollingOffsetFromEdge",
-       "_finalSlideLocation",
        "_finalize",
+       "_finalizeStatement",
        "_findButtonImageForState:",
        "_findCoercerFromClass:toClass:",
        "_findColorListNamed:forDeviceType:",
@@ -1699,138 +2268,143 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_findDictOrBitmapSetNamed:",
        "_findDragTargetFrom:",
        "_findFirstItemInArray:withItemIdentifier:",
+       "_findFirstKeyViewInDirection:forKeyLoopGroupingView:",
        "_findFirstOne::",
-       "_findFirstUserSelectableRowStartingAtRow:stoppingAtRow:",
+       "_findFirstUserSelectableRowStartingAtRow:stoppingAtRow:byExtendingSelection:",
        "_findFirstValidKeyViewStartingFrom:inTabViewItem:",
-       "_findFont:size:matrix:flag:",
        "_findFrameInThisWindowNamed:",
        "_findFrameNamed:",
        "_findHitItemViewer:",
        "_findIndexOfFirstDuplicateItemWithItemIdentier:",
        "_findItemViewerAtPoint:",
-       "_findLastFieldLabelforAttribute:startingAt:",
+       "_findKeyLoopGroupingViewFollowingKeyLoopGroupingView:direction:",
        "_findLastViewInKeyViewLoop",
        "_findLastViewInKeyViewLoopStartingAtView:",
        "_findMisspelledWordInString:language:learnedDictionaries:wordCount:countOnly:",
-       "_findNext:",
        "_findParentWithLevel:beginingAtItem:childEncountered:",
        "_findPreviousNextTab:loop:startingAtTabItem:",
-       "_findRecord:ofType:",
-       "_findRecordsOfTypes:withAttribute:value:matchType:retrieveAttributes:",
        "_findScrollerToAutoLiveScrollInWindow:",
-       "_findSidebarNodeForVirtualNode:",
        "_findSystemImageNamed:",
        "_findWindowUsingCache:",
        "_findWindowUsingRealWindowNumber:",
-       "_finishDecoding",
+       "_finishAutosavingWithSuccess:",
+       "_finishDownloadDecoding",
        "_finishHitTracking:",
        "_finishInitialization",
        "_finishMessagingClients:",
        "_finishModalOperation",
        "_finishPrintFilter:filter:",
+       "_finishPrintingDocumentsInContext:success:",
        "_finishSaveDocumentTo:withType:forSaveOperation:withDelegate:didSaveSelector:contextInfo:",
-       "_finishWritingFileNamed:in:byExchangingWithFileIn:",
-       "_finishWritingItemAt:byMovingItemAt:",
+       "_finishWritingFileAtPath:byMovingFileAtPath:",
+       "_finishWritingFileNamed:inFolder:byExchangingWithFileInFolder:",
        "_finishedLoading",
        "_finishedLoadingResourceFromDataSource:",
        "_finishedMakingConnections",
-       "_finishedUpdatingIndex:",
        "_finishedWiringNibConnections",
-       "_finishedWithFileDescriptor",
-       "_fireWithSelection:",
-       "_firstEnabledPart",
+       "_fireFirstAndSecondLevelFaultsForObject:withContext:",
        "_firstHighlightedCell",
        "_firstMoveableItemIndex",
        "_firstPassGlyphRangeForBoundingRect:inTextContainer:hintGlyphRange:okToFillHoles:",
        "_firstPassGlyphRangeForBoundingRect:inTextContainer:okToFillHoles:",
-       "_firstSelectableRow",
+       "_firstPresentableName",
+       "_firstResponderIsControl",
        "_firstSelectableRowInMatrix:inColumn:",
        "_firstTextViewChanged",
        "_fixCommandAlphaShifts",
        "_fixGlyphInfo:inRange:",
        "_fixHeaderAndCornerViews",
+       "_fixJoiningOfSelectedAtoms",
        "_fixKeyViewForView:",
-       "_fixNSHostLeak",
-       "_fixNSMachPortLeak",
-       "_fixNSMessagePortLeak",
-       "_fixNSSocketPortLeak",
        "_fixSelectionAfterChangeInCharacterRange:changeInLength:",
        "_fixSharedData",
        "_fixTargetsForMenu:",
+       "_fixedSelectionRangeForRange:affinity:",
+       "_fixedSelectionRangesForRanges:affinity:",
        "_fixup:numElements:",
+       "_fixupKeyboardLoop",
        "_fixupSortDescriptorPlaceholdersIfNecessary",
-       "_flashSelectedPopUpItem",
        "_flattenMenu:",
        "_flattenMenuItem:",
-       "_floatWidthForCharacters:stringLength:fromCharacterPosition:numberOfCharacters:withPadding:applyRounding:attemptFontSubstitution:widths:fonts:glyphs:numGlyphs:letterSpacing:wordSpacing:smallCaps:fontFamilies:",
+       "_floatWidthForRun:style:widths:fonts:glyphs:startPosition:numGlyphs:",
        "_flushAEDesc",
        "_flushAllCachedChildren",
+       "_flushCachedCarbonPrintersByName",
        "_flushCachedChildrenForNode:",
-       "_flushCachedFontInfo",
+       "_flushCachedObjects",
        "_flushNotificationQueue",
-       "_flushToDisk",
+       "_focusDidChange:",
        "_focusFromView:withContext:",
        "_focusInto:withClip:",
        "_focusOnCache:",
+       "_focusRingCGColor",
        "_focusRingFrameForFrame:cellFrame:",
        "_focusRingRect",
+       "_focusRingVisibleRect",
        "_focusedCrayon",
        "_fondID",
+       "_fontAttributesFromFontPasteboard",
+       "_fontDescriptor",
+       "_fontDescriptorForFontPanel",
+       "_fontElementImpl",
+       "_fontFaceRuleImpl",
        "_fontFallbackType",
        "_fontForName:size:",
-       "_fontFromBindingsAtIndex:referenceFont:fallbackFont:ignoreIfNotController:",
+       "_fontFromBindingsWithMode:referenceFont:fallbackFont:",
        "_fontFromDescriptor:",
        "_fontNameForFamily:face:",
        "_fontNameForFont:",
        "_fontSetChanged:",
        "_fontSetWithName:",
-       "_fontWithName:scale:skew:oblique:translation:",
-       "_fontWithName:size:matrix:",
        "_fontWithNumber:size:bold:italic:",
-       "_forArgument:getType:andSuite:",
+       "_footerHeight",
        "_forKey:getType:andSuite:",
-       "_forPropertyWithIndex:getWantsNotification:oldValue:newValue:",
        "_forSRSpeechObject:objectForProperty:usingDataSize:withRequestedObjectClass:",
        "_forSRSpeechObject:setObject:forProperty:usingDataSize:",
        "_forceAppendItem:",
-       "_forceAscenderDelta",
+       "_forceCharIndexesAllocation",
        "_forceDisplayToBeCorrectForViewsWithUnlaidGlyphs",
        "_forceFixAttributes",
        "_forceFlushWindowToScreen",
        "_forceInsertItem:atIndex:",
        "_forceMoveItemFromIndex:toIndex:",
+       "_forceOriginalFontBaseline",
+       "_forceRedrawDragInsertionIndicator",
        "_forceRemoveItemFromIndex:",
        "_forceReplaceItemAtIndex:withItem:",
        "_forceResetTexturedWindowDragMargins",
        "_forceSendAction:notification:firstResponder:",
+       "_forceSendDoubleActionForPreviewCell",
        "_forceSetColor:",
        "_forceSetLastEditedStringValue:",
        "_forceSetView:",
-       "_forceSingleLoad",
-       "_forceSynchronizedScrollingAnimation",
        "_forceUpdateDimpleLocation",
-       "_forget:",
+       "_forceUpdateFocusRing",
        "_forgetData:",
-       "_forgetRecentDocumentAt:",
+       "_forgetObject:propagateToObjectStore:",
        "_forgetSpellingFromMenu:",
        "_forgetWord:inDictionary:",
        "_formDelegate",
-       "_format:withDigits:",
+       "_formElementImpl",
+       "_formElementWithImpl:",
+       "_formatCocoaErrorString:parameters:applicableFormatters:count:",
        "_formatObjectValue:invalid:",
-       "_formatter",
-       "_forwardToCFNetwork",
-       "_forwarderForObserver:relationshipKey:valueKeyPath:",
+       "_fragmentData",
+       "_fragmentImpl",
        "_frame",
-       "_frameDidDrawTitle",
-       "_frameForDataSource:",
+       "_frameDuration",
+       "_frameDurationAt:",
+       "_frameElementImpl",
+       "_frameForCurrentSelection",
        "_frameForDataSource:fromFrame:",
        "_frameForView:",
        "_frameForView:fromFrame:",
        "_frameLoadDelegateForwarder",
-       "_frameOfCell:",
        "_frameOfColumns",
        "_frameOfOutlineCellAtRow:",
        "_frameOrBoundsChanged",
+       "_frameSetElementImpl",
+       "_frameViewAtWindowPoint:",
        "_freeCache:",
        "_freeClients",
        "_freeImage",
@@ -1840,107 +2414,130 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_freeServicesMenu:",
        "_freeSpeechItems",
        "_freshnessLifetime",
-       "_fromContainerInfo:andKeyCode:inCommandConstructionContext:getAdjustedContainerInfo:andKey:",
-       "_fromRecord:inCommandConstructionContext:getContainerInfo:",
-       "_fromRecord:inCommandConstructionContext:getContainerInfo:andKey:",
+       "_fromContainerInfo:andKeyCode:getAdjustedContainerInfo:andKey:",
+       "_fromRecord:getContainerInfo:",
+       "_fromRecord:getContainerInfo:andKey:",
        "_fromScreenCommonCode:",
        "_fsRefValue",
        "_fullDescription:",
-       "_fullLabel",
        "_fullLayout",
-       "_fullName",
        "_fullPathForService:",
-       "_fullPhoneticName",
        "_gatherFocusStateInto:upTo:withContext:",
        "_gaugeImage:",
+       "_gc:",
        "_generateCompositedBackground",
+       "_generateErrorDetailForKey:withValue:",
+       "_generateErrorWithCode:andMessage:forKey:andValue:additionalDetail:",
        "_generateFrameName",
-       "_generateIdentifier",
+       "_generateHTML",
+       "_generateIDWithSuperEntity:nextID:",
+       "_generateInverseRelationshipsAndMore",
+       "_generateMetalBackground",
+       "_generateModel:",
        "_generatePSCodeHelpedBy:operation:",
+       "_generateProperties",
        "_generateScaledBackground",
        "_generatedMIMETypeForURLScheme:",
        "_genericDragCursor",
-       "_getAllAttributesIncludeValues:",
-       "_getAttributesInNode:fromBuffer:listReference:count:includeValues:",
+       "_genericMutableSetValueForKey:",
+       "_genericValueForKey:withIndex:flags:",
+       "_getAETEElementClassDescriptions:exceptThoseWithKeys:andSupers:",
+       "_getATSTypesetterGuts",
+       "_getArguments:withParameters:",
+       "_getAuxData",
        "_getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:",
        "_getBracketedStringFromBuffer:string:",
        "_getBrowser:browserColumn:",
-       "_getBytesAsData:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:",
-       "_getCString:maxLength:encoding:",
+       "_getBucketForSeekingToPoint:",
+       "_getBucketForSeekingToRow:",
+       "_getBucketLocationForBucket:",
+       "_getButtonImageParts:::",
+       "_getBytesAsData:maxLength:usedLength:encoding:options:range:remainingRange:",
+       "_getCGCustomColorSpace",
+       "_getCGImageRefCreateIfNecessary",
        "_getCacheWindow:andRect:forRep:",
        "_getCharactersAsStringInRange:",
-       "_getContents:",
-       "_getConvertedDataForType:",
+       "_getColorFromImageAtPoint:",
+       "_getColumn:row:cell:cellFrame:toolTipRect:wantsToolTip:wantsRevealover:atPoint:",
+       "_getCommonTypeFor:",
        "_getConvertedDataFromPasteboard:",
-       "_getCounterpart",
        "_getCursorBitmapWidth:andHeight:",
        "_getData:encoding:",
-       "_getDefaultPreferedColumnContentWidth",
-       "_getDirtyRects:clippedToRect:count:",
+       "_getDirtyRects:clippedToRect:count:boundingBox:",
+       "_getDisplayDelay:inQuickMode:forView:",
+       "_getDisplayDelegateFadesOutWhenInactive:",
        "_getDocInfoForKey:",
+       "_getDocument",
        "_getDrawingRow:andCol:",
-       "_getEightBitRGBMeshedBitmap:rowBytes:extraSample:reverseScanLines:removeAlpha:",
-       "_getFSRefForApplicationName:",
+       "_getExternalData:",
        "_getFSRefForPath:",
-       "_getFSRefForServiceName:",
-       "_getFSSpecForPath:",
+       "_getFloat:forNode:property:",
        "_getFocusRingFrame",
+       "_getFullyFormedCellAtColumn:row:",
        "_getGaugeFrame",
        "_getGlobalWindowNumber:andRect:forRepresentation:",
        "_getGlyphIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:",
        "_getGlyphIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:",
-       "_getHiddenList",
+       "_getGlyphIndexForLocationInWindow:roundToClosest:fraction:layoutManager:textStorage:",
+       "_getITypeFor:",
+       "_getImageAndHotSpotFromCoreCursor",
+       "_getInsertionGlyphIndexForDrag:",
        "_getInstanceForIdentifier:",
+       "_getKernelFolderCPath",
+       "_getKeys:forPropertyDescriptionKind:",
        "_getLocalPoint:",
+       "_getLocalizedLabels:andLocalizedValues:",
        "_getMatchingRow:forString:inMatrix:startingAtRow:prefixMatch:caseSensitive:",
-       "_getNextResizeEvent",
+       "_getNewTemporaryId",
        "_getNextResizeEventInvalidatingLiveResizeCacheIfNecessary:",
        "_getNodeForKey:inTable:",
+       "_getPageHeaderRect:pageFooterRect:forBorderSize:",
        "_getPartStruct:numberOfParts:withInnerBounds:",
        "_getPosition:",
        "_getPositionFromServer",
        "_getProgressFrame",
+       "_getReceiversSpecifierOrUnnamedArgument:fromEvent:usingDescription:",
        "_getRemainderFrame",
-       "_getRemainingNominalParagraphGlyphRange:andParagraphSeparatorRange:forGlyphAtIndex:",
+       "_getRemainingNominalParagraphRange:andParagraphSeparatorRange:charactarIndex:layoutManager:string:",
        "_getRidOfCacheAndMarkYourselfAsDirty",
        "_getRow:andCol:ofCell:atRect:",
        "_getRow:column:nearPoint:",
+       "_getRowHeaderFixedContentRect:rowHeaderScrollableContentVisibleRect:",
+       "_getSelectorForType:",
+       "_getSymbolForType:",
+       "_getTextAreaFrame:stepperCellFrame:forDatePickerCellFrame:",
        "_getTextColor:backgroundColor:",
-       "_getThemeImageTabBarRect:backgroundRect:fillBackgroundRect:",
        "_getTiffImage:ownedBy:",
        "_getTiffImage:ownedBy:asImageRep:",
+       "_getUUID",
        "_getUndoManager:",
        "_getVRefNumForPath:",
-       "_getValue:forKey:",
-       "_getValue:forObj:",
-       "_getValue:forType:",
-       "_getVolumes:iDiskRefNum:",
+       "_getVisibleRowRange:columnRange:",
        "_getWindowCache:add:",
        "_giveUpFirstResponder:",
-       "_globalWindowNum",
+       "_globalIDChanged:",
+       "_globalIDForObject:",
+       "_globalIDsForObjects:",
        "_glyph",
-       "_glyphAtIndex:characterIndex:glyphInscription:isValidIndex:",
-       "_glyphDescription",
-       "_glyphDrawsOutsideLineHeight:",
+       "_glyphAdvancementCache:",
+       "_glyphAdvancementCache:renderingMode:",
        "_glyphForFont:baseString:",
-       "_glyphGenerator",
        "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:",
-       "_glyphInfoAtIndex:",
        "_glyphRangeForBoundingRect:inTextContainer:fast:okToFillHoles:",
        "_glyphRangeForCharacterRange:actualCharacterRange:okToFillHoles:",
        "_goBack",
        "_goForward",
+       "_goToHistoryState:",
        "_goToItem:withLoadType:",
        "_goneMultiThreaded",
-       "_goneSingleThreaded",
        "_gradientImage",
        "_graphiteAlternatingRowColor",
        "_graphiteControlTintColor",
        "_graphiteKeyboardFocusColor",
-       "_gray136Color",
        "_gray204Color",
        "_gray221Color",
        "_grestore",
+       "_growBoxOwner",
        "_growBoxRect",
        "_growCachedRectArrayToSize:",
        "_growContentReshapeContentAndToolbarView:animate:",
@@ -1948,14 +2545,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_growFrameForDropGapStyleIfNecessary",
        "_growWindowReshapeContentAndToolbarView:animate:",
        "_gsave",
+       "_guaranteeStorageInDictionary:addBinding:",
        "_guess:",
-       "_handCursor",
-       "_handleAEOpen",
+       "_guessesForMisspelledSelection",
+       "_handleAEOpen:",
+       "_handleAEOpenContentsEvent:replyEvent:",
        "_handleAEOpenDocuments:",
-       "_handleAEPrintDocuments:",
+       "_handleAEPrintDocuments:withSettings:showPrintPanels:",
        "_handleAEQuitWithActivating:documentSaving:",
        "_handleAEReopen",
+       "_handleAppActivation:",
+       "_handleApplyValueError:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+       "_handleApplyValueResult:cachedValue:displayValue:objectValue:",
        "_handleAutoscrollForMouseDragged:",
+       "_handleBoundsChangeForSubview:",
        "_handleCarbonEvent:callRef:",
        "_handleChildAdded:",
        "_handleChildAddedOrRemoved:",
@@ -1963,8 +2566,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_handleChildRemoved:",
        "_handleChildrenChanged:",
        "_handleCommand:",
+       "_handleCompletionsForPartialWordRange:indexOfSelectedItem:inTextView:",
        "_handleContentBoundsChanged",
        "_handleCoreEvent:withReplyEvent:",
+       "_handleCurrentBrowsingNodePathChanged",
        "_handleCurrentDirectoryChanged:",
        "_handleCurrentDirectoryNodeChanged",
        "_handleCursorUpdate:",
@@ -1972,34 +2577,42 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_handleDisabledNodeClicked:",
        "_handleDocumentFileChanges:",
        "_handleError:delta:fromRect:toPoint:",
+       "_handleError:withError:",
        "_handleFauxDisabledNodeClicked:",
        "_handleFileListConfirmedSelection:",
+       "_handleFileListDidReloadChildrenForNode:",
        "_handleFileListModeChanged",
        "_handleFileListModeChanged:",
        "_handleFileListSelectionChanged:",
+       "_handleFocusToolbarHotKey:",
+       "_handleFrameChangeForSubview:",
+       "_handleGotoFinishedWithResult:",
        "_handleKeyEquivalent:",
-       "_handleLoadCallback",
        "_handleMessage:from:socket:",
-       "_handleMouseDragged:",
        "_handleMouseUpWithEvent:",
        "_handleNameFieldContentsChanged",
-       "_handleNameFieldContentsChangedAsGoto",
+       "_handleObservingRefresh",
        "_handlePhonemeCallbackWithOpcode:",
+       "_handleQueryStateChange:",
        "_handleRecognitionBeginningWithRecognitionResult:",
        "_handleRecognitionDoneWithRecognitionResult:",
-       "_handleRegistrationChange:",
-       "_handleRegistrationChange:forBinder:",
+       "_handleRedrawSidebarSelectionIfNecessary",
        "_handleRootBoundsChanged",
        "_handleRootNodeChanged",
        "_handleRootNodeChanged:",
        "_handleSelectionChanged",
        "_handleSelectionConfirmed",
+       "_handleSelfTestEvent:",
        "_handleSendControlSize:toCellOfView:",
        "_handleSendControlSize:toView:",
        "_handleSpeechDoneCallback",
+       "_handleStyleKeyEquivalent:",
+       "_handleTabKey:",
+       "_handleTestEvent:withReplyEvent:",
        "_handleText:",
        "_handleUIEvents",
        "_handleUnimplementablePolicyWithErrorCode:forURL:",
+       "_handleValidationError:description:inEditor:errorUserInterfaceHandled:bindingAdaptor:",
        "_handleWillPopUpNotification",
        "_handleWordCallbackWithParams:",
        "_hasActiveAppearance",
@@ -2011,10 +2624,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_hasCredentials",
        "_hasCursorRects",
        "_hasCursorRectsForView:",
-       "_hasCustomColor",
+       "_hasCustomVisibilityPriority",
        "_hasDefaultButtonIndicator",
        "_hasEditableCell",
        "_hasExpirationDate",
+       "_hasFocusRing",
+       "_hasFocusRingInView:",
        "_hasGradientBackground",
        "_hasHorizontalOrientation",
        "_hasIconForIconURL:",
@@ -2025,25 +2640,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_hasKeyboardFocus",
        "_hasKeyboardFocusInTabItem:",
        "_hasMainAppearance",
-       "_hasPressAction",
+       "_hasMetalSheetEffect",
+       "_hasNonNominalDescriptor",
+       "_hasObservers",
+       "_hasOverrideForSelector:",
+       "_hasPendingChanges",
+       "_hasQuestionMarkOnlyQueryString",
+       "_hasRetainedStoreResources",
+       "_hasRowHeaderColumn",
        "_hasScaledBackground",
        "_hasSeenRightToLeft",
+       "_hasSelection",
+       "_hasSelectionOrInsertionPoint",
        "_hasSeparateArrows",
-       "_hasShadow",
+       "_hasSheetFactor:",
        "_hasTabs",
        "_hasTitle",
        "_hasToolbar",
        "_hasWindowRef",
        "_hasWindowRefCreatedForCarbonControl",
-       "_hasgState",
        "_hash",
        "_hashMarkDictionary",
        "_hashMarkDictionaryForDocView:measurementUnitToBoundsConversionFactor:stepUpCycle:stepDownCycle:minimumHashSpacing:minimumLabelSpacing:",
        "_hashMarkDictionaryForDocumentView:measurementUnitName:",
+       "_headElementImpl",
        "_headerCellRectOfColumn:",
        "_headerCellSizeOfColumn:",
-       "_headerFieldsForHeaderlessContent",
+       "_headerHeight",
        "_headerSizeOfColumn:",
+       "_headingElementImpl",
        "_heartBeatBufferWindow",
        "_heartBeatThread:",
        "_heedBeginningOfPage:",
@@ -2051,38 +2676,49 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_heightIsFlexible",
        "_helpBundleForObject:",
        "_helpKeyForObject:",
-       "_helpWindow",
        "_helperDeallocatedForView:layoutManager:",
        "_hiddenExtension",
+       "_hiddenOnLaunch",
+       "_hiddenStateWithMode:",
+       "_hiddenWindows",
        "_hide",
        "_hide:",
        "_hideAllDrawers",
        "_hideChildren",
-       "_hideDropShadow",
-       "_hideHODWindow",
+       "_hideLanguagePopUp",
+       "_hideMDPartsIfNecessary",
        "_hideMenu:",
-       "_hideSheet",
+       "_hideQueryProgress",
+       "_hideSheet:",
        "_hideToolbar:animate:",
        "_hideToolbarWithAnimation:",
+       "_hideWithoutResizingWindowHint",
        "_highlightCell:atRow:column:andDraw:",
        "_highlightColor",
+       "_highlightColorDependsOnWindowState",
        "_highlightColorForCell:",
        "_highlightColumn:clipRect:",
+       "_highlightOutlineCell:highlight:withFrame:inView:",
        "_highlightRow:clipRect:",
-       "_highlightSelectedItem:",
-       "_highlightTabColor",
        "_highlightTextColor",
-       "_highlightsWithHighlightRect",
+       "_highlightedNodes",
+       "_hiliteWindow:fromWindow:",
+       "_hintedGetBucketIndex:bucketFirstRowIndex:containingRowIndex:",
+       "_historyControlCell",
        "_hitTest:dragTypes:",
-       "_hookupWithFZService:",
-       "_horizontalAdjustmentForItalicAngleAtHeight:",
-       "_horizontalKeyboardScrollAmount",
-       "_horizontalResizeCursor",
+       "_hitTestCellContentAtColumn:row:point:",
+       "_hitTestContentAtPoint:inRect:ofView:",
+       "_horizontalKeyboardScrollDistance",
+       "_horizontalPageScrollDistance",
        "_horizontalScroller",
+       "_horizontalScrollerClass",
        "_horizontalScrollerSeparationHeight",
+       "_hostData",
+       "_hostString",
        "_hoverAreaIsSameAsLast:",
        "_htmlDocumentClass",
-       "_iconDictionariesAreGood",
+       "_htmlFromTidyNode:tidyDoc:appendingToString:",
+       "_iconForCarbonIcon:size:",
        "_iconForFileURL:withSize:",
        "_iconForOSType:",
        "_iconForOSType:creator:",
@@ -2092,20 +2728,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_iconsBySplittingRepresentationsOfIcon:",
        "_iconsForIconURLString:",
        "_idleMovies",
-       "_ignore:",
+       "_ignoreForKeyViewLoop",
        "_ignoreSpellingFromMenu:",
+       "_ignoringChangeNotifications",
        "_ignoringScrolling",
        "_image",
-       "_imageForCell:keyWindow:",
+       "_imageElementImpl",
+       "_imageElementWithImageResource:",
+       "_imageExistsAtPaths:",
        "_imageForColorPicker:",
-       "_imageForDivider:keyWindow:",
        "_imageForDrawingInRectOfSize:fromImage:",
        "_imageForMenu",
-       "_imageForPart:keyWindow:",
        "_imageFromItemTitle:",
        "_imageFromNewResourceLocation:",
-       "_imageNameForPerson",
        "_imageNamed:",
+       "_imageNumber",
        "_imageRectWithRect:",
        "_imageRepClassForFileNameExtension:andHFSFileType:",
        "_imageRepWithData:hfsFileType:extension:",
@@ -2116,172 +2753,224 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_imagesFromURL:forImage:fileType:extension:",
        "_imagesHaveAlpha",
        "_imagesWithData:hfsFileType:extension:zone:",
+       "_imagesWithData:zone:",
        "_immediateChildFrameNamed:",
-       "_immutableStringCharacterSetWithArray:",
+       "_immediateScrollToPoint:",
+       "_imp",
        "_impactsWindowMoving",
        "_impl",
-       "_importConfirmSheetDidEnd:returnCode:contextInfo:",
-       "_importGroups:",
-       "_importPeople:",
-       "_importThreadBegan:",
-       "_importThreadContinued:",
-       "_importThreadFinished",
-       "_importedCard",
+       "_implicitObservationInfo",
+       "_implicitObservationInfoForEntity:forResultingClass:",
+       "_importRuleImpl",
+       "_inAutoCompleteTyping",
        "_inFavMode",
        "_inHideCollectionsMode",
        "_inHideFaceMode",
        "_inLiveResize",
        "_inMiniMode",
        "_inPreview",
+       "_inQuickDisplayModeForWindow:",
        "_inResize:",
        "_inTSMPreProcess",
        "_inTexturedWindow",
-       "_inactiveButtonsNeedMask",
+       "_includeObject:intoPropertyWithKey:",
        "_incrementBy:startingAtIndex:",
+       "_incrementInUseCounter",
        "_incrementLine:",
        "_incrementPage:",
-       "_incrementProgressForConnection:data:",
-       "_incrementProgressForConnection:response:",
+       "_incrementProgressForConnectionDelegate:data:",
+       "_incrementProgressForConnectionDelegate:response:",
+       "_incrementSelectedSubfield",
+       "_incrementUndoTransactionID",
+       "_indexAtIndex:",
        "_indexClosestToIndex:equalAllowed:following:",
-       "_indexForProperty:",
        "_indexForRed:green:blue:",
+       "_indexOfColonInName",
+       "_indexOfColonInString:",
        "_indexOfFirstGlyphInTextContainer:okToFillHoles:",
+       "_indexOfItemWithPartialTitle:",
        "_indexOfKey:",
        "_indexOfNode:inOrderedNodes:",
        "_indexOfPopupItemForLanguage:",
        "_indexOfRangeAfterOrContainingIndex:",
        "_indexOfRangeBeforeOrContainingIndex:",
        "_indexOfRangeContainingIndex:",
+       "_indexOfSubfieldAtPoint:inFrame:",
+       "_indexPath",
        "_indicatorImage",
        "_indicatorImageForCellHeight:",
-       "_infoFilePath",
        "_infoForOSAError:",
        "_infoForPage:",
-       "_infoToSave",
-       "_informationForFont:glyphTable:positionTable:kerns:ligatures:disableKerningAndLigatures:",
+       "_informationForFont:glyphTable:positionTable:",
        "_init",
-       "_initByCopying:",
-       "_initClipIndicatorImage",
+       "_init:",
+       "_init::::",
        "_initContent:styleMask:backing:defer:contentView:",
        "_initContent:styleMask:backing:defer:counterpart:",
-       "_initContent:styleMask:backing:defer:screen:contentView:",
        "_initContentView",
        "_initData",
+       "_initDefaultNamespaces",
+       "_initEmptyHTMLNames",
        "_initFlippableViewCacheLock",
-       "_initFromAbsolutePositionRecord:inCommandConstructionContext:",
-       "_initFromGlobalWindow:inRect:",
+       "_initFromAbsolutePositionRecord:",
        "_initFromGlobalWindow:inRect:styleMask:",
-       "_initFromRangeRecord:inCommandConstructionContext:",
-       "_initFromRecord:inCommandConstructionContext:",
-       "_initFromTestRecord:inCommandConstructionContext:",
+       "_initFromRangeRecord:",
+       "_initFromRecord:",
+       "_initFromTestRecord:",
        "_initInStatusBar:withLength:withPriority:",
        "_initInfoDictionary",
        "_initJobVars",
        "_initLocks",
-       "_initNominalMappings",
        "_initPanelCommon",
        "_initRemoteWithSignature:",
        "_initSaveMode",
        "_initServicesMenu:",
        "_initSidebarAndPopups",
+       "_initSingleAttributes",
        "_initUI",
+       "_initValueTransformers",
+       "_initWithAbstractViewImpl:",
        "_initWithAddressInfo:",
        "_initWithArray:",
-       "_initWithAttributesNoCopy:pageFormatNoCopy:printSettingsNoCopy:",
-       "_initWithBase:addingPropertyIndexes:count:options:",
-       "_initWithBase:removingPropertyIndexes:count:",
+       "_initWithAttributesNoCopy:pageFormatNoCopy:orFlattenedData:printSettingsNoCopy:orFlattenedData:",
+       "_initWithBitmapImageRep:",
+       "_initWithBytesOfUnknownEncoding:length:copy:usedEncoding:",
+       "_initWithCGColorSpaceNoCache:",
        "_initWithCGSEvent:",
        "_initWithCGSEvent:eventRef:",
-       "_initWithClass:",
-       "_initWithClassDescription:synonymClassCode:",
-       "_initWithClassInfo:observances:",
-       "_initWithContainer:methods:",
-       "_initWithContainer:mutatingMethods:",
-       "_initWithContainer:nonmutatingMethods:mutatingMethods:",
-       "_initWithContainer:valueGetter:mutatingMethods:",
-       "_initWithContainer:valueGetter:valueSetter:",
+       "_initWithCIImage:",
+       "_initWithCSSStyleSheetImpl:",
+       "_initWithCachedResponse:originalURL:",
+       "_initWithClassDescription:synonymDescription:",
+       "_initWithCollectionImpl:",
        "_initWithContentSize:preferredEdge:",
        "_initWithContentsOfFile:error:",
-       "_initWithDIB:",
+       "_initWithCounterImpl:",
+       "_initWithDOMImplementationImpl:",
+       "_initWithDOMRange:",
+       "_initWithDOMStyleSheetImpl:",
+       "_initWithData:bytesPerRow:size:format:params:",
        "_initWithData:error:",
        "_initWithData:fileType:hfsType:",
        "_initWithData:tiff:imageNumber:",
        "_initWithDataOfUnknownEncoding:",
-       "_initWithDescriptorType:bytes:byteCount:",
        "_initWithDictionary:",
-       "_initWithDictionary:andValueType:",
+       "_initWithEntities:",
+       "_initWithEntity:withID:withHandler:withContext:",
+       "_initWithEventImpl:",
+       "_initWithFileSpecifierOrStandardizedPath:",
+       "_initWithGraph:mutable:",
+       "_initWithGraphicsPort:flipped:",
        "_initWithIconRef:includeThumbnail:",
-       "_initWithIdentifiers:values:labels:primaryIdentifier:",
+       "_initWithImage:options::",
+       "_initWithImage:optionsList:",
        "_initWithImageReader:",
+       "_initWithImageSource:imageNumber:properties:",
        "_initWithImpl:uniquedFileName:docInfo:imageData:parentWrapper:",
        "_initWithIncrementalImageReader:forImage:",
+       "_initWithLibTidyDoc:child:",
+       "_initWithLoadingConnection:request:response:delegate:proxy:",
        "_initWithLoadingResource:request:response:delegate:proxy:",
+       "_initWithMediaListImpl:",
        "_initWithName:",
        "_initWithName:fromCMProfileRef:",
        "_initWithName:fromPath:forDeviceType:lazy:",
        "_initWithName:host:process:bundle:serverClass:keyBindings:",
        "_initWithName:printer:",
        "_initWithName:propertyList:",
+       "_initWithName:type:",
+       "_initWithName:type:withClassName:",
+       "_initWithNamedNodeMapImpl:",
+       "_initWithNodeFilterImpl:",
+       "_initWithNodeImpl:",
+       "_initWithNodeIteratorImpl:filter:",
+       "_initWithNodeListImpl:",
+       "_initWithObjectImp:root:",
        "_initWithObjectNoExceptions:",
-       "_initWithObserver:propertyIndexes:count:options:context:",
-       "_initWithObserver:relationshipKey:valueKeyPath:options:context:",
+       "_initWithObserver:property:options:context:",
+       "_initWithOptionsCollectionImpl:",
        "_initWithOutput:",
        "_initWithParagraphStyle:",
+       "_initWithParentObjectStore:",
        "_initWithPath:bundle:",
        "_initWithPickers:",
-       "_initWithPluginErrorCode:contentURLString:pluginPageURLString:pluginName:MIMEType:",
+       "_initWithPluginErrorCode:contentURL:pluginPageURL:pluginName:MIMEType:",
+       "_initWithProperties:",
+       "_initWithProperties:commandName:resultTypeAppleEventCode:",
+       "_initWithProperties:defaultSubcontainerAttributeKey:inverseRelationshipKeys:",
+       "_initWithPropertyList:",
+       "_initWithRGB:",
        "_initWithRTFSelector:argument:documentAttributes:",
+       "_initWithRangeImpl:",
+       "_initWithRectImpl:",
        "_initWithRequest:delegate:directory:",
+       "_initWithResumeInformation:delegate:path:",
        "_initWithRetainedCFSocket:protocolFamily:socketType:protocol:",
+       "_initWithRuleImpl:",
+       "_initWithRuleListImpl:",
        "_initWithScriptIDNoCopy:",
        "_initWithSet:",
        "_initWithSharedBitmap:rect:",
        "_initWithSharedKitWindow:rect:",
        "_initWithSize:depth:separate:alpha:allowDeep:",
        "_initWithStream:data:topDict:",
+       "_initWithStyleDeclarationImpl:",
+       "_initWithStyleSheetListImpl:",
+       "_initWithSuiteName:className:implDeclaration:presoDeclaration:",
+       "_initWithSuiteName:commandName:implDeclaration:presoDeclaration:",
+       "_initWithSuiteRegistry:",
        "_initWithTarget:action:",
+       "_initWithTexture:size:params:",
        "_initWithThemeType:",
-       "_initWithURLFunnel:options:documentAttributes:",
-       "_initWithVCardRepresentation:",
+       "_initWithTreeWalkerImpl:filter:",
+       "_initWithValueImpl:",
        "_initWithWindow:",
        "_initWithWindowNumber:",
-       "_initWithoutAEDesc",
-       "_initialOffset",
-       "_initialTimedLayoutDelay",
-       "_initialTimedLayoutEnabled",
-       "_initialTimedLayoutSize",
+       "_initWithWindowNumber:scaleFactor:",
+       "_initWithfeImage:",
+       "_initWithfeKernel:",
+       "_initWithfeSampler:",
        "_initialize:::",
+       "_initializeATSUStyle",
        "_initializeArchiverMappings",
        "_initializeButtonCell",
        "_initializeFromKeychain",
+       "_initializePredefinedEntities",
        "_initializeRegisteredDefaults",
-       "_initializeSharedApplicationForCarbonAppIfNecessary",
+       "_initializeResumeInformation:",
+       "_initializeScriptDOMNodeImp",
+       "_initializeWithObjectImp:root:",
        "_inputClientChangedStatus:inputClient:",
-       "_inputController",
+       "_inputElementImpl",
        "_inputManagerInNextScript:",
+       "_insertChildOrSibling:",
+       "_insertDigit:",
        "_insertGlyphs:elasticAttributes:count:atGlyphIndex:characterIndex:",
        "_insertItemInSortedOrderWithTitle:action:keyEquivalent:",
+       "_insertMatch:",
        "_insertNewItemWithItemIdentifier:atIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+       "_insertNode:byEntityName:",
+       "_insertObject:atArrangedObjectIndex:objectHandler:",
+       "_insertObject:atArrangedObjectIndexPath:objectHandler:",
        "_insertObjectInSortOrder:",
-       "_insertObjects:atIndexes:",
-       "_insertPopup",
+       "_insertObjectWithGlobalID:globalID:",
        "_insertRange:inArrayAtIndex:",
-       "_insertRecord:",
        "_insertStatusItemWindow:withPriority:",
        "_insertText:forInputManager:",
-       "_insertionContainerSpecifier",
+       "_insertText:selectInsertedText:",
+       "_insertablePasteboardTypes",
        "_insertionGapForItemViewer:forDraggingSource:",
        "_insertionGlyphIndexForDrag:",
-       "_insertionIndexForGroup:",
-       "_insertionIndexForPerson:",
-       "_insertionIndexForPoint:previousIndex:",
+       "_insertionIndexPathAppendChildIndex:",
        "_insertionOrder",
        "_insertionPointDisabled",
        "_insetRect:",
        "_insideAnotherHTMLView",
+       "_installActionButtonIfNecessary",
        "_installAutoreleasePoolsOnCurrentThreadIfNecessary",
        "_installCarbonAppDockHandlers",
        "_installCarbonWindowEventHandlers",
+       "_installHeartBeat:",
        "_installLabel",
        "_installOpenRecentMenuOpeningEventHandler:",
        "_installOpenRecentsMenu",
@@ -2289,83 +2978,104 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_installWindowDepthHandler",
        "_intValue",
        "_integerValueForKey:",
-       "_interceptKeyEvent:toView:",
+       "_interceptEditingKeyEvent:",
+       "_internalChildFrames",
        "_internalIndicesOfObjectsByEvaluatingWithContainer:count:",
        "_internalInit",
+       "_internalLoadDelegate",
        "_internalNetService",
+       "_internalXMLStringWithOptions:appendingToString:",
        "_invalidLabelSize",
+       "_invalidNavNodePopUpLabelAction",
        "_invalidate",
+       "_invalidateAllRevealovers",
+       "_invalidateAllRevealoversForView:",
        "_invalidateBlinkTimer:",
-       "_invalidateCellClipTips",
-       "_invalidateCellClipTipsForView:",
+       "_invalidateCachedRect",
        "_invalidateCompositedBackground",
        "_invalidateConnectionsAsNecessary:",
+       "_invalidateCursorRectsForView:force:",
        "_invalidateDictionary:newTime:",
+       "_invalidateDisplayForChangeOfSelectionFromRange:toRange:",
        "_invalidateDisplayForMarkedOrSelectedRange",
        "_invalidateDisplayIfNeeded",
        "_invalidateFocus",
-       "_invalidateFocusRingRect",
+       "_invalidateFont",
+       "_invalidateForLiveResize",
+       "_invalidateForSubviewFrameChange:oldSize:oldTopLeft:",
        "_invalidateGStatesForTree",
        "_invalidateGlyphsForCharacterRange:editedCharacterRange:changeInLength:actualCharacterRange:",
        "_invalidateGlyphsForExtendedCharacterRange:changeInLength:",
+       "_invalidateImageProperties",
        "_invalidateImageTypeCaches",
+       "_invalidateImages",
        "_invalidateInsertionPoint",
        "_invalidateKeyToIndexTable",
        "_invalidateLayoutForExtendedCharacterRange:isSoft:",
        "_invalidateLiveResizeCachedImage",
        "_invalidateNumberOfRowsCache",
+       "_invalidateObjectValue",
+       "_invalidateObjectsDuringSave",
+       "_invalidateOrComputeNewCursorRectsIfNecessary",
        "_invalidatePendingPolicyDecisionCallingDefaultAction:",
        "_invalidateReleaseTimer",
        "_invalidateResourceForGraphicsContext:",
        "_invalidateRunLoopTimer",
        "_invalidateScaledBackground",
        "_invalidateTabsCache",
-       "_invalidateTimers",
+       "_invalidateTextColor",
        "_invalidateTitleCellSize",
        "_invalidateTitleCellWidth",
        "_invalidateUsageForTextContainersInRange:",
+       "_invalidatedAllObjectsInStore:",
        "_invertedSkipSet",
        "_invokeActionByKeyForCurrentlySelectedItem",
        "_invokeMultipleSelector:withArguments:onKeyPath:atIndex:",
+       "_invokeMultipleSelector:withArguments:onKeyPath:atIndexPath:",
        "_invokeSelector:withArguments:forBinding:",
        "_invokeSelector:withArguments:onKeyPath:",
-       "_invokeSelector:withArguments:onKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:",
+       "_invokeSelector:withArguments:onKeyPath:ofObject:mode:raisesForNotApplicableKeys:",
        "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndex:",
+       "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndexPath:",
        "_invokeSingleSelector:withArguments:onKeyPath:",
+       "_isAXConnector",
        "_isAbsolute",
        "_isAcceptableDragSource:types:dragInfo:",
        "_isActivated",
-       "_isAncestorOf:",
+       "_isAllowedFileType:",
        "_isAncestorOfViewIdenticalTo:",
        "_isAnimating",
        "_isAnimatingDefaultCell",
        "_isAnimatingScroll",
        "_isAnyBindingInMaskBound:",
        "_isAnyFontBindingBoundToController:",
-       "_isAnyKeyInArrayBound:",
        "_isAutoCreated",
        "_isAutoPlay",
+       "_isBeingEdited",
        "_isBindingEstablished:",
        "_isBooleanBinding:",
        "_isBooleanTransformer",
        "_isButtonBordered",
        "_isCString",
        "_isCached",
-       "_isCanonEncoding",
-       "_isCellClipTipCreationEnabled",
+       "_isCachedSeparately",
+       "_isCaseInsensitiveEqualToCString:",
+       "_isCaseSensitivePredicate:",
        "_isClientRedirect",
        "_isClosable",
-       "_isCommitted",
-       "_isCompany",
-       "_isCompressed",
        "_isContinuousSpellCheckingEnabledForNewTextAreas",
        "_isCtrlAltForHelpDesired",
-       "_isCurrentCollectionFavorites",
        "_isCurrentlyGapStyleDropTarget",
        "_isDaylightSavingTimeForAbsoluteTime:",
        "_isDeactPending",
        "_isDeadkey",
        "_isDefaultFace",
+       "_isDefaultFixedPitch",
+       "_isDeleted",
+       "_isDescendantOfFrame:",
+       "_isDingbats",
+       "_isDisplayingWebArchive",
+       "_isDocModal",
        "_isDocWindow",
        "_isDocumentHTML",
        "_isDoingHide",
@@ -2373,7 +3083,11 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_isDoingUnhide",
        "_isDraggable",
        "_isDrawingForDragImage",
-       "_isDrawingToHeartBeatWindow",
+       "_isDrawingMultiClippedContentAtIndex:",
+       "_isDrawingMultiClippedContentColumn:",
+       "_isDroppedConnectionException:",
+       "_isDying",
+       "_isEditable",
        "_isEditing",
        "_isEditingTextView:",
        "_isEmptyMovie",
@@ -2382,77 +3096,104 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_isEventProcessingDisabled",
        "_isExpired",
        "_isExplicitlyNonEditable",
+       "_isFSObjectExchangingAllowed",
        "_isFSObjectExchangingAllowedOn:",
        "_isFSObjectExchangingDesired",
        "_isFakeFixedPitch",
+       "_isFault",
        "_isFauxFilePackageNode:",
        "_isFileClosed",
-       "_isFontUnavailable:",
+       "_isFixedPitch",
+       "_isForPrivateBrowsing",
+       "_isFromSDEF",
        "_isGapStyleDropTargetForRow:operation:mask:",
+       "_isGenericProfile",
        "_isGrabber",
-       "_isGroup:parentOfAllMembers:",
        "_isHidden",
+       "_isHiragino",
        "_isHiraginoFont",
        "_isImageCache",
-       "_isInConfigurationMode",
        "_isInCustomizationMode",
        "_isInUILayoutMode",
+       "_isIndexElementImpl",
+       "_isInheritedPropertyNamed:",
+       "_isInitialized",
+       "_isInserted",
        "_isInternalFontName:",
        "_isItemViewerMoveable:",
-       "_isJobActive:",
        "_isKVOA",
+       "_isKeyPathBound:",
        "_isKeyWindow",
        "_isKeyWindowIgnoringFocus",
-       "_isLastMultiValue:",
-       "_isLastNameFirst",
-       "_isLink:",
-       "_isLoadComplete",
-       "_isLoaded",
+       "_isLeafObject:",
        "_isLoading",
-       "_isMainFrame",
-       "_isMenuMnemonicString:",
+       "_isLoadingSDEFFiles",
+       "_isLocatedByURL:withCache:",
+       "_isLucidaGrande",
+       "_isMaintainingInverse",
+       "_isManagedController",
+       "_isManagedObjectOrEntityDescriptionContainerClassID:key:",
        "_isMiniaturizable",
        "_isModal",
+       "_isMoveDrag",
        "_isMoving",
+       "_isNSColorDrag:",
        "_isNSDocumentBased",
        "_isNodeFileTypeEnabled:",
        "_isNonactivatingPanel",
+       "_isNullExpression:",
+       "_isOnePieceTitleAndToolbar",
+       "_isOrdered",
        "_isPaged",
        "_isPaletteView",
-       "_isParentGroupOfRecord:",
+       "_isPendingDeletion",
+       "_isPendingInsertion",
+       "_isPendingUpdate",
        "_isPerformingProgrammaticFocus",
        "_isPoint:inDragZoneOfRow:",
-       "_isPrintFilterDeviceDependent:",
+       "_isPostOrRedirectAfterPost:redirectResponse:",
        "_isProfileBased",
-       "_isPublicRecord",
        "_isReadOnly",
+       "_isReferenceBinding:",
+       "_isReservedWordInParser:",
        "_isResizable",
        "_isReturnStructInRegisters",
        "_isRunningAppModal",
        "_isRunningDocModal",
        "_isRunningModal",
+       "_isSaveFilenameLengthLegal",
        "_isScriptingEnabled",
        "_isScrolling",
        "_isSelectableItemIdentifier:",
        "_isSelectionEvent:",
+       "_isSelectionMisspelled",
        "_isSheet",
        "_isShowingKeyboardFocus",
        "_isSidebarCollapsed",
        "_isStopping",
+       "_isStrictByParsingExcludedElements",
+       "_isStringDrawingTextStorage",
+       "_isSuitableForFastStringDrawingWithAlignment:lineBreakMode:tighteningFactorForTruncation:",
+       "_isSymbol",
+       "_isSynonym",
        "_isSystemFont",
-       "_isTableColumn:boundWithAnyKeyInArray:",
-       "_isTerminating",
+       "_isTabEnabled",
+       "_isTableColumn:boundWithKeyPath:",
+       "_isTextured",
        "_isThreadedAnimationLooping",
+       "_isTitleHidden",
+       "_isToolTipCreationAndDisplayEnabled",
+       "_isUnmarking",
        "_isUpdated",
        "_isUsedByCell",
+       "_isUsedForLocking",
        "_isUserRemovable",
+       "_isUsingManagedProxy",
        "_isUtility",
        "_isUtilityWindow",
        "_isValid",
        "_isVertical",
        "_isViewValidOriginalNextKeyView:",
-       "_isVisibleUsingCache:",
-       "_isWhite",
        "_item",
        "_itemAdded:",
        "_itemAtIndex:",
@@ -2461,9 +3202,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_itemChanged:",
        "_itemChangedLabelOrPaletteLabel",
        "_itemChangedToolTip",
+       "_itemEnabledStateChanged",
        "_itemForRestoringDocState",
        "_itemForSavingDocState",
-       "_itemForURLString:",
        "_itemIdentifierForModule:",
        "_itemIdentifiersForColorPickers:",
        "_itemInStatusBar:withLength:withPriority:",
@@ -2472,28 +3213,27 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_itemType",
        "_itemViewer",
        "_itemViewerForDraggingInfo:draggingSource:",
-       "_itemViewsForChildrenOfContainerNodes:",
+       "_itemVisibilityPriority",
        "_items",
        "_itemsFromItemViewers:",
-       "_itemsFromRows:",
-       "_ivars",
+       "_itemsFromRowsWithIndexes:",
        "_jobDispositionInPrintSession:printSettings:",
        "_jobSavePathInPrintSession:printSettings:",
-       "_justOpenedForTargetedLink",
        "_justOrderOut",
+       "_keepCacheWindow",
        "_key",
        "_key:inClass:indicatesMultipleValues:",
        "_keyBindingManager",
-       "_keyBindingMonitor",
        "_keyCodeFromRecord:",
+       "_keyEquivalentForNode:",
        "_keyEquivalentGlyphWidth",
-       "_keyEquivalentModifierMask:matchesModifierFlags:",
        "_keyEquivalentModifierMaskMatchesModifierFlags:",
        "_keyEquivalentSizeWithFont:",
-       "_keyForAppleEventCode:",
+       "_keyEquivalentsAreActive",
        "_keyListForKeyNode:",
+       "_keyPathExpressionForString:",
        "_keyRowOrSelectedRowOfMatrix:inColumn:",
-       "_keyToBinderTable",
+       "_keySegment",
        "_keyValueBindingAccessPoints",
        "_keyViewFollowingAccessoryView",
        "_keyViewFollowingModalButtons",
@@ -2502,6 +3242,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_keyViewPrecedingAccesoryView",
        "_keyViewPrecedingModalButtons",
        "_keyViewPrecedingPickerViews",
+       "_keyViewRedirectionDisabled",
        "_keyWindow",
        "_keyWindowForHeartBeat",
        "_keyboardDelayForPartialSearchString:",
@@ -2509,24 +3250,32 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_keyboardLoopNeedsUpdating",
        "_keyboardModifyRow:column:withEvent:",
        "_keyboardNavigateDoSelectOfFocusItem:",
+       "_keyboardNavigateToTabAtIndex:",
        "_keyboardNavigateToTabByDelta:",
        "_keyboardUIActionForEvent:",
        "_keychainItem",
-       "_keysBoundToController:",
+       "_keysForPropertyDescriptionKind:",
+       "_keysForValuesAffectingValueForKey:",
+       "_kitBundle",
        "_kitNewObjectSetVersion:",
        "_kitOldObjectSetVersion:",
        "_kludgeScrollBarForColumn:",
+       "_knownEntityKeyForObject:",
+       "_knownEntityKeyForObjectID:",
+       "_knownPrimaryKeyForObject:",
+       "_knownPrimaryKeyForObjectID:",
        "_knowsPagesFirst:last:",
-       "_kvcMapForClass:",
-       "_labelAlignment",
        "_labelCell",
        "_labelCellWillDismissNotification:",
        "_labelCellWillPopUpNotification:",
+       "_labelColor",
+       "_labelColorIndex",
+       "_labelElementImpl",
        "_labelForColorPicker:",
        "_labelOnlyShowsAsPopupMenu",
+       "_labelPatternColorForLabelIndex:",
        "_labelRectForTabRect:forItem:",
        "_labelType",
-       "_languageModel",
        "_largestIconFromDictionary:",
        "_lastCheckedRequest",
        "_lastChild",
@@ -2535,48 +3284,56 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_lastDraggedOrUpEventFollowing:",
        "_lastDraggedOrUpEventFollowing:canceled:",
        "_lastEventRecordTime",
-       "_lastImageTag",
        "_lastItemIsNonSeparator",
        "_lastKeyView",
        "_lastLeftHit",
        "_lastModifiedDate",
        "_lastOnScreenContext",
        "_lastRightHit",
+       "_lastSnapshot",
        "_lastVisitedDate",
-       "_launchPrintFilter:file:deviceDependent:",
+       "_latin1MappingTable:",
+       "_latin1MappingTableWithPlatformFont:hasKernPair:",
        "_launchService:andWait:",
        "_launchSpellChecker:",
-       "_layoutAsTopView:",
-       "_layoutChildren",
        "_layoutDirtyItemViewersAndTileToolbar",
        "_layoutEnabled",
        "_layoutForData",
+       "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:currentTextContainer:proposedRect:nextGlyphIndex:",
        "_layoutIsSameAsCachedLayoutWithFrame:",
-       "_layoutItemViewForWithItemHeight:",
-       "_layoutLineStartingWithGlyphAtIndex:withProposedRect:",
-       "_layoutRowStartingAtIndex:withFirstItemPosition:allItemViewers:gridWidth:",
+       "_layoutItemViewForWithItemHeight:allSidebarItemViews:",
+       "_layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:",
+       "_layoutOrderInsertionIndexForPoint:previousIndex:",
+       "_layoutRowStartingAtIndex:withFirstItemPosition:gridWidth:",
        "_layoutTabs",
+       "_layoutViews:startingInsetFromXOrigin:insetFromTop:withSpacing:sizeToFit:horizontal:",
        "_layoutViewsVerticallyAndResize",
+       "_lazyLoadQueryDictionariesFromSavedQuery",
        "_leading",
-       "_learn:",
        "_learnOrForgetOrInvalidate:word:dictionary:language:ephemeral:",
        "_learnSpellingFromMenu:",
        "_learnWord:inDictionary:",
        "_leftGroupRect",
-       "_leftmostInsertionIndexForNode:inNodes:",
+       "_leftmostInsertionIndexForNode:inOrderedNodes:",
+       "_leftmostInsertionIndexForNode:inOrderedNodes:withSortDescriptors:",
+       "_legalNameCheck:",
+       "_legendElementImpl",
        "_lengthForSize:",
-       "_lightBlueColor",
+       "_liElementImpl",
+       "_libxml2TreeRepresentation",
+       "_libxml2TreeRepresentationWithNamespaces:",
        "_lightGrayRGBColor",
        "_lightWeightRecursiveDisplayInRect:",
        "_lightYellowColor",
+       "_lightweightHandleChildChanged:parents:property:",
        "_lineBorderColor",
        "_lineBreakMode",
-       "_lineFragmentDescription:",
+       "_lineColor",
+       "_lineFragmentRectForProposedRectArgs",
        "_lineGlyphRange:type:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:",
-       "_lineGlyphVector",
-       "_lineLeft",
-       "_lineRight",
        "_linkDragCursor",
+       "_linkElementImpl",
+       "_listDefinitions",
        "_listenForProxySettingChanges",
        "_liveResizeCacheableBounds",
        "_liveResizeCachedBounds",
@@ -2584,91 +3341,108 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_liveResizeCachedImageIsValid",
        "_liveResizeHighlightSelectionInClipRect:",
        "_liveResizeImageCacheingEnabled",
+       "_liveResizeLOptimizationEnabled",
+       "_load",
        "_loadAllPlaceholderItems",
-       "_loadBackForwardListFromOtherView:",
+       "_loadAndRestoreCurrentBrowsingNodePath:selectedNodes:",
        "_loadBundle",
        "_loadColors",
-       "_loadConfigPanel:",
        "_loadData",
+       "_loadData:MIMEType:textEncodingName:baseURL:unreachableURL:",
        "_loadDataSource:withLoadType:formState:",
        "_loadDeadKeyData",
        "_loadDefaultSetImageRep",
        "_loadFontFiles",
+       "_loadFromDOMRange",
        "_loadFromUDIfNecessary",
-       "_loadHTMLFrameworkIfNeeded",
+       "_loadHTMLString:baseURL:unreachableURL:",
        "_loadHistoryGuts:URL:error:",
        "_loadIcon",
        "_loadIconDictionaries",
+       "_loadIconlessMenuContentsIfNecessary",
        "_loadImageFromTIFF:imageNumber:",
        "_loadImageInfoFromTIFF:",
        "_loadImageWithName:",
+       "_loadImagesForActionType",
        "_loadInitialItemIdentifiers:requireImmediateLoad:",
-       "_loadItem:",
        "_loadItem:withLoadType:",
        "_loadItemViewsForChildrenOfContainerNodes:existingViewsToKeepTable:",
        "_loadKeyboardBindings",
+       "_loadMenuItemIconsIfNecessary",
        "_loadNibDataFromPath:",
        "_loadNibFile:nameTable:withZone:ownerBundle:",
-       "_loadPanelAccessoryNib",
+       "_loadOrSetMetadata",
        "_loadPickerBundlesIn:expectLibraryLayout:",
-       "_loadPickerUI",
        "_loadRecentSearchList",
        "_loadRequest:inFrameNamed:",
+       "_loadRequest:subresources:subframeArchives:",
        "_loadRequest:triggeringAction:loadType:formState:",
-       "_loadRootNode",
        "_loadScriptSuites",
        "_loadServicesMenuData",
-       "_loadSuitesForLoadedBundle:",
-       "_loadSuitesForLoadedBundles",
+       "_loadSuiteDescription:",
+       "_loadSuitesForAlreadyLoadedBundles",
+       "_loadSuitesForJustLoadedBundle:",
+       "_loadSuitesFromSDEFData:bundle:",
        "_loadSystemScreenColorList",
        "_loadType",
        "_loadUIIfNecessary",
        "_loadURL:intoChild:",
        "_loadURL:referrer:loadType:target:triggeringEvent:form:formValues:",
+       "_loadUsingHTMLDisplay",
+       "_loadUsingLibXML2",
+       "_loadUsingWebKit",
        "_loadViewIfNecessary",
-       "_loadWebKitFrameworkIfNeeded",
+       "_loadWebKit",
+       "_loadXSLT",
        "_loadedCellAtRow:column:inMatrix:",
+       "_loadingDragOperationForDraggingInfo:",
        "_loadingFromPageCache",
-       "_loadingStartedTime",
+       "_localObjectForGlobalID:",
+       "_localizationPolicy",
        "_localizedColorListCopyrightString",
        "_localizedColorListName",
+       "_localizedErrorDescriptionForCode:",
        "_localizedKeyFromBundleStringFileForKey:",
        "_localizedNameForColorWithName:",
-       "_localizedPlaceholderForMarker:attributes:",
-       "_locationForPopUpMenuWithFrame:",
+       "_localizedPropertyNameForProperty:entity:",
+       "_localizedStringForKey:value:",
+       "_locationFromUnitsValue:",
        "_locationOfColumn:",
+       "_locationOfOriginPoint:",
        "_locationOfPoint:",
        "_locationOfRow:",
        "_locationTemporary",
        "_locationsForApplications",
        "_lockCachedImage",
        "_lockFirstResponder",
-       "_lockFocusNoRecursion",
        "_lockFocusOnRep:",
        "_lockForReading",
        "_lockForWriting",
-       "_lockName",
        "_lockQuickDrawPort",
        "_lockUnlockCachedImage:",
        "_lockViewHierarchyForDrawing",
        "_lockViewHierarchyForDrawingWithExceptionHandler:",
        "_lockViewHierarchyForModification",
-       "_logAlertWithError:fallbackMessage:relatedToBinding:",
-       "_logBinderUpdateDebugInformation",
-       "_logUnavailableFont:",
-       "_logicalTestFromDescriptor:inCommandConstructionContext:",
+       "_lockfeContext",
+       "_logColumnWidths:",
+       "_logError:fallbackMessage:relatedToBinding:",
+       "_logObservingInfo",
+       "_logicalTestFromDescriptor:",
        "_longLongValue",
-       "_longestStringSize",
        "_looksLikeDomainSegment",
        "_loopHit:row:col:",
-       "_magnify:",
+       "_machineLibraryPath",
        "_mainDocumentError",
        "_mainFrameOverrideEncoding",
        "_mainReceivedBytesSoFar:fromDataSource:complete:",
        "_mainReceivedError:fromDataSource:complete:",
+       "_mainStatusChanged",
        "_mainStatusChanged:",
        "_mainWindow",
        "_maintainCell",
+       "_maintainInverseNamed:isToMany:ofRelationshipNamed:forChange:onSet:",
+       "_maintainInverseNamed:isToMany:oldDestination:newDestination:",
+       "_makeBranchTableForKeys:count:",
        "_makeCellForMenuItemAtIndex:",
        "_makeCursors",
        "_makeDocumentView",
@@ -2677,39 +3451,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_makeEditable::::",
        "_makeFirstResponderForKeyboardHotKeyEvent",
        "_makeHODWindowsPerform:",
+       "_makeHistory",
        "_makeKeyNode:inKeyNode:",
        "_makeLeftCellKey",
-       "_makeMenuItemForNavNode:",
-       "_makeMiniView",
+       "_makeLinkFromMenu:",
        "_makeModalWindowsPerform:",
-       "_makeMutableStringWithValues",
-       "_makeNewCollection:",
        "_makeNewListFrom:",
-       "_makeNewToolbarAssociation:",
        "_makeNextCellKey",
        "_makeNextCellOrViewKey",
        "_makePreviousCellKey",
        "_makePreviousCellOrViewKey",
-       "_makePrimary:",
        "_makeRememberedOrNewEditingSubviewBecomeFirstResponder",
        "_makeRepresentation",
        "_makeRequestCanonicalByMakingRequestURLCanonical:",
        "_makeRightCellKey",
        "_makeRootNode",
        "_makeSelfMutable",
-       "_makeSpecialFontName:size:matrix:bit:",
        "_makeSureFirstResponderIsNotInInvisibleItemViewer",
        "_makeSureItemViewersInArray:areSubviews:from:to:",
        "_makeTable:inNode:",
        "_makeUpCellKey",
        "_makingFirstResponderForMouseDown",
        "_managedAttributeKeys",
+       "_managedObjectContext",
+       "_managedObjectsChangedInContext:",
+       "_managedProxy",
        "_managesWindowRef",
+       "_mapElementImpl",
+       "_mapNode:toEntityInModel:",
        "_mappedFile",
+       "_mappingForConfigurationNamed:",
        "_marginHeight",
        "_marginWidth",
-       "_markAutoCreated",
+       "_markAutoCreated:",
+       "_markCursorRectsForRemovedView:",
+       "_markForPrivateBrowsing",
        "_markHasLoadedData:",
+       "_markLiveResizeColumnLayoutInfo",
+       "_markMovementTrackingInfo",
        "_markRememberedEditingFirstResponderIfIsASubview",
        "_markSelectionIsChanging",
        "_markSelfAsDirtyForBackgroundLayout:",
@@ -2717,8 +3496,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_markWidth",
        "_markedWidthDiffersFromCurrentWidth",
        "_markerAreaRect",
+       "_markerForItemNumber:isNumbered:",
        "_markerHitTest:",
+       "_markerLevelForRange:",
+       "_markerTypeButton",
        "_matchesCharacter:",
+       "_matrix",
        "_matrixWillResignFirstResponder:",
        "_maxAge",
        "_maxRuleAreaRect",
@@ -2729,9 +3512,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_maxXTitlebarBorderThickness",
        "_maxXTitlebarButtonsWidth",
        "_maxXTitlebarDecorationMinWidth",
-       "_maxXTitlebarDragWidth",
-       "_maxXTitlebarLinesRectWithTitleCellRect:",
-       "_maxXTitlebarResizeRect",
        "_maxXTitlebarWidgetInset",
        "_maxXTitlebarWidgetInset:",
        "_maxXWindowBorderWidth",
@@ -2739,13 +3519,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_maxXmaxYResizeRect",
        "_maxXminYResizeRect",
        "_maxYBorderRect",
-       "_maxYResizeRect",
        "_maxYTitlebarDragHeight",
+       "_maxYWindowBorderHeight",
        "_maxYmaxXResizeRect",
        "_maxYminXResizeRect",
-       "_mayStartDragWithMouseDragged:",
+       "_maximumItemViewerHeight",
+       "_mayStartDragAtEventLocation:",
        "_maybeScrollMenu",
        "_maybeSubstitutePopUpButton",
+       "_mdAttributes",
+       "_mdAttributesInLastRunSavePanel",
+       "_mdAttributesToWriteToFile:ofType:saveOperation:",
+       "_mediaListImpl",
+       "_mediaListWithImpl:",
+       "_mediaRuleImpl",
        "_memoryCacheAppendNodeToLRUList:",
        "_memoryCacheClear",
        "_memoryCacheGet:",
@@ -2754,16 +3541,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_memoryCacheRemoveNodeFromLRUList:",
        "_memoryCacheTouchNode:",
        "_memoryCacheTruncate:",
-       "_menu",
        "_menuBarShouldSpanScreen",
        "_menuCellInitWithCoder:",
        "_menuChanged",
        "_menuDidSendAction:",
        "_menuForElement:",
-       "_menuFormRepresentation",
        "_menuFormRepresentationChanged",
        "_menuImpl",
        "_menuItemDictionaries",
+       "_menuListElementImpl",
        "_menuName",
        "_menuPanelInitWithCoder:",
        "_menuScrollAmount",
@@ -2773,17 +3559,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_mergeAutoCompleteHints:",
        "_mergeGlyphHoles",
        "_mergeLayoutHoles",
-       "_messageColor",
-       "_messageString",
-       "_messageStringForType:",
+       "_mergeObjectWithChanges:array:",
+       "_mergeValueForKey:object:string:",
+       "_metaElementImpl",
        "_methodNameForCommand:",
+       "_metrics",
        "_middleViewFrameChanged:",
        "_mightHaveSpellingAttributes",
+       "_migrateAllObjectsInStore:toStore:",
+       "_migrateMappedStore:toNewSameTypeStoreAtURL:",
+       "_migrateMetadataFromStore:toStore:",
+       "_migrateSQLStore:toSQLStoreAtURL:",
        "_minContentRectSize",
+       "_minContentSizeForDrawers",
        "_minExpandedFrameSize",
        "_minLinesWidthWithSpace",
+       "_minNonExpandedFrameSize",
        "_minParentWindowContentSize",
-       "_minSize",
        "_minSizeForDrawers",
        "_minXBorderRect",
        "_minXLocOfOutlineColumn",
@@ -2793,9 +3585,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_minXTitlebarButtonsWidth",
        "_minXTitlebarDecorationMinWidth",
        "_minXTitlebarDecorationMinWidth:",
-       "_minXTitlebarDragWidth",
-       "_minXTitlebarLinesRectWithTitleCellRect:",
-       "_minXTitlebarResizeRect",
        "_minXTitlebarWidgetInset",
        "_minXTitlebarWidgetInset:",
        "_minXWindowBorderWidth",
@@ -2805,30 +3594,40 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_minYBorderRect",
        "_minYResizeRect",
        "_minYTitlebarButtonsOffset",
-       "_minYTitlebarTitleOffset",
        "_minYWindowBorderHeight",
        "_minYWindowBorderHeight:",
        "_minYmaxXResizeRect",
        "_minYminXResizeRect",
        "_miniaturizedOrCanBecomeMain",
        "_minimizeAll",
+       "_minimizeOnDoubleClickChanged",
        "_minimizeSucceeded:",
        "_minimizeToDock",
        "_minimumSizeNeedForTabItemLabel:",
+       "_modElementImpl",
        "_modalSession:sendEvent:",
-       "_modifySelectionIndexes:atIndex:addOrRemove:",
+       "_modelAndProxyKeys",
+       "_modelAndProxyKeysObserved",
+       "_modifierString",
+       "_modifySelectedObjects:useExistingIndexesAsStartingPoint:avoidsEmptySelection:addOrRemove:sendObserverNotifications:forceUpdate:",
+       "_modifySelectionIndexes:atIndex:addOrRemove:sendObserverNotifications:",
        "_monitorKeyBinding:flags:",
+       "_monitors",
        "_mostCompatibleCharset:",
+       "_mouse:force:",
        "_mouseActivationInProgress",
        "_mouseDidMoveOverElement:modifierFlags:",
        "_mouseDownListmode:",
        "_mouseDownNonListmode:",
+       "_mouseDownShouldMakeFirstResponder",
        "_mouseDownSimpleTrackingMode:",
+       "_mouseDragged:",
+       "_mouseEventImpl",
        "_mouseHit:row:col:",
        "_mouseInGroup:",
        "_mouseLoop::::::",
-       "_moveContentsAt:toIndex:",
-       "_moveCursor",
+       "_mouseUp:",
+       "_moveAndResizeEditedCellWithOldFrame:",
        "_moveDown:",
        "_moveDownAndModifySelection:",
        "_moveDownWithEvent:",
@@ -2839,31 +3638,48 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_moveLeftWithEvent:",
        "_moveObjectInContainer:withKey:atIndex:toContainer:withKey:atIndex:replace:",
        "_moveObjectsInContainer:toContainer:withKey:atIndex:replace:",
+       "_moveParent:andExpandPanel:toFrame:",
        "_moveParent:andOpenSheet:",
        "_moveRightWithEvent:",
+       "_moveSelectionBy:",
        "_moveSheetByItself:delta:",
+       "_moveToNextBlock",
+       "_moveToPreviousBlock",
        "_moveUp:",
        "_moveUpAndModifySelection:",
        "_moveUpWithEvent:",
        "_movieIdle",
+       "_multiClipDrawingHelper",
+       "_multipleMutableArrayValueForKeyPath:atIndex:",
+       "_multipleMutableArrayValueForKeyPath:atIndexPath:",
        "_multipleValueForKey:atIndex:",
        "_multipleValueForKeyPath:atIndex:",
+       "_multipleValueForKeyPath:atIndexPath:",
        "_multipleValuesObjectAtIndex:",
+       "_multipleValuesObjectAtIndexPath:",
        "_multipleValuesObjectCount",
        "_multipleValuesObjectsAtIndexes:",
        "_mustRevalidate",
        "_mutableArrayValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:",
        "_mutableArrayValueForKeyPath:ofObjectAtIndex:",
        "_mutableParagraphStyle",
+       "_mutableSetValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:",
+       "_mutableSetValueForKeyPath:ofObjectAtIndex:",
        "_mutableStringClass",
        "_mutateTabStops",
-       "_name",
-       "_nameAtIndex:",
+       "_mutationEventImpl",
        "_nameFieldContentsAsPosixName",
        "_nameForCollection:",
+       "_nameIsEqualToNameOfNode:",
        "_nameOfDictionaryForDocumentTag:",
+       "_nameWithLooseRequiredExtensionCheck:",
        "_nameWithRequiredExtensionCheck:",
-       "_navController",
+       "_nameWithStrictRequiredExtensionCheck:",
+       "_namedNodeMapImpl",
+       "_namedNodeMapWithImpl:",
+       "_namespaceForURI:",
+       "_namespaces",
+       "_naughtDelegate",
        "_navView",
        "_nearestCrayonUnderViewPoint:",
        "_nearestCrayonUnderViewPoint:inRow:",
@@ -2873,20 +3689,27 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_needsDisplayfromRow:",
        "_needsHighlightedTextHint",
        "_needsLiveResizeCacheInSyncWithSiblingView",
+       "_needsLiveUpdates",
        "_needsModalCompatibilityMode",
        "_needsModeConfiguration",
        "_needsOutline",
+       "_needsPopulate",
+       "_needsRecalc",
        "_needsRedisplayWhenBeginningToolbarEditing",
        "_needsRedrawBeforeFirstLiveResizeCache",
+       "_needsRedrawForMovement",
+       "_needsRedrawOnMouseInsideChange",
+       "_needsRevealoverWithFrame:trackingRect:inView:",
        "_needsToRemoveFieldEditor",
        "_needsToResetDragMargins",
        "_needsToUseHeartBeatWindow",
        "_needsViewerLayout",
-       "_newButtonOfClass:withNormalIconNamed:alternateIconNamed:action:",
+       "_nestListAtIndex:",
+       "_newAdapterForModel:",
        "_newCustomizeToolbarItem",
-       "_newDictionary:",
-       "_newDictionaryForProperties",
+       "_newEntryWithUnavoidableSpecifier:path:url:isSymbolicLink:",
        "_newFirstResponderAfterResigning",
+       "_newIconlessMenuItemForNavNode:",
        "_newImageName:",
        "_newItemFromDelegateWithItemIdentifier:willBeInsertedIntoToolbar:",
        "_newItemFromInitPListWithItemIdentifier:",
@@ -2894,60 +3717,96 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_newLazyIconRefRepresentation:ofSize:",
        "_newLazyRepresentation:::",
        "_newLegalSizeFromSize:force:roundDirection:",
+       "_newLineForElement:",
+       "_newLineForLibXML2ElementNode:",
        "_newNode:",
+       "_newNodeAtIndexPath:currentDepth:",
+       "_newObjectIDForCurrentRowWithEntity:",
+       "_newObjectIDForToOne:",
        "_newObjectWithSetProperties",
+       "_newParagraphForElement:tag:allowEmpty:suppressTrailingSpace:",
+       "_newParagraphForLibXML2ElementNode:tag:allowEmpty:suppressTrailingSpace:",
+       "_newPatternStringForGlob:",
        "_newPlaceholderItemWithItemIdentifier:",
        "_newPrintItem",
+       "_newRegisteredSuiteDescriptionForName:",
        "_newReplicatePath:ref:atPath:ref:operation:fileMap:handler:",
        "_newRepresentation:",
+       "_newRowsForFetchRequest:",
        "_newScroll:",
        "_newShowColorsItem",
        "_newShowFontsItem",
        "_newStandardItemWithItemIdentifier:",
-       "_newSubstringFromRange:zone:",
        "_newSubstringWithRange:zone:",
-       "_newToolbarBornNotification:",
-       "_newUnknownItemWithItemIdentifier:",
+       "_newUncommittedChangesForObject:",
+       "_newUncommittedChangesForObject:dictionary:",
+       "_newValueForColumnOfSQLType:atIndex:inStatement:",
+       "_newWildSubStringForGlob:wildStart:wildEnd:",
        "_newWithName:fromPath:forDeviceType:",
+       "_new_implicitlyObservedKeys",
+       "_nextAttributeForString:type:location:range:",
        "_nextDisplayMode",
+       "_nextFrame:",
        "_nextFrameWithWrap:",
        "_nextInputManagerInScript:",
        "_nextSibling",
-       "_nextUntitledDocumentNumber",
        "_nibName",
-       "_noUiClearField:",
        "_noVerticalAutosizing",
+       "_nodeFilterImpl",
+       "_nodeFilterWithImpl:",
+       "_nodeFromLibXML2Node:",
+       "_nodeFromObject:objectIDMap:",
+       "_nodeImpl",
+       "_nodeIteratorImpl",
+       "_nodeIteratorWithImpl:filter:",
+       "_nodeListImpl",
+       "_nodeListWithImpl:",
+       "_nodeWithImpl:",
        "_nodesToDisplayForNodeInfo:",
-       "_nominalChars",
-       "_nominalGlyphs",
+       "_nominalCharacterCoverage",
        "_nominalSizeNeedForTabItemLabel:",
+       "_nonAutomaticObservingKeys",
+       "_nonNilArrayValueWithSelector:",
+       "_nonNilMutableArrayValueWithSelector:",
+       "_nonNilSetValueWithSelector:",
+       "_nonPredicateValidateValue:forKey:inObject:error:",
+       "_noop:",
        "_normalListmodeDown::::",
-       "_normalSpeakingRate",
+       "_notationImpl",
+       "_noteAutosavedContentsOfDocument:",
        "_noteDefaultMenuAttributeChanged",
        "_noteFontCollectionsChanged",
+       "_noteItemUserVisibilityPriorityChanged:",
        "_noteLengthAndSelectedRange:",
+       "_noteNote1:",
+       "_noteNote2:",
+       "_noteNote3:",
+       "_noteNote4:",
+       "_notePendingRecentDocumentURLs",
        "_noteToolbarDisplayModeChanged",
-       "_noteToolbarDisplayModeChangedAndPost:",
+       "_noteToolbarDisplayModeChangedAndPostSyncSEL",
        "_noteToolbarLayoutChanged",
        "_noteToolbarModeChangedAndUpdateItemViewers:",
+       "_noteToolbarShowsBaselinePropertyChanged",
        "_noteToolbarSizeModeChanged",
-       "_noteToolbarSizeModeChangedAndPost:",
+       "_noteToolbarSizeModeChangedAndPostSyncSEL",
        "_noticeEditablePeerBinder:",
        "_noticeTextColorPeerBinder:",
-       "_notificationPostingEnabled",
-       "_notifyBindersWithEnumerator:keysToRefresh:",
-       "_notifyCookiesChanged",
+       "_notifyCookiesSynced",
        "_notifyDelegate_DidRemoveItem:",
        "_notifyDelegate_DidRemoveItems:",
        "_notifyDelegate_WillAddItem:",
        "_notifyEdited:range:changeInLength:invalidatedRange:",
-       "_notifyEditorStateChanged",
+       "_notifyEditor:stateChanged:",
        "_notifyFamily_DidRemoveItemAtIndex:",
        "_notifyFamily_DidSetAllCurrentItems:",
        "_notifyFamily_InsertedNewItem:atIndex:",
        "_notifyFamily_MovedFromIndex:toIndex:",
-       "_notifyIM:withObject:",
-       "_notifyTypographyPanel",
+       "_notifyLocalCookiesChanged:",
+       "_notifyObserversForKeyPath:change:",
+       "_notifyObserversOfAddedStores:",
+       "_notifyObserversOfRemovedStores:",
+       "_notifyOfAnyContentChange",
        "_notifyView_DidRemoveItemAtIndex:",
        "_notifyView_DidSetAllCurrentItems:",
        "_notifyView_InsertedNewItem:atIndex:",
@@ -2957,32 +3816,46 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_numberEnumerator",
        "_numberOfGlyphs",
        "_numberOfItems",
-       "_numberOfNominalMappings",
-       "_numberOfTitlebarLines",
-       "_numberStringForValueObject:withBuffer:andNegativeFlag:",
        "_numericIndicatorCell",
        "_nxeventTime",
+       "_oListElementImpl",
        "_obeysHiddenBit",
+       "_objcClassName",
        "_objectCacheSize",
        "_objectClassName",
+       "_objectDidTriggerAction:bindingAdaptor:",
+       "_objectElementImpl",
        "_objectForAttributeKey:",
        "_objectForProperty:usingDataSize:withRequestedObjectClass:",
-       "_objectSpecifierFromDescriptor:inCommandConstructionContext:",
+       "_objectID",
+       "_objectIDClass",
+       "_objectIDFactory",
+       "_objectIsMatch:",
+       "_objectSpecifierFromDescriptor:",
+       "_objectSpecifierTypeDescription",
+       "_objectTypeDescriptionForClassAppleEventCode:isValid:",
        "_objectValue:forString:",
+       "_objectValue:forString:errorDescription:",
        "_objectWithName:",
-       "_objectsAtIndexes:",
-       "_observances",
-       "_observesContent",
+       "_objectsChangedInStore:",
+       "_observeKeyPathForBindingInfo:registerOrUnregister:",
+       "_observeKeyPathForRelatedBinder:registerOrUnregister:",
+       "_observePathOfEntry:",
+       "_observeSpecifierOfEntry:",
+       "_observeValueForKeyPath:ofObject:context:",
+       "_observesModelObjects",
        "_obtainKeyFocus",
+       "_obtainOpenChannel",
        "_offset",
        "_offsetFromStartRect",
+       "_okForOpenMode",
+       "_okForSaveMode",
        "_okToStartTextEndEditing",
+       "_oldBoundsDuringLiveResize",
        "_oldFirstResponderBeforeBecoming",
        "_oldFontSetNames",
        "_oldFontSetWithName:",
        "_oldPlaceWindow:",
-       "_oldStoredValueForKey:",
-       "_oldTakeStoredValue:forKey:",
        "_oldValueForKey:",
        "_oldValueForKeyPath:",
        "_old_encodeWithCoder_NSBrowser:",
@@ -3000,58 +3873,76 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_old_initWithCoder_NSTableColumn:",
        "_old_initWithCoder_NSTableHeaderView:",
        "_old_initWithCoder_NSTableView:",
+       "_old_readColorsFromGlobalPreferences",
+       "_old_writeColorsToGlobalPreferences",
+       "_opString",
+       "_opacity",
        "_opacityAtPoint:inBitmapImageRep:",
        "_opaqueRect",
+       "_opaqueState",
        "_open:",
        "_open:fromImage:withName:",
-       "_openActionButton:",
+       "_openBlocksForParagraphStyle:atIndex:inString:",
+       "_openChannel",
        "_openCollections",
-       "_openDictionaries:",
        "_openDocumentFileAt:display:",
-       "_openDrawer",
-       "_openDrawerOnEdge:",
        "_openDrawers",
        "_openExtrasPopup:",
        "_openFile:",
        "_openFile:withApplication:asService:andWait:andDeactivate:",
-       "_openFileWithoutUI:",
-       "_openIndexReadOnly",
-       "_openIndexReadWrite",
        "_openLinkFromMenu:",
+       "_openListsForParagraphStyle:atIndex:inString:",
        "_openNewWindowWithRequest:",
        "_openOldCollections",
        "_openOldFavorites",
        "_openRecentDocument:",
        "_openRegularCollections",
+       "_openStrikeMenu:",
+       "_openUnderlineMenu:",
        "_openUntitled",
        "_openableFileExtensions",
        "_opened",
        "_operationInfo",
-       "_optimizeHighlightForCharRange:charRange:fullSelectionCharRange:oldSelectionFullCharRange:",
+       "_operatorForType:",
+       "_optGroupElementImpl",
        "_optimizedRectFill:gray:",
+       "_optionElementImpl",
+       "_optionsCollectionImpl",
+       "_optionsCollectionWithImpl:",
        "_optionsForBinding:specifyOnlyIfDifferentFromDefault:",
        "_orderFrontHelpWindow",
+       "_orderFrontModalColorPanel",
        "_orderFrontModalWindow:relativeToWindow:",
        "_orderFrontRelativeToWindow:",
+       "_orderOutAllToolTipsImmediately:",
        "_orderOutAndCalcKeyWithCounter:",
        "_orderOutHelpWindow",
        "_orderOutHelpWindowAfterEventMask:",
        "_orderOutRelativeToWindow:",
+       "_orderedDrawerAndWindowKeyLoopGroupingViews",
+       "_orderedSidebarItemViews",
        "_orderedWindowsWithPanels:",
        "_orientationInPageFormat:",
        "_originPointInRuler",
-       "_originalCard",
+       "_originalData",
+       "_originalFontA",
+       "_originalFontB",
        "_originalNextKeyView",
        "_originalRequest",
+       "_originalRowForUpdate:",
+       "_originalSnapshot",
        "_outlineAction:",
        "_outlineDelegate",
        "_outlineDoubleAction:",
        "_outlineIsOn",
        "_outlineView",
+       "_overflowHeaderCellPrototype",
        "_overrideEncoding",
        "_overwriteExistingFileCheck:",
        "_ownedByPopUp",
+       "_ownerElement",
        "_owningPopUp",
+       "_ownsDestinationObjectsForRelationshipKey:",
        "_ownsWindowGrowBox",
        "_packedGlyphs:range:length:",
        "_pageCacheSize",
@@ -3062,10 +3953,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_pageFormatAttributeKeys",
        "_pageFormatForGetting",
        "_pageFormatForSetting",
+       "_pageHeaderAndFooterTextAttributes",
        "_pageHorizontally:",
-       "_pageLayout:didEndAndReturn:contextInfo:",
-       "_pageLeft",
-       "_pageRight",
+       "_pageLayout:wasPresentedWithResult:inContext:",
+       "_pageRuleImpl",
        "_pageUpWithEvent:",
        "_pageVertically:",
        "_panelInitWithCoder:",
@@ -3073,7 +3964,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_paperNameForSize:",
        "_paperNameInPrintSession:pageFormat:",
        "_paperSizeInPageFormat:",
-       "_paragraphGlyphVector",
+       "_paragraphClassforParagraphStyle:range:isEmpty:headerString:alignmentString:",
+       "_paragraphElementImpl",
+       "_paramElementImpl",
        "_parametersForReading",
        "_parametersForWriting",
        "_parentWindow",
@@ -3083,6 +3976,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_parseCharacterAttributes",
        "_parseCharacterAttributes1",
        "_parseCharacterAttributes2",
+       "_parseCharacterAttributesFromElement:namespaceURI:qualifiedName:attributes:",
        "_parseContentsDictionary",
        "_parseDocumentAttributes",
        "_parseDocumentAttributes1",
@@ -3091,98 +3985,120 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_parseFonts1",
        "_parseFonts2",
        "_parseGlobals",
-       "_parseHeaderFromData:",
+       "_parseLibXML2Node:",
        "_parseMenuString:menuName:itemName:",
+       "_parseNode:",
        "_parsePantoneLikeList:fileName:",
        "_parseParagraphAttributes",
        "_parseParagraphAttributes1",
        "_parseParagraphAttributes2",
+       "_parseParagraphAttributesFromElement:namespaceURI:qualifiedName:attributes:",
        "_parsePredefinedAttributes",
        "_parsePredefinedAttributes1",
        "_parsePredefinedAttributes2",
        "_parseReleaseTwoList:",
+       "_parseSummaryInfo:",
        "_parseText",
        "_parseText1",
        "_parseText1Fast",
        "_parseText1Full",
        "_parseText2",
-       "_pasteboardDictionaryForPeople:",
-       "_pasteboardDictionaryForRecords:",
-       "_pasteboardTypes",
+       "_parserableCollectionDescription:",
+       "_parserableDateDescription:",
+       "_parserableStringDescription:",
+       "_passwordData",
+       "_pasteWithPasteboard:allowPlainText:",
        "_pasteboardWithName:",
+       "_pathData",
        "_pathForFSRef:",
-       "_pathForImageTaggedByEmails:",
-       "_pathForResource:ofType:inDirectory:forRegion:",
-       "_pathToFileNamed:in:",
-       "_pathWithUniqueFilenameForPath:",
-       "_pathsForResourcesOfType:inDirectory:forRegion:",
+       "_pathToFileNamed:inFolder:",
        "_patternForBinding:",
        "_pauseUIHeartBeatingInView:",
        "_pendingActCount",
-       "_peopleCount",
-       "_peoplePickerSearch:",
+       "_perThreadHandlingStack:",
+       "_performActionWithCommitEditing",
+       "_performActionWithCommitEditing:didCommit:contextInfo:",
        "_performActivationClickWithShiftDown:",
+       "_performArrayBinderOperation:singleObject:multipleObjects:singleIndex:multipleIndexes:selectionMode:",
+       "_performBatchWindowOrdering:",
        "_performCancel",
+       "_performChangesWithAdapterOps:",
+       "_performConnectionEstablishedRefresh",
        "_performContinueWithoutCredential",
        "_performDragFromMouseDown:",
+       "_performKeyEquivalentOnAllCells:",
        "_performKeyEquivalentWithDelegate:",
+       "_performLoad",
        "_performMenuFormRepresentationClick",
-       "_performRedoCommand:withName:",
+       "_performMutatorOperation:object:index:",
+       "_performOriginLoad",
        "_performRemoveFileAtPath:",
-       "_performSocketRead",
+       "_performResponderOperation:with:",
        "_performTimeOut",
        "_performToggleToolbarShown:",
-       "_performUndoCommand:withName:",
        "_performUseCredential",
+       "_periodicEvent:",
+       "_persistentStoreCoordinator",
+       "_persistentStoreForIdentifier:",
        "_persistsWidthCacheToUserDefaults",
-       "_person",
-       "_personFromRecent:",
-       "_personIndexer",
-       "_personStatusChanged:",
        "_physicalSizeCompare:",
+       "_pickUpMissingStuffFromNode:forEntity:",
+       "_pidString",
        "_pinDocRect",
        "_pinViews:resizeFlagsToLeaveAlone:",
+       "_pixelBufferAuxiliary",
        "_pixelFormatAuxiliary",
        "_pixelRectInPoints:",
-       "_placeAccessoryView",
+       "_pk",
        "_placeHelpWindowNear:",
-       "_placement",
+       "_placePopupWindow:",
+       "_placeSuggestionsInDictionary:acceptableControllers:boundBinders:binder:binding:",
+       "_placeholderAttributedString",
+       "_placeholderString",
        "_plainFontNameForFont:",
-       "_platformExitInformation",
+       "_platformFont",
+       "_plugInPath",
+       "_plugIns",
        "_plugin",
+       "_pluginCancelledConnectionError",
        "_pluginClassWithObject:",
        "_pluginController",
        "_pluginProtocol",
-       "_pmPrintSession",
-       "_pointForTopOfBeginningOfCharRange:",
        "_pointFromColor:",
        "_pointInPicker:",
        "_pointRectInPixels:",
        "_policyDelegateForwarder",
+       "_popCompoundStack",
+       "_popIfTopHandling:",
        "_popPerformingProgrammaticFocus",
        "_popState",
+       "_popSubframeArchiveWithName:",
        "_popUpButton",
        "_popUpButtonCellInstances",
        "_popUpContextMenu:withEvent:forView:",
        "_popUpContextMenu:withEvent:forView:withFont:",
        "_popUpItemAction:",
-       "_popUpMenuCurrentlyInvokingAction",
-       "_popUpMenuFromView:",
        "_popUpMenuWithEvent:forView:",
        "_poppedTopHandling",
        "_populate:",
+       "_populateEntityDescription:fromNode:",
        "_populateMiniMode",
+       "_populateOpenRecentMenu:",
        "_populatePopup:withTableView:",
        "_populateReplyAppleEventWithResult:",
-       "_popupImage",
+       "_populateRowForOp:withObject:",
+       "_portData",
+       "_portInvalidated:",
        "_position",
        "_positionAllDrawers",
+       "_positionAndResizeSearchParts",
+       "_positionForPoint:",
        "_positionLabels",
        "_positionSheetAndDisplay:",
        "_positionSheetConstrained:andDisplay:",
        "_positionSheetRect:onRect:andDisplay:",
        "_positionWindow",
-       "_positionalSpecifierFromDescriptor:inCommandConstructionContext:",
+       "_positionalSpecifierFromDescriptor:",
        "_posixPathComponentsWithPath:",
        "_postAtStart:",
        "_postBoundsChangeNotification",
@@ -3192,20 +4108,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_postColumnConfigurationDidChangeNotification",
        "_postColumnDidMoveNotificationFromColumn:toColumn:",
        "_postColumnDidResizeNotificationWithOldWidth:",
-       "_postDidCreateToolbarNotifications",
        "_postDidFailCallback",
        "_postDidFinishLoadingCallback",
+       "_postDidFinishNotification",
        "_postDidReceiveDataCallback",
        "_postDidReceiveResponseCallback",
        "_postDidScrollNotification",
-       "_postEventHandling",
        "_postEventNotification:",
        "_postEventNotification:fromCell:",
-       "_postFlagsChangedEvent:",
        "_postFocusChangedNotification",
        "_postFrameChangeNotification",
        "_postFromSubthread:",
-       "_postInit",
        "_postInitWithCoder:signature:valid:wireSignature:target:selector:argCount:",
        "_postInitialization",
        "_postInvalidCursorRects",
@@ -3213,64 +4126,95 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_postItemDidExpandNotification:",
        "_postItemWillCollapseNotification:",
        "_postItemWillExpandNotification:",
-       "_postNotification:parent:",
-       "_postNotification:parent:child:",
-       "_postNotification:parent:child:fbeProperty:",
+       "_postNotificationForEvent:notificationName:parent:",
+       "_postNotificationForEvent:notificationName:parent:child:",
+       "_postNotificationForEvent:notificationName:parent:child:fbeProperty:",
        "_postPreferencesChangesNotification",
+       "_postQueryFinishedNotification",
+       "_postQueryStartedNotification",
        "_postSelectionDidChangeNotification",
        "_postSelectionIsChangingAndMark:",
-       "_postURLNotify:target:len:buf:file:notifyData:allowHeaders:",
+       "_postSessionNotificationIfNeeded",
+       "_postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:",
        "_postWillCacheResponseCallback",
-       "_postWillDeallocToolbarNotifications",
        "_postWillScrollNotification",
        "_postWillSendRequestCallback",
        "_postWindowNeedsDisplay",
        "_postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:",
        "_postingDisabled",
+       "_postscriptName",
        "_potentialMaxSize",
        "_potentialMinSize",
+       "_preElementImpl",
        "_preEvaluate",
-       "_preEventHandling",
-       "_preInitSetMatrix:fontSize:",
        "_preInitWithCoder:signature:valid:wireSignature:target:selector:argCount:",
        "_predefinedAttributes2ForIndex:depth:",
+       "_predicateOperator",
+       "_predicateOptionPairForBinding:",
        "_preferFilter",
        "_preferedColumnWidth",
        "_preferencesChangedNotification:",
+       "_preferredPlaceholderForMarker:onlyIfNotExplicitlySet:",
        "_prefersToBeShown",
        "_prefersTrackingWhenDisabled",
+       "_prefix",
+       "_prefixDown",
+       "_prefixIndex",
+       "_prefixUp",
        "_preflightChosenSpellServer",
+       "_preflightDatabaseAtPath:",
+       "_preflightSpellChecker",
        "_preflightSpellChecker:",
+       "_preflightSpellCheckerNow:",
+       "_prepareAlertError:responder:window:recoveryAttempter:",
+       "_prepareArrayControllerTree",
+       "_prepareConst:inManyToMany:",
+       "_prepareConst:inToMany:",
+       "_prepareContentWithNewObject:",
        "_prepareEventGrouping",
        "_prepareForDefaultKeyLoopComputation",
        "_prepareForDispatch",
-       "_prepareForOpeningOfOpenRecentMenu:",
+       "_prepareForPushChanges:",
+       "_prepareForReloadChildrenForNode:",
        "_prepareHelpWindow:locationHint:",
        "_prepareIndirectKeyValueCodingCallWithPartialControllerKey:controller:",
-       "_prepareOriginLoad",
        "_preparePrintStream",
+       "_prepareString:expressionPath:caseSensitive:wildStart:wildEnd:",
+       "_prepareSubstringWith:wildStart:wildEnd:",
        "_prepareSynchronizationOfEditedFieldForColumnWidthChange",
-       "_prepareToDispatch",
        "_prepareToMessageClients",
        "_prepareToMinimize",
-       "_prepareUpdateNotificationUserInfo:",
-       "_presentAlertWithError:fallbackMessage:fallbackMessageLocalized:allowDiscardEditing:relatedToBinding:",
+       "_prepareToRunForSavePanel:withFilepath:",
+       "_preparedSavePanelForOperation:",
+       "_presentAlertPanelForError:responder:",
+       "_presentDiscardEditingAlertPanelWithError:relatedToBinding:",
+       "_presentDiscardEditingSheetWithError:discardEditingCallback:otherCallback:callbackContextInfo:relatedToBinding:",
+       "_presentError:delegate:didRecoverSelector:context:",
+       "_presentModalAlertWithError:responder:relatedToBinding:",
+       "_presentSheetForError:responder:callback:callbackContextInfo:",
+       "_presentableDescription",
+       "_presentableErrorForCode:underlyingError:",
+       "_presentableErrorForCode:underlyingError:url:",
+       "_presentableNames",
+       "_presentablePluralName",
+       "_presentableReopeningErrorForUnderlyingError:url:contentsURL:",
+       "_presentableResultDescription",
+       "_presentableSavingErrorForOperation:underlyingError:url:",
        "_preventsActivation",
-       "_previousCurrentDirectoryNode",
        "_previousDisplayMode",
        "_previousFrameWithWrap:",
        "_previousNextTab:loop:",
        "_previousNibBindingConnector",
-       "_previousRootNode",
        "_previousSibling",
        "_primitiveInvalidateDisplayForGlyphRange:",
        "_primitiveSetDefaultNextKeyView:",
        "_primitiveSetNextKeyView:",
        "_primitiveSetPreviousKeyView:",
+       "_primitiveValueForKey:",
+       "_primitiveValueImpl",
        "_printAndPaginateWithOperation:helpedBy:",
-       "_printFile:",
-       "_printFontCollection",
-       "_printOperation:didReturn:contextInfo:",
+       "_printDocumentsWithContentsOfURLs:settings:showPrintPanels:delegate:didPrintSelector:contextInfo:",
+       "_printOperation:wasRunWithSuccess:inContext:",
        "_printPagesWithOperation:helpedBy:",
        "_printPanel:didEndAndReturn:contextInfo:",
        "_printSession",
@@ -3281,100 +4225,144 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_printSettingsAttributeKeys",
        "_printSettingsForGetting",
        "_printSettingsForSetting",
+       "_printSettingsValue",
+       "_printVerboseDebuggingInformation:",
        "_printer",
        "_printerForPrinter:",
        "_printerInPrintSession:",
+       "_proceedGivenDBInfo:",
+       "_processDBInfoNode:",
+       "_processDeletedObjects",
+       "_processDocument",
+       "_processElement:tag:display:",
        "_processEndOfEventNotification:",
-       "_processHTTPResultCode",
+       "_processGlobalIDChanges:",
+       "_processHeadElement:",
        "_processHeaders:",
+       "_processInstanceNode:",
        "_processKeyboardUIKey:",
+       "_processLibXML2ElementNode:tag:",
+       "_processLibXML2HeadElementNode:",
+       "_processLibXML2MetaNode:",
+       "_processLibXML2TextNode:content:",
+       "_processLibXML2TitleNode:",
+       "_processMetaElementWithName:content:",
+       "_processMetadataNode:",
+       "_processNotificationQueue",
        "_processNotifications:",
-       "_processRawData",
+       "_processObjectStoreChanges:",
+       "_processOwnedObjects:set:boolean:",
+       "_processRecentChanges",
+       "_processReferenceQueue",
        "_processRequest:",
        "_processRequest:named:usingPasteboard:",
-       "_processSpecialGlyphs:inRect:glyphOffset:",
-       "_procid",
+       "_processText:",
+       "_processingInstructionImpl",
        "_progress",
-       "_progressCompleted",
+       "_progressCompleted:",
        "_progressPanel:didEndAndReturn:contextInfo:",
        "_progressPanelWasCancelled:contextInfo:",
-       "_progressStarted",
+       "_progressStarted:",
        "_promoteGlyphStoreToFormat:",
+       "_propagateDelete",
+       "_propagateDeletesUsingTable:",
        "_propagateDirtyRectsToOpaqueAncestors",
-       "_propertyChanged:",
+       "_properties",
+       "_propertiesOfType:",
+       "_propertyAccessFromElement:",
        "_propertyContainerClassDescriptionFromDictionaryType:inSuite:",
-       "_propertyDictionaryForKey:",
+       "_propertyDescriptionForAppleEventCode:checkSubclasses:",
+       "_propertyDescriptionForAppleEventCode:checkSubclasses:superclasses:",
+       "_propertyDescriptionForKey:checkSubclasses:",
+       "_propertyDescriptionForKey:checkSubclasses:superclasses:",
+       "_propertyDescriptionsByKey",
+       "_propertyDescriptionsOfClass:fromImplDeclarations:presoDeclarations:suiteName:className:",
        "_propertyDictionaryInitializer",
        "_propertyForKey:",
+       "_propertyKeyFromElement:",
+       "_propertyListRepresentation",
+       "_propertyListsFromResources:",
+       "_propertyNamed:",
+       "_propertyRangesByType",
+       "_propertySearchMapping",
+       "_propertyType",
        "_protectionSpaceForURL:realm:",
        "_protectionSpaceWithKeychainItem:isDefault:",
        "_protocolClassForRequest:",
        "_provideAllPromisedData",
        "_provideNewViewFor:initialViewRequest:",
        "_provideTotalScaleFactorForPrintOperation:",
+       "_proxyFinalize",
        "_proxyForUIElement:",
+       "_proxyInitWithContainer:getter:",
+       "_proxyLocator",
+       "_proxyMutableArrayValueForKey:",
        "_proxyParentedChild:",
+       "_proxyPoolPointer",
        "_proxyProtectionSpaceForURL:",
+       "_proxySharePointer",
        "_proxyUsernameForURL:",
        "_pullsDown",
        "_purgePageCache",
+       "_pushCompoundStack:count:",
        "_pushHandling:",
        "_pushPerformingProgrammaticFocus",
        "_pushState",
        "_putKeyFormAndDataInRecord:",
+       "_queryData",
+       "_queryString",
        "_queueRequestForThread:invocation:conversation:sequence:coder:",
+       "_quoteElementImpl",
        "_radioHit:row:col:",
+       "_raiseNilValueExceptionWithSelector:",
        "_randomUnsignedLessThan:",
        "_range:containsPoint:",
        "_rangeByEstimatingAttributeFixingForRange:",
        "_rangeByTrimmingWhitespaceFromRange:",
        "_rangeForMoveDownFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:",
        "_rangeForMoveUpFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:",
+       "_rangeForUserBaseWritingDirectionChange",
+       "_rangeImpl",
        "_rangeOfPrefixFittingWidth:withAttributes:",
-       "_rangeOfPrefixFittingWidth:withFont:",
        "_rangeOfPrefixOfString:fittingWidth:withFont:",
        "_rangeOfSuffixFittingWidth:withAttributes:",
-       "_rangeOfSuffixFittingWidth:withFont:",
+       "_rangeOfTextTableRow:atIndex:",
+       "_rangeWithImpl:",
        "_ranges",
+       "_rangesForUserBaseWritingDirectionChange",
        "_rawAddColor:key:",
-       "_rawDefaultGlyphForChar:",
        "_rawKeyEquivalent",
        "_rawKeyEquivalentModifierMask",
        "_rawSetSelectedIndex:",
+       "_reactToDisplayChanged",
+       "_reactToFontSetChange",
+       "_reactToMatchingInsertions:deletions:",
        "_readAcceptCookiesPreference",
-       "_readAndRetainFileNamed:makeCompact:",
-       "_readArgument:dataStream:",
        "_readBBox",
-       "_readBasicMetricsForSize:allowFailure:",
-       "_readClass:",
-       "_readClassesInSuite:dataStream:",
        "_readColorIntoRange:fromPasteboard:",
-       "_readCommand:dataStream:",
-       "_readCommands:dataStream:suiteID:",
+       "_readColorsFromLibrary",
+       "_readFilenameStringsIntoRange:fromPasteboard:",
        "_readFilenamesIntoRange:fromPasteboard:",
        "_readFontIntoRange:fromPasteboard:",
-       "_readFromPboard",
        "_readHTMLIntoRange:fromPasteboard:",
+       "_readImageInfoWithImageSource:imageNumber:properties:",
        "_readImageIntoRange:fromPasteboard:",
        "_readMovieIntoRange:fromPasteboard:",
-       "_readNamedArguments:dataStream:",
        "_readPersistentBrowserColumns",
        "_readPersistentExpandItems",
        "_readPersistentTableColumns",
-       "_readPluralNameForCode:fromDict:dataStream:",
        "_readRTFDIntoRange:fromPasteboard:",
        "_readRTFIntoRange:fromPasteboard:",
        "_readRecentDocumentDefaultsIfNecessary",
        "_readRulerIntoRange:fromPasteboard:",
        "_readSelectionFromPasteboard:types:",
        "_readStringIntoRange:fromPasteboard:",
-       "_readSuites:dataStream:",
-       "_readSynonym:inSuite:dataStream:",
-       "_readSynonymsInSuite:dataStream:",
+       "_readURLIntoRange:fromPasteboard:",
+       "_readURLStringIntoRange:fromPasteboard:",
+       "_readURLStringsWithNamesIntoRange:fromPasteboard:",
        "_readVersion0:",
        "_readWidthsFromDefaults",
-       "_realCloneFont:withFlag:",
-       "_realCompositeName",
+       "_readablePasteboardTypesForRichText:importsGraphics:usesFontPanel:usesRuler:allowsFiltering:",
        "_realControlTint",
        "_realControlTintForView:",
        "_realCopyPSCodeInside:helpedBy:",
@@ -3385,219 +4373,267 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_realHeartBeatThreadContext",
        "_realMaximumRecents",
        "_realPrintPSCode:helpedBy:",
+       "_realStoreTypeForStoreWithType:URL:error:",
        "_realWindowNumber",
        "_reallocColors:",
+       "_reallocData:",
        "_reallyChooseGuess:",
+       "_reallyControlView",
        "_reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:",
-       "_reallyFileExtensionsFromType:",
        "_reallyInitWithIncrementalImageReader:",
        "_reallyNeedsDisplayForBounds",
-       "_reallySetStringValue:",
+       "_reallyProcessNotifications:",
        "_realmForURL:",
-       "_reattachColumnSubviews:",
        "_rebuildOrUpdateServicesMenu:",
+       "_recacheAll",
        "_recacheButtonColors",
-       "_recalcRectsForItem:forSize:",
-       "_recalculateDefaultVerticalLineSettings:::::::",
-       "_recalculateDelta:",
-       "_recalculateInscriptionLineHeightInGlyphVector:forGlyphRange:usesLeading:lineheight:glyphOffset:",
+       "_recacheString",
+       "_recalcRectsForCell:",
        "_recalculateUsageForTextContainerAtIndex:",
        "_receiveHandlerRef",
        "_receivedData:",
-       "_receivedError:complete:",
        "_receivedError:fromDataSource:",
-       "_recentDocumentsLimit",
-       "_recomputeClipTipsIfNecessary",
+       "_receivedMainResourceError:",
+       "_receivedMainResourceError:complete:",
+       "_recentMenuItemTitlesFromLocationComponentChains:",
+       "_recentPlacesNode",
+       "_recomputeBucketIndex:bucketFirstRowIndex:",
        "_recomputeLabelHeight",
        "_reconcileDisplayNameAndTrackingInfoToFileName",
        "_reconcilePageFormatAttributes",
        "_reconcilePrintSessionAttributes",
        "_reconcilePrintSettingsAttributes",
+       "_reconcileToSuiteRegistry:",
        "_reconfigureAnimationState:",
-       "_recordsBinderChanges",
-       "_recordsInIndex",
-       "_recordsToIndex",
+       "_recordForObject:",
+       "_recreateQuery",
        "_rectArrayForRange:withinSelectionRange:rangeIsCharRange:singleRectOnly:fullLineRectsOnly:inTextContainer:rectCount:rangeWithinContainer:glyphsDrawOutsideLines:",
        "_rectForSegment:inFrame:",
+       "_rectImpl",
        "_rectOfColumnRange:",
        "_rectOfItemAtIndex:",
        "_rectOfRowAssumingRowExists:",
        "_rectOfRowRange:",
        "_rectToDisplayForItemAtIndex:",
+       "_rectWithImpl:",
+       "_rectangularCharacterRangesForGlyphRange:from:to:granularity:",
        "_rectsForBounds:",
+       "_rectsForMultiClippedContentDrawing",
        "_recurWithContext:chars:glyphs:stringBuffer:font:",
        "_recurseToFindTargetItem",
        "_recursiveBreakKeyViewLoop",
-       "_recursiveCheckCompleteFromFrame:",
+       "_recursiveCheckLoadComplete",
        "_recursiveDisableTrackingRectsForHiddenViews",
        "_recursiveDisplayAllDirtyWithLockFocus:visRect:",
        "_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:",
-       "_recursiveEnableItems",
        "_recursiveEnableTrackingRectsForNonHiddenViews",
        "_recursiveEnsureSubviewNextKeyViewsAreSubviewsOf:",
        "_recursiveFindDefaultButtonCell",
        "_recursiveGainedHiddenAncestor",
+       "_recursiveGatherAllKeyViewCandidatesInArray:",
        "_recursiveGoToItem:fromItem:withLoadType:",
        "_recursiveLostHiddenAncestor",
        "_recursiveOrderFrontSurfacesForNonHiddenViews",
        "_recursiveOrderOutSurfacesForHiddenViews",
+       "_recursiveRecomputeToolTips",
        "_recursiveSetDefaultKeyViewLoop",
        "_recursiveStopLoading",
+       "_recursiveWindowDidEnableToolTipCreationAndDisplay",
        "_recursivelyAddItemsInMenu:toTable:",
        "_recursivelyRemoveItemsInMenu:fromTable:",
-       "_redisplayFromRow:",
-       "_referenceBinderAtIndex:forTableView:",
-       "_referenceBinderController",
+       "_redisplayAndResizeFromRow:",
+       "_redisplayTableContentWithRowIndexes:columnIndexes:",
+       "_refaultLocalObjectWithGlobalID:",
+       "_refaultObject:globalID:editingContext:boolean:",
+       "_refaultObjectWithGlobalID:globalID:",
+       "_referenceArray",
        "_referenceBinderForTableColumn:",
        "_referenceBinding",
        "_referenceBindingValue",
        "_referenceBindingValueAtIndex:",
+       "_referenceBindingValueAtIndexPath:",
+       "_referenceData",
+       "_referenceData64",
+       "_referenceDataPtr",
        "_reflectDocumentViewBoundsChange",
        "_reflectFont",
+       "_reflectSelection",
        "_reflectSelection:",
-       "_refresh",
-       "_refreshServerList",
-       "_refreshWindows",
+       "_reformListAtIndex:",
+       "_reformTableRow",
+       "_refreshDetailContentInBackground:",
+       "_refreshesAllModelKeys",
+       "_refreshesAllModelObjects",
+       "_regenerateFormatter",
+       "_region:",
        "_regionForOpaqueDescendants:forMove:",
-       "_regionsArray",
        "_registerAllDrawersForDraggedTypesIfNeeded",
+       "_registerBuiltInFormatters",
+       "_registerClearStateWithUndoManager",
        "_registerDefaultPlaceholders",
-       "_registerDefaults",
+       "_registerDefaultStoreClassesAndTypes",
        "_registerDragTypes:",
        "_registerDragTypesIfNeeded",
+       "_registerDragTypesLater",
        "_registerDraggedTypes",
-       "_registerEnumeration:named:inSuite:",
+       "_registerDynamicToolTipManagerInstance:",
+       "_registerForAdapterContextNotifications:",
+       "_registerForAutosaveNotification",
        "_registerForChildChangedNotifications",
+       "_registerForClipBoundsDidChangeNotificaitonIfNecessaryForSuperview:",
        "_registerForCompletion:",
        "_registerForCookiePreferenceNotification",
+       "_registerForDocViewFrameAndBoundsChangeNotifications",
+       "_registerForDragTypes",
+       "_registerForDraggedTypes:later:",
        "_registerForMovieIdle",
+       "_registerForQueryStateChangeNotifications:",
        "_registerForToolbarNotifications:",
+       "_registerFormatter:forErrorKey:parameters:",
        "_registerMenuForKeyEquivalentUniquing:",
        "_registerMenuItemForKeyEquivalentUniquing:",
+       "_registerObject:withID:",
+       "_registerObjectClass:placeholder:binding:",
+       "_registerObservedModelKeyPath:",
+       "_registerObservingForAllModelObjects",
+       "_registerOrCollectSuiteDescription:",
+       "_registerOrUnregister:observerNotificationsForKeyPath:",
+       "_registerOrUnregister:observerNotificationsForKeyPath:ofModelObject:",
+       "_registerOrUnregister:observerNotificationsForModelObject:",
        "_registerRequiredAEHandlers",
        "_registerServicesMenu:withSendTypes:andReturnTypes:addToList:",
-       "_registerSynonym:forClassName:inSuite:",
-       "_registerTableColumnBinder:toTableColumn:",
+       "_registerStoreClass:forStoreType:",
+       "_registerSuiteDescriptions:",
+       "_registerTableColumnBinder:toTableColumn:autoCreateReferenceController:",
        "_registerToolbarInstance:",
+       "_registerUndoForModifiedObject:",
        "_registerUndoObject:",
        "_registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:",
-       "_registerValueType:named:inSuite:",
-       "_registerViewClass:placeHolder:binding:",
-       "_registerViewClass:representationClass:forURLScheme:",
        "_registerWebKitErrors",
        "_registerWithDock",
        "_registerWithDockIfNeeded",
-       "_registerWithObject:",
-       "_registeredClasses",
        "_registeredForChildNotifications",
+       "_registeredObjects",
+       "_registeredStoreTypes",
        "_registrationDictionaryForUnitNamed:",
-       "_reinitWithFZService:",
-       "_relativeURLPath",
+       "_relatedNodes",
+       "_relationshipNamed:",
+       "_relationshipNamesByType:",
        "_releaseAllPendingPageCaches",
+       "_releaseAllPreWillChangeExpandedNodes",
        "_releaseBindingAdaptor",
        "_releaseDelegate",
+       "_releaseEffect",
        "_releaseEvents",
        "_releaseFutureIconForURL:",
        "_releaseIconForIconURLString:",
        "_releaseInput",
        "_releaseKVCMaps",
        "_releaseLiveResizeCachedImage",
+       "_releaseNodePreviewHelper",
+       "_releaseOneLevelPreWillChangeExpandedNodes",
        "_releaseOriginalIconsOnDisk",
        "_releasePageCache:",
        "_releaseProtocolClientReference",
+       "_releaseRowHeightStorageIfNecessary",
        "_releaseUndoManager",
-       "_releaseUserAgentStrings",
        "_releaseWireCount:",
        "_reloadAllowingStaleDataWithOverrideEncoding:",
        "_reloadChildrenForNode:",
-       "_reloadFontInfoIfNecessary:",
+       "_reloadForPluginChanges",
        "_reloadSidebarNodes",
        "_remainingString",
        "_remove:",
        "_remove:andAddMultipleToTypingAttributes:",
-       "_removeAllCellClipTips",
+       "_removeAllCellMouseTracking",
        "_removeAllDrawersImmediately:",
+       "_removeAllRevealovers",
+       "_removeAllTrackingRects",
        "_removeAndDecrementBy:startingAtIndex:",
        "_removeBinding:",
        "_removeBinding:byReplacingWithRemainingBindingsInArray:",
-       "_removeBlankLines",
        "_removeBottom",
        "_removeButtons",
        "_removeChild:",
        "_removeClipIndicatorFromSuperview",
-       "_removeCollection:",
        "_removeCursorRect:cursor:forView:",
-       "_removeDeclaredKey:",
+       "_removeEntities:fromConfiguration:",
+       "_removeEntity:",
+       "_removeEntityNamed:",
        "_removeFileAtPath:handler:shouldDeleteFork:",
+       "_removeFontDescriptor:fromCollection:save:",
        "_removeFontDescriptorFromDrag:point:",
        "_removeFrameUsingName:domain:",
-       "_removeFromFontCollection",
        "_removeFromGroups:",
        "_removeFromKeyViewLoop",
-       "_removeHandlingIfPresent:",
        "_removeHeartBeartClientView:",
        "_removeHelpKeyForObject:",
        "_removeHiddenWindow:",
-       "_removeInstance:",
-       "_removeInternalRedFromTextAttributesOfNegativeValues",
        "_removeItem:fromTable:",
        "_removeItemAtIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+       "_removeMouseMovedListener:",
        "_removeNextPointersToMe",
+       "_removeNumberOfIndexes:fromSelectionIndexesAtIndex:sendObserverNotifications:",
+       "_removeObject:objectIDMap:",
+       "_removeObjectAtArrangedObjectIndex:objectHandler:",
        "_removeObjectForAttributeKey:",
-       "_removeObjectsAtArrangedObjectIndexes:contentIndexes:",
-       "_removeObjectsAtIndexes:",
-       "_removeObserver:forKey:",
+       "_removeObjects:objectHandler:",
+       "_removeObjectsAtArrangedObjectIndexPaths:objectHandler:",
+       "_removeObjectsAtArrangedObjectIndexes:contentIndexes:objectHandler:",
+       "_removeObserver:forProperty:",
        "_removeObserver:notificationNamesAndSelectorNames:object:",
        "_removeOrRename:",
        "_removePasswordForRealm:URL:",
-       "_removePermanently",
+       "_removePlugInStreamClient:",
        "_removePopUpWithTag:",
        "_removePreviousPointersToMe",
+       "_removeProperty:",
+       "_removePropertyNamed:",
        "_removeProxyPasswordForURL:",
        "_removeRangeInArrayAtIndex:",
-       "_removeRecords",
        "_removeReferenceForIdentifier:",
-       "_removeSaveFile",
-       "_removeSizeFromList:",
        "_removeSortDescriptorForTableColumn:",
        "_removeSpellingAttributeForRange:",
        "_removeStatusItemWindow:",
+       "_removeSubentity:",
        "_removeSubresourceClient:",
        "_removeSubview:",
        "_removeTabViewItems:",
        "_removeToolTip",
        "_removeToolTip:stopTimerIfNecessary:",
        "_removeTrackingRectForToolTip:stopTimerIfNecessary:",
+       "_removeTrackingRectTag:",
+       "_removeTrackingRects",
+       "_removeTrackingRects:count:",
+       "_removeTrackingRectsForView:stopTimerIfNecessary:",
        "_removeWindow:",
        "_removeWindowFromCache:",
        "_removeWindowRef",
        "_rename:",
        "_rename:as:",
+       "_renameChild:toName:",
        "_renameCollection:to:",
        "_renameCollectionWithName:to:",
+       "_renderingContextWithGlyphOrigin:",
        "_reorderColumn:withEvent:",
        "_reorderResizeImageCache",
        "_repTypesAllowImageTypeOmission:",
        "_repeatMultiplier:",
        "_repeatTime",
+       "_repetitionCount",
        "_replaceAccessoryView:with:topView:bottomView:previousKeyView:",
-       "_replaceAllAppearancesOfString:withString:",
        "_replaceAllItemsAndSetNewWithItemIdentifiers:",
-       "_replaceFirstAppearanceOfString:withString:",
-       "_replaceLastAppearanceOfString:withString:",
-       "_replaceObject:",
-       "_replaceObject:forKey:",
+       "_replaceCString:withCString:",
+       "_replaceFontDescriptor:withDescriptor:inCollection:",
        "_replaceObject:withObject:",
-       "_replaceObjectsAtIndexes:withObjects:",
        "_replaceRangeInArrayAtIndex:withRange:",
+       "_replaceSelectionWithArchive:selectReplacement:",
        "_replaceSubview:with:rememberAndResetEditingFirstResponder:abortEditingIfNecessary:",
        "_replicatePath:atPath:operation:fileMap:handler:",
-       "_replySequenceNumber:ok:",
-       "_replyToLaunch",
-       "_replyToOpen:",
-       "_representationClass",
        "_representationClassForMIMEType:",
        "_representationExistsForURLScheme:",
+       "_representedObjectForString:",
+       "_representedObjectForString:allowNULL:",
        "_requestAnyEditableState",
        "_requestAnyEnabledState",
        "_requestAnyHiddenState",
@@ -3607,31 +4643,31 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_requestNotification",
        "_requestTextColor:",
        "_requestTypeForOperationKey:",
+       "_requiredCarbonCatalogInfoMask",
        "_requiredMinSize",
        "_requiresCacheWithAlpha:",
        "_reset",
+       "_resetAllChanges",
+       "_resetAllChanges:",
        "_resetAllDrawersDisableCounts",
        "_resetAllDrawersPostingCounts",
-       "_resetAttachedMenuPositions",
-       "_resetBackForwardListToCurrent",
+       "_resetAlternateICUValues",
        "_resetCachedValidationState",
        "_resetCursorRects",
+       "_resetDictionaryRepresentation",
        "_resetDisableCounts",
        "_resetDiscardMask",
        "_resetDragMargins",
        "_resetDrawerFirstResponder",
-       "_resetFaceInfo:",
+       "_resetFirstResponder",
        "_resetIncrementalSearchBuffer",
-       "_resetIncrementalSearchOnFailure",
        "_resetMeasuredCell",
+       "_resetModificationDate",
        "_resetMoveAndRenameSensing",
-       "_resetOpacity:",
        "_resetOpacity:andForceSetColor:",
        "_resetPostingCounts",
-       "_resetRowEntriesToNewFilter",
+       "_resetProgress",
        "_resetScreens",
-       "_resetSizeList:",
-       "_resetTimer",
        "_resetTitleBarButtons",
        "_resetTitleFont",
        "_resetTitleWidths",
@@ -3641,6 +4677,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_resize:",
        "_resizeAccordingToTextView:",
        "_resizeAllCaches",
+       "_resizeCache:cachedSeparately:bps:numColors:hasAlpha:",
        "_resizeColumn:withEvent:",
        "_resizeColumnByDelta:resizeInfo:",
        "_resizeContentsOfMainBox",
@@ -3648,41 +4685,43 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_resizeContentsOfPreviewBox",
        "_resizeCursorForTableColumn:",
        "_resizeDeltaFromPoint:toEvent:",
-       "_resizeEditedCellWithOldFrame:",
        "_resizeFromEdge",
        "_resizeHeight:",
        "_resizeImage",
-       "_resizeLeftCursor",
-       "_resizeLeftRightCursor",
+       "_resizeKeepingPanelOnScreen:expand:",
        "_resizeOutlineColumn",
-       "_resizeRightCursor",
        "_resizeSelectedTabViewItem",
+       "_resizeTable:level:range:column:widthDelta:",
+       "_resizeTable:level:range:row:heightDelta:",
        "_resizeTextFieldToFit:",
        "_resizeTextViewForTextContainer:",
        "_resizeToolbarImageRepViewToFit:",
        "_resizeToolbarViewToFit:",
-       "_resizeView",
        "_resizeViewToFit:",
        "_resizeViewsForOffset:coordinate:",
+       "_resizeWeight",
+       "_resizeWeightSharedWithDuplicateItems",
        "_resizeWeighting",
        "_resizeWindow:toFrame:display:",
        "_resizeWindowWithMaxHeight:",
        "_resizeWithDelta:fromFrame:beginOperation:endOperation:",
        "_resizedImage:",
-       "_resizesLastColumnOnly",
        "_resolveHelpKeyForObject:",
        "_resolveMarkerToPlaceholder:forBindingInfo:allowPluginOverride:",
+       "_resolveName",
+       "_resolveNamespaceForPrefix:",
+       "_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:",
        "_resolveTypeAlias:",
-       "_resourceForkAwareFileManager:removeFileAtPath:handler:",
-       "_resourceForkReferenceNumber",
        "_resourceLoadDelegateForwarder",
        "_resourceLoadDelegateImplementations",
        "_resourceLoadLoop:",
-       "_resourceTimedLayoutDelay",
-       "_resourceTimedLayoutEnabled",
+       "_resourcesFromPropertyLists:",
        "_responderInitWithCoder:",
+       "_response",
        "_responses",
        "_responsibleDelegateForSelector:",
+       "_restartEditingWithTextView:",
+       "_restartMovementTracking",
        "_restoreCursor",
        "_restoreDefaultSettingsCommon",
        "_restoreDefaultSettingsForOpenMode",
@@ -3696,76 +4735,105 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_restoreSplitPositionFromDefaults",
        "_restoreSubviews",
        "_restoreTornOffMenus",
+       "_resultTypeDescription",
        "_resumeExecutionWithResult:",
+       "_resumeIfNotTopHandling:withScriptCommandResult:",
+       "_resumeInformation",
+       "_resumeLoading",
        "_resumeUIHeartBeatingInView:",
        "_retainFutureIconForURL:",
        "_retainIconForIconURLString:",
        "_retainIconInDatabase:",
        "_retainOriginalIconsOnDisk",
-       "_retainedBitmapRepresentation",
+       "_retainedObjectWithID:optionalHandler:",
+       "_retainedPrimaryKeyNumberForObject:",
+       "_retainedPrimaryKeyNumberForObjectID:",
+       "_retrieveKeyboardUIModeFromPreferences:",
        "_returnFirstResponderToWindowFromKeyboardHotKeyEvent",
        "_returnValue",
-       "_reverseCompare:",
-       "_revertPanel:didConfirm:contextInfo:",
+       "_revealoverInfoForCell:cellRect:",
+       "_revertAlertSheet:wasPresentedWithResult:inContext:",
+       "_revertDisplayValueBackToOriginalValue:",
        "_revertToOldRowSelection:fromRow:toRow:",
        "_rightGroupRect",
        "_rightMouseUpOrDown:",
        "_rightToLeftAtIndex:",
-       "_rightmostResizableColumn",
+       "_rightmostAutoresizingColumn",
+       "_rollbackTransaction:",
+       "_rootEntity",
+       "_rootNode",
        "_rotateCoordsForDrawLabelInRect:",
-       "_rotationForGlyphAtIndex:effectiveRange:",
-       "_rowEntryForChild:ofParent:",
-       "_rowEntryForItem:",
-       "_rowEntryForRow:",
+       "_rowArrayForBlock:atIndex:layoutManager:containerWidth:rowCharRange:indexInRow:previousRowBlockHelper:",
+       "_rowEntryForChild:ofParent:requiredRowEntryLoadMask:",
+       "_rowEntryForItem:requiredRowEntryLoadMask:",
+       "_rowEntryForRow:requiredRowEntryLoadMask:",
+       "_rowHeaderColumn",
+       "_rowHeaderFixedContentRect",
+       "_rowHeaderScrollableContentVisibleRect",
+       "_rowHeaderSeparatorLineColor",
+       "_rowHeaderShadowSurface",
+       "_rowHeaderShadowSurfaceBounds",
+       "_rowHeaderShadowSurfaceIsShowing",
+       "_rowHeaderTableColumn",
+       "_rowHeightStorage:",
+       "_rowHeightStorageBeginLayoutChange",
+       "_rowHeightStorageComputeRectOfRow:cacheHint:",
+       "_rowHeightStorageComputeRowAtPoint:cacheHint:",
+       "_rowHeightStorageEndLayoutChange",
+       "_rowHeightStorageInvalidateCacheAndStorage",
+       "_rowHeightStorageUpdateForDeletedRows:atIndex:",
+       "_rowHeightStorageUpdateForInsertedRows:atIndex:",
+       "_rowsChangedByLastExecute",
        "_rowsInRectAssumingRowsCoverVisible:",
        "_ruleAreaRect",
+       "_ruleImpl",
+       "_ruleListImpl",
+       "_ruleListWithImpl:",
+       "_ruleWithImpl:",
        "_rulerAccView",
        "_rulerAccViewAlignmentAction:",
-       "_rulerAccViewFixedLineHeightAction:",
-       "_rulerAccViewIncrementLineHeightAction:",
-       "_rulerAccViewPullDownAction:",
-       "_rulerAccViewSpacingAction:",
-       "_rulerAccViewStylesAction:",
-       "_rulerAccViewUpdatePullDown:",
+       "_rulerAccViewCenterTabWell",
+       "_rulerAccViewDecimalTabWell",
+       "_rulerAccViewLeftTabWell",
+       "_rulerAccViewRightTabWell",
+       "_rulerAccViewSetUpLists",
        "_rulerAccViewUpdateStyles:",
        "_rulerAccessoryViewAreaRect",
        "_rulerOrigin",
-       "_rulerline::last:",
        "_runAlertPanelForDocumentMoved:orDocumentRenamed:orDocumentInTrash:orDocumentUnavailable:thenSaveDocumentWithDelegate:didSaveSelector:contextInfo:",
        "_runArrayHoldingAttributes",
-       "_runBlockingWithDuration:firingInterval:",
+       "_runBlocking",
        "_runCustomizationPanel",
+       "_runInNewThread",
        "_runInitBook:",
+       "_runModalWithColor:",
        "_runModalWithPrintInfo:",
        "_runningDocModal",
        "_sanityCheckPListDatabase:",
-       "_saveAllEnumeration:",
-       "_saveAsIntoFile:",
-       "_saveChanges",
        "_saveConfigurationUsingName:domain:",
        "_saveCookies",
        "_saveCookiesIfScheduled",
        "_saveCredential:forProtectionSpace:isDefault:",
        "_saveCurrentPanelState:",
        "_saveDocumentAndScrollState",
-       "_saveFailed",
+       "_saveDocuments:",
        "_saveFrameUsingName:domain:",
        "_saveHistoryGuts:URL:error:",
-       "_saveImageDataToDisk:",
        "_saveInitialMenuPosition",
-       "_saveLineFragmentWithGlyphRange:glyphVector:glyphOrigin:drawsOutside:lineFragmentRect:isElasticRange:",
        "_saveMode",
-       "_savePanelDidEnd:returnCode:contextInfo:",
+       "_saveObjects:toStore:usingContext:",
+       "_savePanelAccessoryViewForWritableTypes:defaultType:",
+       "_savePanelWasPresented:withResult:inContext:",
+       "_saveRequestForStore:originalRequest:",
        "_saveScrollPositionToItem:",
        "_saveSplitPositionToDefaults",
-       "_saveToPboard",
        "_saveTornOffMenus",
-       "_saveValueInUndo:forProperty:",
        "_saveVisibleFrame",
        "_saveWidthsToDefaults",
        "_savedMode",
        "_savedVisibleFrame",
        "_scaleFactor",
+       "_scaleFactorForPrintOperation:",
        "_scaleFactorForStyleMask:",
        "_scaleIcon:toSize:",
        "_scaledBackground",
@@ -3773,25 +4841,45 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_scalesBackgroundHorizontally",
        "_scalesBackgroundVertically",
        "_scanDecimal:into:",
+       "_scanForPlugIns:",
        "_scanImages",
        "_scheduleAutoExpandTimerForItem:",
        "_scheduleCallbacks",
        "_scheduleChangeNotification",
+       "_scheduleDelayedAutocomplete",
        "_scheduleDelayedShowOpenHandCursorIfNecessary",
-       "_scheduleInCFRunLoop:forMode:",
        "_scheduleInDefaultRunLoopForMode:",
-       "_scheduleLayout:",
-       "_scheduleOriginLoad",
+       "_scheduleLocalNotification",
        "_scheduleRelease",
        "_scheduleReleaseTimer",
        "_scheduleSaveCookies",
        "_scheduleSetupOnLoadThread",
+       "_scheduleWindow:forBatchOrdering:relativeTo:",
+       "_schemeData",
+       "_schemeSeparatorWithoutColon",
+       "_scopeButtonsForNodes:",
        "_screenChanged:",
        "_screenRectContainingPoint:",
+       "_scriptClassTerminologyForName:",
+       "_scriptCommandTerminologyForName:",
+       "_scriptElementImpl",
+       "_scriptErrorExpectedType",
+       "_scriptErrorOffendingObjectDescriptor",
+       "_scriptIsYesForKey:default:",
+       "_scriptStringWithPropertyAccess:",
+       "_scriptStringWithTabCount:",
+       "_scriptTerminologyDescription",
+       "_scriptTerminologyName",
+       "_scriptTerminologyNameOrNames",
+       "_scriptTerminologyPluralName",
+       "_scriptingEnumeratorOfType:withDescriptor:",
+       "_scriptingObjectOfType:withDescriptor:",
+       "_scriptingPointWithDescriptor:",
+       "_scriptingRectangleWithDescriptor:",
+       "_scriptingTextWithDescriptor:",
        "_scrollArrowHeight",
-       "_scrollClipView:toPoint:animate:",
-       "_scrollColumnToLastVisible:",
        "_scrollColumnToVisible:private:",
+       "_scrollColumnToVisible:requireCompletelyVisible:",
        "_scrollColumnsForScrollerIncrementOrDecrementUsingPart:",
        "_scrollColumnsRightBy:",
        "_scrollDown:",
@@ -3809,13 +4897,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_scrollSelectionToVisible",
        "_scrollTo:",
        "_scrollTo:animate:",
-       "_scrollToBottomLeft",
        "_scrollToFinalPosition",
        "_scrollToMatchContentView",
-       "_scrollToPoint:animate:",
        "_scrollToPosition:",
-       "_scrollToTop",
-       "_scrollToTopLeft",
        "_scrollUp:",
        "_scrollVerticallyBy:",
        "_scrollView",
@@ -3827,6 +4911,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_scrollingDirectionAndDeltas:",
        "_scrollingMenusAreEnabled",
        "_searchChanged:",
+       "_searchFavoriteStyleCollection",
+       "_searchFieldAction:",
        "_searchFieldCancel:",
        "_searchFieldClearRecents:",
        "_searchFieldDoRecent:",
@@ -3834,37 +4920,52 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_searchForImageNamed:",
        "_searchForSoundNamed:",
        "_searchForSystemImageNamed:",
+       "_searchMenuForProxy",
+       "_searchMenuTemplate",
+       "_searchMenuTracking",
+       "_searchRegularCollection",
        "_secProtocolForProtectionSpace:",
        "_secondsFromGMTForAbsoluteTime:",
        "_seemsToBeVertical",
        "_segmentIndexForElementIndex:",
+       "_selectAllContent:inDetailcontroller:",
+       "_selectAllForMatrix:sender:",
+       "_selectAllNoRecurse:",
        "_selectAnyValidResponderOverride",
        "_selectCell:inColumn:",
        "_selectCellIfRequired",
-       "_selectCrayon:",
+       "_selectCrayon:updateSelection:",
+       "_selectElementImpl",
        "_selectFirstEnabledCell",
        "_selectFirstKeyView",
        "_selectHighlightedSegment",
-       "_selectItem:",
-       "_selectItemBestMatching:",
+       "_selectInTabView:itemAtIndex:",
+       "_selectInTabView:itemWithIdentifier:",
+       "_selectInTabView:itemWithLabel:",
        "_selectKeyCellAtRow:column:",
+       "_selectMarkedText",
        "_selectModuleOwner:",
        "_selectNameFieldContentsExcludingExtension",
        "_selectNextCellKeyStartingAtRow:column:",
        "_selectNextItem",
-       "_selectObjectsAtIndexes:avoidsEmptySelection:",
-       "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:",
+       "_selectNextSubfield",
+       "_selectObjectsAtIndexPaths:avoidsEmptySelection:sendObserverNotifications:",
+       "_selectObjectsAtIndexPathsNoCopy:avoidsEmptySelection:sendObserverNotifications:",
+       "_selectObjectsAtIndexes:avoidsEmptySelection:sendObserverNotifications:forceUpdate:",
+       "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:sendObserverNotifications:forceUpdate:",
        "_selectOrEdit:inView:target:editor:event:start:end:",
        "_selectPopUpWithTag:",
        "_selectPreviousItem",
+       "_selectPreviousSubfield",
        "_selectRange::::",
+       "_selectRangeInMarkedText:",
        "_selectRectRange::",
-       "_selectRow:subrow:byExtendingSelection:members:",
        "_selectRowIndexes:inColumn:",
        "_selectRowRange::",
        "_selectTabWithDraggingInfo:",
        "_selectTextOfCell:",
        "_selectWindow:",
+       "_selectedArchive",
        "_selectedCellsInColumn:",
        "_selectedCollectionDescriptors",
        "_selectedCollectionName",
@@ -3874,23 +4975,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_selectedFamilyArray",
        "_selectedFamilyName",
        "_selectedFontName",
+       "_selectedRange",
+       "_selectedRanges",
+       "_selectedRangesByTogglingRanges:withRanges:initialCharacterIndex:granularity:",
        "_selectedSize",
+       "_selectionChanged",
        "_selectionIndexesCount",
+       "_selectionIsInsideMarkedText",
+       "_selectionPasteboardTypes",
+       "_selectionStartFontAttributesAsRTF",
        "_selectorName",
+       "_selectorToGetValueWithNameForKey:",
+       "_selectorToGetValueWithUniqueIDForKey:",
        "_selfBoundsChanged",
-       "_send:",
        "_sendAction:to:row:column:",
        "_sendActionAndNotification",
        "_sendActionFrom:",
        "_sendCallbacks",
        "_sendCarbonNotification",
+       "_sendCarbonNotificationFor:tags:withValuePtrs:andSizes:",
+       "_sendCarbonNotificationForTag:withValuePtr:andSize:",
        "_sendChangeNotification",
        "_sendClientMessage:arg1:arg2:",
+       "_sendDataSourceSetObjectValue:",
        "_sendDataSourceSortDescriptorsDidChange:",
+       "_sendDataSourceWriteDragDataWithIndexes:toPasteboard:",
        "_sendDataSourceWriteDragRows:toPasteboard:",
+       "_sendDelegateCanSelectColumn:byExtendingSelection:",
+       "_sendDelegateCanSelectRow:byExtendingSelection:",
+       "_sendDelegateCreateRowsForColumn:inMatrix:",
        "_sendDelegateDidClickColumn:",
        "_sendDelegateDidDragColumn:",
        "_sendDelegateDidMouseDownInHeader:",
+       "_sendDelegateHeightOfRow:",
+       "_sendDelegateSelectRow:inColumn:",
+       "_sendDelegateToolTipForCell:tableColumn:rect:row:mouseLocation:",
+       "_sendDelegateWillDisplayCell:atRow:column:",
+       "_sendDelegateWillDisplayCell:forColumn:row:",
+       "_sendDelegateWillDisplayOutlineCell:inOutlineTableColumnAtRow:",
        "_sendDidBeginMessage",
        "_sendDidCancelAuthenticationCallback",
        "_sendDidFailCallback",
@@ -3901,194 +5023,201 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_sendDidReceiveResponseCallback",
        "_sendDirectoryDidChange",
        "_sendDoubleActionToCellAt:",
+       "_sendFileSystemChangedNotificationForSavePanelInfo:",
        "_sendFinderAppleEvent:class:file:",
        "_sendFinishLaunchingNotification",
        "_sendNotification:entries:",
        "_sendNotificationForURL:",
+       "_sendOrEnqueueNotification:selector:",
        "_sendPartialString",
        "_sendPortMessageWithComponent:msgID:timeout:",
-       "_sendProgress:",
        "_sendQueuedAction",
+       "_sendSelectionDidChange",
        "_sendToReceiversWithIndex:andFillInResults:",
+       "_sendToolTipMouseEntered",
+       "_sendToolTipMouseExited",
        "_sendWillCacheResponseCallback",
        "_sendWillSendRequestCallback",
        "_senderIsInvalid:",
        "_sendingSocketForPort:",
+       "_sendingTableViewRowAction",
        "_separatorFinishInit",
        "_serverDied:",
-       "_servicesMenuIsVisible",
-       "_set:",
-       "_setAEDesc:",
-       "_setAcceptsFirstMouse:",
-       "_setAcceptsFirstResponder:",
+       "_servicesMenuHasBeenBuilt",
        "_setActivationState:",
        "_setActsAsPalette:forToolbar:",
-       "_setAdditionalThingsFromEvent:inConstructionContext:",
-       "_setAllIndexesNeedRefresh",
+       "_setAdditionalThingsFromEvent:",
        "_setAllItemsTransparentBackground:",
-       "_setAllKeysNeedRefresh",
-       "_setAllPanelsNonactivating:",
        "_setAllPossibleLabelsToFit:",
        "_setAllowsMultipleRows:",
        "_setAllowsNonVisibleCellsToBecomeFirstResponder:",
        "_setAllowsTearOffs:",
        "_setAltContents:",
-       "_setAlwaysIdle:",
+       "_setAlwaysUseATSU:",
+       "_setAnimateColumnScrollingForAnyEvent:",
        "_setAnimates:",
-       "_setAntialiased:",
        "_setAppleEventHandling:",
-       "_setAppleMenuEnabled:",
        "_setApplicationIconImage:setDockImage:",
        "_setArgFrame:",
-       "_setArgumentsFromEvent:inConstructionContext:",
-       "_setArrowsConfig:",
-       "_setAsSystemColor",
-       "_setAscending:",
        "_setAsideSubviews",
-       "_setAttributedDictionaryClass:",
-       "_setAttributedString:",
+       "_setAttributeValueClassName:",
        "_setAttributes:isMultiple:",
        "_setAttributes:newValues:range:",
+       "_setAutoAppendsMDAttributesToSavedFile:",
+       "_setAutoGeneratedInitialFirstResponder:",
        "_setAutoPositionMask:",
-       "_setAutoResizeDocView:",
-       "_setAutoreleaseDuringLiveResize:",
        "_setAutoscrollDate:",
-       "_setAutoscrollResponseMultiplier:",
+       "_setAutovalidatesItems:",
        "_setAvoidsActivation:",
        "_setBackgroundColor:",
-       "_setBackgroundTransparent:",
+       "_setBaselineRenderingMode:",
+       "_setBatchingParams",
        "_setBindingAdaptor:",
-       "_setBlobForCurrentObject:",
+       "_setBindingCreationDelegate:",
        "_setBlockCapacity:",
        "_setBool:ifNoAttributeForKey:",
        "_setBoolValue:forKey:",
        "_setBorderType:",
        "_setBox:enabled:",
-       "_setBranchImageEnabled:",
+       "_setBrowserOptimizationsEnabled:",
        "_setBulletCharacter:",
        "_setBundle:forClassPresentInAppKit:",
        "_setBundleForHelpSearch:",
-       "_setButtonBordered:",
        "_setButtonImageSource:",
        "_setButtonToolTip:",
        "_setButtonType:adjustingImage:",
-       "_setCFClientFlags:callback:context:",
        "_setCGImageRef:",
        "_setCacheWindowNum:forWindow:",
+       "_setCalculatedExpiration:",
+       "_setCallbackHandler:",
        "_setCanUseReorderResizeImageCache:",
        "_setCaseConversionFlags",
        "_setCellFrame:",
-       "_setCertificatePolicy:",
        "_setChangedFlags:",
-       "_setClassDescription:forAppleEventCode:",
-       "_setClassName:forSynonymAppleEventCode:inSuite:",
+       "_setChangedObjectIDs:",
        "_setClipIndicatorItemsFromItemViewers:",
-       "_setCloseEnabled:",
        "_setColorList:",
-       "_setCommandDescription:forAppleEventClass:andEventCode:",
-       "_setConcreteFontClass:",
+       "_setColorPanelColor:force:",
+       "_setColorToChange:",
+       "_setColumnName:",
        "_setConfigurationFromDictionary:notifyFamilyAndUpdateDefaults:",
        "_setConfigurationUsingName:domain:",
-       "_setConsistencyCheckingEnabled:superCheckEnabled:",
        "_setContainerObservesTextViewFrameChanges:",
+       "_setContentInBackground:",
+       "_setContentKindAndEncoding",
        "_setContentRect:",
        "_setContentToContentFromIndexSet:",
        "_setContents:",
+       "_setContentsDirty:",
+       "_setContentsDirtyForNodeWithIdentifier:",
        "_setContextMenuEvent:",
        "_setContextMenuTarget:",
        "_setContinuousSpellCheckingEnabledForNewTextAreas:",
+       "_setControl:",
        "_setControlTextDelegateFromOld:toNew:",
        "_setControlView:",
-       "_setController:forBinding:",
-       "_setConvertedData:forType:pboard:generation:inItem:",
+       "_setConversionFromData:type:inPasteboard:generation:item:",
        "_setConvertedData:pboard:generation:inItem:",
        "_setCookies:forURL:policyBaseURL:",
-       "_setCookiesWithoutSaving:",
-       "_setCounterpart:",
+       "_setCookiesWithoutSaving:whilePrivateBrowsing:",
+       "_setCorrelationTableName:",
        "_setCtrlAltForHelpDesired:",
        "_setCurrImageName:",
-       "_setCurrentActivation:",
        "_setCurrentAttachmentRect:index:",
+       "_setCurrentBrowsingNodePath:makeHistory:notify:",
        "_setCurrentClient:",
+       "_setCurrentCollectionRep:",
+       "_setCurrentDirectoryNode:",
+       "_setCurrentDirectoryNode:makeHistory:notify:",
+       "_setCurrentDirectoryNode:pathToNode:",
        "_setCurrentEvent:",
        "_setCurrentInputFilepath:",
        "_setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+       "_setCurrentListLevel:",
+       "_setCurrentListNumber:",
        "_setCurrentlyEditing:",
-       "_setCustomizesAlwaysOnClickAndDrag:",
+       "_setDTDString:",
+       "_setData:",
        "_setData:encoding:",
        "_setDataForkReferenceNumber:",
        "_setDataSource:",
-       "_setDecimalSeparatorNoConsistencyCheck:",
-       "_setDeclaredKeys:",
        "_setDefaultButtonCell:",
-       "_setDefaultButtonCycleTime:",
        "_setDefaultButtonIndicatorNeedsDisplay",
        "_setDefaultButtonPaused:",
        "_setDefaultKeyViewLoop",
        "_setDefaultKeyViewLoopAndInitialFirstResponder",
        "_setDefaultRedColor:",
        "_setDefaultUserInfoFromURL:",
+       "_setDefaultWindowKeyViewLoop",
        "_setDefaults:",
        "_setDelegate:",
        "_setDelegate:forPanel:",
+       "_setDescriptorNoCopy:",
        "_setDeselectsWhenMouseLeavesDuringDrag:",
-       "_setDirectParameterFromEvent:inConstructionContext:",
        "_setDirectoryPath:",
-       "_setDisplayContents:",
+       "_setDisableLiveResizeImageCaching:",
        "_setDisplayContents:usingSimpleCommandDefaults:",
        "_setDisplayName:",
-       "_setDisplayPositionHint:",
-       "_setDisplayRelativeOrder:",
-       "_setDisplayableSampleText:forFamily:",
+       "_setDisplayValue:object:triggerRedisplay:",
        "_setDistanceForVerticalArrowKeyMovement:",
        "_setDocViewFromRead:",
        "_setDocumentDictionaryName:",
        "_setDocumentEdited:",
        "_setDocumentView:",
        "_setDocumentWindow:",
+       "_setDontWarnMessage:",
+       "_setDragAndDropCharRange:",
+       "_setDragAndDropCharRanges:",
+       "_setDragGlyphRange:",
        "_setDragRef:",
+       "_setDraggingDocumentView:",
        "_setDraggingMarker:",
        "_setDrawBackground:",
+       "_setDrawDelegate:",
        "_setDrawerEdge:",
-       "_setDrawerTransform:",
-       "_setDrawerVelocity:",
        "_setDrawingBackground:",
-       "_setDrawingInClipTip:",
+       "_setDrawingInRevealover:",
        "_setDrawingToHeartBeatWindow:",
-       "_setDrawsBackground:",
        "_setDrawsBaseline:",
-       "_setDrawsWithTintWhenHidden:",
+       "_setDrawsOwnDescendants:",
+       "_setDynamicToolTipsEnabled:",
        "_setEditingTextView:",
        "_setEnableDelegateNotifications:",
        "_setEnableFlippedImageFix:",
        "_setEnabled:",
+       "_setEnabledFileTypes:",
        "_setEncounteredCloseError:",
        "_setEndSubelementFromDescriptor:",
        "_setEndsTopLevelGroupingsAfterRunLoopIterations:",
+       "_setEntity:",
+       "_setEntityTag:",
        "_setError:",
-       "_setEventDelegate:",
        "_setEventMask:",
        "_setEventRef:",
+       "_setExcludedFromVisibleWindowList:",
        "_setExpectedContentLength:",
-       "_setExportSpecialFonts:",
-       "_setFallBackInitialFirstResponder:",
+       "_setExplicitlyCannotAdd:insert:remove:",
+       "_setExplicitlyCannotAdd:remove:",
+       "_setFault:",
+       "_setFaultHandler:",
+       "_setFetchIndex:",
        "_setFileSpecifier:",
+       "_setFileURL:",
        "_setFinalSlideLocation:",
        "_setFirstColumnTitle:",
-       "_setFirstMoveableItemIndex:",
-       "_setFlags:for:",
        "_setFloat:ifNoAttributeForKey:",
-       "_setFloatingPointFormat:left:right:",
        "_setFocusForCell:forView:withFrame:withFocusRingFrame:withInset:",
        "_setFocusRingNeedsDisplay",
+       "_setFocusRingNeedsDisplayIfNecessary",
        "_setFont:",
        "_setFont:forCell:",
        "_setFontPanel:",
        "_setForceActiveControls:",
        "_setForceFixAttributes:",
        "_setForceItemsToBeMinSize:",
-       "_setFormDelegate:",
-       "_setFormats:",
+       "_setForceNotKeyWindowForInputContext:",
+       "_setForceOriginalFontBaseline:",
+       "_setFormInfoFromRequest:",
        "_setFrame:",
        "_setFrameAfterMove:",
        "_setFrameAutosaveName:changeFrame:",
@@ -4098,107 +5227,143 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_setFrameSavedUsingTitle:",
        "_setFrameSize:",
        "_setFrameSize:forceScroll:",
-       "_setFrameUsingName:domain:",
        "_setFrameUsingName:domain:force:",
-       "_setGlyphGenerator:",
+       "_setGenericValue:forKey:withIndex:flags:",
        "_setGroupIdentifier:",
+       "_setHasBorder:",
        "_setHasCustomSettings:",
        "_setHasHorizontalScroller:",
+       "_setHasObservers:",
+       "_setHasRetainedStoreResources:",
        "_setHasSeenRightToLeft:",
-       "_setHasShadow:",
        "_setHaveNoIconForIconURL:",
        "_setHelpCursor:",
        "_setHelpKey:forObject:",
        "_setHidden:",
        "_setHiddenExtension:",
-       "_setHiddenViewsTint:",
+       "_setHideWithoutResizingWindowHint:",
        "_setHidesOnDeactivateInCache:forWindow:",
        "_setHighlighted:displayNow:",
-       "_setHorizontallyCentered:",
+       "_setHighlightedRowsFromNodes:maintainFirstVisibleRow:",
+       "_setHorizontalScrollerHidden:",
        "_setIcon:forIconURL:",
        "_setIconRef:",
        "_setIconURL:",
        "_setIconURL:forURL:",
        "_setIconURL:withType:",
+       "_setIgnoreForKeyViewLoop:",
        "_setIgnoringScrolling:",
        "_setImage:",
+       "_setImage:fromWindow:",
+       "_setImageAndNotifyTarget:",
+       "_setImageForState",
+       "_setImageNumber:",
        "_setImpactsWindowMoving:",
-       "_setIncludeNewFolderButton:",
-       "_setIndexNeedsRefresh:",
-       "_setIndexPath:",
+       "_setInScaledWindow:",
+       "_setIndex:",
        "_setIndicatorImage:",
        "_setInitialColumnContentSizeOfColumn:",
        "_setInitialFirstResponder:autoGenerated:",
        "_setInitialNameFieldContentsFromPosixName:",
+       "_setInitialized:",
+       "_setInitiatedDrag:",
+       "_setInputs:",
        "_setInsertionPointDisabled:",
        "_setInstance:forIdentifier:",
        "_setInt:ifNoAttributeForKey:",
        "_setIntegerValue:forKey:",
        "_setInteriorNextKeyView:",
+       "_setInternalLoadDelegate:",
+       "_setInverseManyToMany:",
+       "_setInverseRelationship:",
+       "_setIsActive:",
        "_setIsClientRedirect:",
-       "_setIsDefaultFace:",
+       "_setIsEditable:",
+       "_setIsExpanded:",
        "_setIsGrabber:",
-       "_setIsInUILayoutMode:",
-       "_setIsUserRemovable:",
+       "_setIsSmallCapsRenderer:",
        "_setIsWhite:",
        "_setItemViewer:",
        "_setJavaClassesLoaded",
        "_setJobDisposition:savePath:inPrintSession:printSettings:",
        "_setJustOpenedForTargetedLink:",
-       "_setKey:",
-       "_setKey:forAppleEventCode:",
-       "_setKeyBindingMonitor:",
+       "_setKeepCacheWindow:",
        "_setKeyCellAtRow:column:",
        "_setKeyCellFromBottom",
        "_setKeyCellFromTop",
        "_setKeyCellNeedsDisplay",
+       "_setKeySegment:",
+       "_setKeyViewGroupBoundaryNeedsRecalc:",
+       "_setKeyViewLoopNeedsRecalc:",
+       "_setKeyViewRedirectionDisabled:",
+       "_setKeyViewSelectionDirection:",
        "_setKeyWindow:",
        "_setKeyboardFocusRingNeedsDisplay",
+       "_setKeyboardFocusRingNeedsDisplayDuringLiveResize",
        "_setKeyboardFocusRingNeedsDisplayForTabViewItem:",
        "_setKeyboardLoopNeedsUpdating:",
+       "_setKind:",
        "_setKnobThickness:usingInsetRect:",
+       "_setLabel:",
        "_setLang:",
-       "_setLanguageModel:",
        "_setLastCheckedRequest:",
        "_setLastDragDestinationOperation:",
        "_setLastGuess:",
-       "_setLastImageTag:",
+       "_setLastSnapshot:",
        "_setLastVisitedTimeInterval:",
+       "_setLazyDestinationEntityName:",
        "_setLength:ofStatusItemWindow:",
        "_setLevel",
        "_setLevelForAllDrawers",
        "_setLineBorderColor:",
+       "_setLineBreakMode:",
+       "_setLineColor:",
        "_setLiveResize:",
        "_setLiveResizeImageCacheingEnabled:",
        "_setLoadType:",
+       "_setLoadedCookiesWithoutSaving:",
        "_setLoading:",
+       "_setLocalName:",
+       "_setLocalizationPolicy:",
        "_setLocationTemporary:",
        "_setMIMEType:",
        "_setMainDocumentError:",
-       "_setMainMenu:",
        "_setMainWindow:",
+       "_setMaintainingInverse:",
+       "_setManagedObjectContext:",
+       "_setManagedObjectModel:",
+       "_setMap:",
        "_setMarginHeight:",
        "_setMarginWidth:",
        "_setMarkedText:selectedRange:forInputManager:",
        "_setMarkedWidth:",
-       "_setMe",
+       "_setMenu:",
        "_setMenuClassName:",
        "_setMenuName:",
+       "_setMessageAndInformativeText",
+       "_setMetrics:",
+       "_setMinColumnLayoutMinRequiredVisibleWidth:",
        "_setMinPickerContentSize:",
        "_setMinSize:",
        "_setMiniImageInDock",
        "_setMinimizeOnDoubleClick",
+       "_setModal:",
        "_setModalInCache:forWindow:",
        "_setModalWindowLevel",
+       "_setModelKeys:triggerChangeNotificationsForDependentKey:",
+       "_setModified:",
+       "_setModifier:",
        "_setMouseActivationInProgress:",
+       "_setMouseDownEvent:",
        "_setMouseDownFlags:",
        "_setMouseEnteredGroup:entered:",
        "_setMouseMovedEventsEnabled:",
        "_setMouseTrackingForCell:",
        "_setMouseTrackingInRect:ofView:",
-       "_setMultiValueIfNeeded:withLabel:inMultiValue:",
        "_setMultipleValue:forKey:atIndex:",
+       "_setMultipleValue:forKey:atIndexPath:",
        "_setMultipleValue:forKeyPath:atIndex:",
+       "_setMultipleValue:forKeyPath:atIndexPath:",
        "_setName:",
        "_setNameFieldContentsFromPosixName:",
        "_setNeedToFlushGlyph:",
@@ -4210,35 +5375,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_setNeedsDisplayForFirstResponderChange",
        "_setNeedsDisplayForItemIdentifierSelection:",
        "_setNeedsDisplayForItemViewerSelection:",
+       "_setNeedsDisplayForItemViewers:movingFromFrames:toFrames:",
        "_setNeedsDisplayForSelectedCells",
        "_setNeedsDisplayForSortingChangeInColumn:",
        "_setNeedsDisplayForTabViewItem:",
+       "_setNeedsDisplayIfTopLeftChanged",
        "_setNeedsDisplayInColumn:",
        "_setNeedsDisplayInColumn:includeHeader:",
        "_setNeedsDisplayInColumn:row:",
+       "_setNeedsDisplayInColumnRange:includeHeader:",
+       "_setNeedsDisplayInPrimarySortColumns",
+       "_setNeedsDisplayInPrimarySortColumnsIfNecessary",
+       "_setNeedsDisplayInRectForLiveResize:",
        "_setNeedsDisplayInRow:",
        "_setNeedsDisplayInRow:column:",
-       "_setNeedsDisplayLaterHack",
        "_setNeedsHighlightedTextHint:",
        "_setNeedsModeConfiguration:",
        "_setNeedsModeConfiguration:itemViewers:",
+       "_setNeedsRecalc",
        "_setNeedsRedrawBeforeFirstLiveResizeCache:",
-       "_setNeedsTiling:",
-       "_setNeedsToReloadCoveredChars:",
+       "_setNeedsStateUpdate:",
+       "_setNeedsTiling",
        "_setNeedsToRemoveFieldEditor:",
        "_setNeedsToResetDragMargins:",
        "_setNeedsToUseHeartBeatWindow:",
        "_setNeedsViewerLayout:",
        "_setNeedsViewerLayout:itemViewers:",
        "_setNeedsZoom:",
-       "_setNetPathsDisabled:",
        "_setNewPreferedColumnWidth:",
        "_setNextKeyBindingManager:",
        "_setNextKeyViewFor:toNextKeyView:",
        "_setNextSizeAndDisplayMode",
-       "_setNextToolbarDisplayMode:",
        "_setNextToolbarSizeAndDisplayMode:",
-       "_setNextToolbarSizeMode:",
        "_setNoVerticalAutosizing:",
        "_setNonactivatingPanel:",
        "_setNumVisibleColumns:",
@@ -4250,275 +5418,328 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_setObject:forProperty:usingDataSize:",
        "_setObject:ifNoAttributeForKey:",
        "_setObject:inReceiver:",
-       "_setObjectClassName:",
        "_setObjectHandler:",
+       "_setObjectID:",
+       "_setObjects:",
        "_setOneShotIsDelayed:",
        "_setOpenRecentMenu:",
+       "_setOptions:forBinding:",
+       "_setOptions:withBindingInfo:",
        "_setOrderDependency:",
        "_setOrientation:inPageFormat:",
+       "_setOriginalFileInfoFromFileAttributes:",
+       "_setOriginalSnapshot:",
+       "_setOriginalString:range:",
+       "_setOverflowHeaderCellPrototype:",
        "_setOverrideEncoding:",
        "_setOwnedByPopUp:",
-       "_setOwnsRealWindow:",
+       "_setPM:",
        "_setPageFormat:",
        "_setPageGenerationOrder:",
        "_setPaperName:inPrintSession:pageFormat:",
        "_setPaperSize:inPrintSession:inPageFormat:",
        "_setParameter:forOption:withBindingInfo:",
+       "_setParent:",
        "_setParentWindow:",
+       "_setParserError:",
        "_setPartialKeysWithTableBinder:forAllTableColumnBindersOfTableView:",
        "_setPartialKeysWithTableBinder:forTableColumnBinder:",
+       "_setPeerCertificateChain:",
+       "_setPendingDeletion:",
+       "_setPendingInsertion:",
+       "_setPendingUpdate:",
+       "_setPersistentStore:",
+       "_setPlaceholderAttributedString:",
+       "_setPlaceholderString:",
        "_setPolicyDataSource:",
        "_setPostsFocusChangedNotifications:",
+       "_setPrefix:",
        "_setPressedTabViewItem:",
        "_setPreventsActivation:",
        "_setPreviewFont:",
-       "_setPreviousCurrentDirectoryNode:",
        "_setPreviousNibBindingConnector:",
-       "_setPreviousRootNode:",
        "_setPreviousSizeAndDisplayMode",
        "_setPreviousToolbarSizeAndDisplayMode:",
-       "_setPrimaryIdentifier:",
        "_setPrimaryLoadComplete:",
+       "_setPrimitiveValue:forKey:",
+       "_setPrintEventRetrofitInfo:",
        "_setPrintSettings:",
        "_setPrinter:inPrintSession:",
-       "_setPrinting:pageWidth:",
+       "_setPrinting:minimumPageWidth:maximumPageWidth:adjustViewSize:",
        "_setProperty:forKey:",
        "_setProvisionalDataSource:",
-       "_setPullsDown:",
        "_setRTFDFileWrapper:",
+       "_setReadOnly:",
+       "_setRealDelegate:",
        "_setRealTitle:",
        "_setRealm:forURL:",
        "_setReceiveHandlerRef:",
-       "_setRecents",
-       "_setRecordsBinderChanges:",
+       "_setRecents:",
        "_setRegisteredForChildNotifications:",
+       "_setRegistryAttributes:",
        "_setRelativeOrdering:",
        "_setReorderResizeImageCache:",
        "_setRepresentation:",
        "_setRepresentationListCache:",
        "_setRepresentedFilename:",
        "_setRequest:",
+       "_setResizeControlNeedsDisplay",
        "_setResizeWeighting:",
        "_setResourceForkReferenceNumber:",
        "_setResponse:",
+       "_setRevealoversDirty:",
+       "_setRootNode:makeHistory:notify:",
        "_setRotatedFromBase:",
        "_setRotatedOrScaledFromBase:",
-       "_setRotation:forGlyphAtIndex:",
+       "_setRowHeaderTableColumn:",
+       "_setRowHeaderTableColumn:repositionTableColumnIfNecessary:",
+       "_setSQLType:",
        "_setScaleFactor:",
+       "_setScriptErrorExpectedType:",
        "_setScriptErrorFromKVCException:",
+       "_setScriptErrorOffendingObjectDescriptor:",
        "_setScroller:",
-       "_setScrollerSize:",
        "_setSelectedCell:",
        "_setSelectedCell:atRow:column:",
-       "_setSelectedMember:withHistory:",
-       "_setSelectedMembers:withHistory:",
-       "_setSelectionFromPasteboard:",
-       "_setSelectionIndexes:",
-       "_setSelectionNeedsRefresh",
+       "_setSelectedNodes:",
+       "_setSelectedScopeLocationNodes:",
        "_setSelectionRange::",
-       "_setSelectionString:",
        "_setSelectorName:",
+       "_setServerModificationDateString:",
        "_setShadowParameters",
-       "_setSharedDocumentController:",
+       "_setShadowStyle:",
+       "_setSharedIdentifier:",
        "_setSheet:",
-       "_setShouldCreateRenderers:",
        "_setShouldPostEventNotifications:",
        "_setShowAlpha:andForce:",
        "_setShowOpaqueGrowBox:",
-       "_setShowPrintPanel:",
-       "_setShowProgressPanel:",
+       "_setShowOpaqueGrowBoxForOwner:",
        "_setShowingModalFrame:",
        "_setShowsAllDrawing:",
        "_setSidebarVolumesNode:favoritesNode:",
        "_setSidebarWidth:maintainSnap:constrain:",
+       "_setSingleChild:",
        "_setSingleValue:forKey:",
        "_setSingleValue:forKeyPath:",
-       "_setSortable:showSortIndicator:ascending:priority:",
-       "_setSound:",
-       "_setSpecialPurposeType:",
+       "_setSlotIfDefault:",
+       "_setSortable:showSortIndicator:ascending:priority:highlightForSort:",
+       "_setSpotlightedAttachment:",
        "_setStartSubelementFromDescriptor:",
        "_setState:",
-       "_setStatesImmediatelyInObject:index:triggerRedisplay:",
+       "_setStatesImmediatelyInObject:mode:triggerRedisplay:",
        "_setStoredInPageCache:",
        "_setStringValue:forKey:",
        "_setSubmenu:",
-       "_setSuiteName:forAppleEventCode:",
+       "_setSuperentity:",
        "_setSuperview:",
-       "_setSuppressAutoenabling:",
        "_setSurface:",
-       "_setSweeperInterval:",
-       "_setSynonymTable:inSuite:",
        "_setTabRect:",
        "_setTabState:",
        "_setTabView:",
        "_setTarget:",
        "_setTargetProcess:",
-       "_setTempHidden:",
        "_setTextAttributeParaStyleNeedsRecalc",
+       "_setTextColorInObject:mode:compareDirectly:toTextColor:",
+       "_setTextContainer:",
        "_setTextFieldStringValue:",
-       "_setTextShadow:",
        "_setTexturedBackground:",
-       "_setThousandSeparatorNoConsistencyCheck:",
        "_setThumbnailView:",
        "_setTitle:",
        "_setTitle:ofColumn:",
        "_setTitleFixedPointWindowFrame:display:animate:",
        "_setTitleNeedsDisplay",
+       "_setToOneSlot:objectID:",
+       "_setTokenFieldDelegate:",
+       "_setToolTip:",
        "_setToolTip:forView:cell:rect:owner:ownerIsDisplayDelegate:userData:",
        "_setToolbar:",
+       "_setToolbarItem:",
        "_setToolbarShowHideResizeWeightingOptimizationOn:",
        "_setToolbarView:",
        "_setToolbarViewWindow:",
        "_setTopLevelFrameName:",
        "_setTrackingHandlerRef:",
-       "_setTrackingRect:inside:owner:userData:",
+       "_setTrackingRect:inside:owner:userData:useTrackingNum:",
+       "_setTrackingRect:inside:owner:userData:useTrackingNum:install:",
        "_setTrackingRects",
+       "_setTrackingRects:insideList:owner:userDataList:trackingNums:count:",
        "_setTriggeringAction:",
        "_setUIConstraints:",
+       "_setURI:",
        "_setURL:",
-       "_setUndoMenuitemAction:target:title:",
-       "_setUpAccessoryViewWithEditorTypes:exportableTypes:selectedType:enableExportable:",
+       "_setUndoRedoInProgress:",
+       "_setUnicodeInputEventReceived:",
        "_setUpAppKitCoercions",
        "_setUpAppKitTranslations",
        "_setUpDefaultTopLevelObject",
        "_setUpFoundationCoercions",
        "_setUpFoundationTranslations",
        "_setUpOperation:helpedBy:",
-       "_setUpPlatformLineLayoutContext:forGlyphRange:isParagraph:",
        "_setUpTextField:",
-       "_setUpdated:",
+       "_setUseCellFieldEditorUndo:",
        "_setUseModalAppearance:",
-       "_setUseSimpleTrackingMode:",
-       "_setUsesFastJavaBundleSetup:",
        "_setUsesQuickdraw:",
-       "_setUsesSmallTitleFont:",
-       "_setUsesToolTipsWhenTruncated:",
        "_setUtilityWindow:",
        "_setValidatedPosixName:",
-       "_setValue:forKeyPath:ofObject:atIndex:validateImmediately:raisesForNotApplicableKeys:error:",
+       "_setValue:forBinding:errorFallbackMessage:",
+       "_setValue:forKey:",
+       "_setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:",
        "_setValue:forKeyPath:ofObjectAtIndex:",
-       "_setVerticallyCentered:",
+       "_setValue:forKeyPath:ofObjectAtIndexPath:",
+       "_setValue:type:forParameter:",
+       "_setValueWithSelector:",
+       "_setVerticalScrollerHidden:",
        "_setVisible:",
        "_setVisibleInCache:forWindow:",
        "_setVisibleRectOfColumns:",
        "_setWaitingForCallback:",
-       "_setWantsCellClipTips:",
+       "_setWantsHideOnDeactivate:",
        "_setWantsKeyboardLoop:",
+       "_setWantsRevealovers:",
        "_setWantsToActivate:",
        "_setWantsToBeOnMainScreen:",
        "_setWantsToDestroyRealWindow:",
        "_setWantsToolbarContextMenu:",
        "_setWebFrame:",
        "_setWebView:",
-       "_setWin32MouseActivationInProgress:",
+       "_setWidth:",
        "_setWindow:",
        "_setWindowContextForCurrentThread:",
        "_setWindowDepth:",
        "_setWindowFrameForPopUpAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:",
        "_setWindowNumber:",
        "_setWindowTag",
+       "_setWindowsNeedUpdateForSecondaryThread:",
        "_setWithOffset:",
        "_setWords:inDictionary:",
-       "_setWriteIndexPath:",
        "_setWritesCancelled:",
        "_settings",
        "_setup",
-       "_setupBidiSettingsInGlyphVector:",
+       "_setupAnimationInfo",
        "_setupBoundsForLineFragment:",
        "_setupButtonImageAndToolTips",
-       "_setupCallbacks",
-       "_setupDefaultTextViewContent",
-       "_setupFileModeButtons",
-       "_setupHistoryButtons",
+       "_setupCallbacksSavingToFile:",
+       "_setupFileListModeControl",
+       "_setupFont",
+       "_setupForWindow:",
+       "_setupHistoryControl",
        "_setupIdle",
-       "_setupMessagePort",
        "_setupOpenPanel",
+       "_setupProfileUI",
        "_setupRootForPrinting:",
        "_setupRunLoopTimer",
+       "_setupSearchParts",
        "_setupSegmentSwitchForControl:firstImage:secondImage:action:",
        "_setupSurfaceAndStartSpinning:",
-       "_setupToolTipsForView:",
        "_setupToolbar",
        "_setupUI",
        "_setupWindow",
+       "_shadowAsString:",
        "_shadowFlags",
-       "_shadowTabColorAtIndex:",
        "_shadowType",
        "_shapeMenuPanel",
-       "_sharedData",
+       "_sharedFieldEditor",
        "_sharedSecureFieldEditor",
+       "_sharedSecureFieldEditorCreate",
        "_sharedTextCell",
        "_sharedWebFormDelegate",
        "_sheetDidDismiss:returnCode:contextInfo:",
        "_sheetDidEnd:returnCode:contextInfo:",
        "_sheetDidEndShouldDelete:returnCode:contextInfo:",
+       "_sheetEffect",
+       "_sheetEffectInset",
        "_sheetHeightAdjustment",
+       "_shiftBucketDataFromIndex:by:insertionData:",
        "_shiftDown::::",
        "_shortNameFor:",
        "_shouldAbortMouseDownAfterDragAttempt:",
+       "_shouldAddObservationForwarders",
+       "_shouldAddObservationForwardersForKey:",
        "_shouldAllowAutoCollapseItemsDuringDragsDefault",
        "_shouldAllowAutoExpandItemsDuringDragsDefault",
        "_shouldAlwaysUpdateDisplayValue",
+       "_shouldAnimateColumnScrolling",
        "_shouldAttemptDroppingAsChildOfLeafItems",
        "_shouldAttemptIdleTimeDisposeOfLiveResizeCacheWithFrame:",
        "_shouldAttemptOriginLoad",
        "_shouldAutoscrollForDraggingInfo:",
+       "_shouldBeRolloverTracking",
        "_shouldBeTreatedAsInkEventInInactiveWindow:",
+       "_shouldBeginEditingInDOMRange:",
        "_shouldCoalesceTypingForText::",
+       "_shouldComputeRevealovers",
        "_shouldContinueExpandAtLevel:beganAtLevel:",
-       "_shouldCreateRenderers",
+       "_shouldDeleteRange:",
        "_shouldDispatch:invocation:sequence:coder:",
-       "_shouldDisplayNodeInList:",
+       "_shouldDrawBorder",
        "_shouldDrawFocus",
+       "_shouldDrawFocusIfInKeyWindow",
        "_shouldDrawRightSeparatorInView:",
        "_shouldDrawSelectionIndicator",
+       "_shouldDrawSelectionIndicatorForItem:",
        "_shouldDrawTwoBitGray",
+       "_shouldEndEditingInDOMRange:",
+       "_shouldExecuteDelayedAutocomplete",
        "_shouldForceShiftModifierWithKeyEquivalent:",
+       "_shouldHandleAsGotoForTypedString:",
        "_shouldHaveBlinkTimer",
        "_shouldHaveResizeCursorAtPoint:",
-       "_shouldInsertHyphenGlyph:atIndex:",
+       "_shouldHeaderShowSeparatorForColumn:",
+       "_shouldInsertFragment:replacingDOMRange:givenAction:",
        "_shouldInstallToolTip:",
        "_shouldLiveResizeUseCachedImage",
        "_shouldPostEventNotifications",
        "_shouldPowerOff",
        "_shouldReloadForCurrent:andDestination:",
+       "_shouldReloadToHandleUnreachableURLFromRequest:",
+       "_shouldReplaceSelectionWithText:givenAction:",
        "_shouldRepresentFilename",
        "_shouldRequireAutoCollapseOutlineAfterDropsDefault",
+       "_shouldRestartMovementTracking",
+       "_shouldSelectTabViewItem:",
        "_shouldSetHighlightToFlag:",
+       "_shouldShowFirstResponderAtRow:column:ignoringWindowKeyState:",
        "_shouldShowFirstResponderForCell:",
        "_shouldShowFocusRing",
+       "_shouldShowFocusRingInView:",
        "_shouldShowNode:",
+       "_shouldShowRollovers",
        "_shouldStealHitTestForCurrentEvent",
+       "_shouldStretchWindowIfNecessaryForUserColumnResize",
        "_shouldTerminate",
        "_shouldTerminateWithDelegate:shouldTerminateSelector:",
+       "_shouldTrack",
        "_shouldTransformMatrix",
        "_shouldTreatURLAsSameAsCurrent:",
        "_shouldUseAliasToLocate:",
+       "_shouldUseParensWithDescription",
        "_shouldUseSecondaryHighlightColor",
+       "_shouldValidateMenuFormRepresentation",
        "_show:",
-       "_showAs",
        "_showBorder",
        "_showDragError:forFilename:",
        "_showDrawRect:",
-       "_showDropShadow",
-       "_showField:",
-       "_showField:identifier:",
+       "_showEffects",
        "_showHideToolbar:resizeWindow:animate:",
        "_showKeyboardUILoop",
+       "_showLanguagePopUp",
        "_showOpaqueGrowBox",
        "_showOpenHandCursor:",
-       "_showTextColorImmediatelyInObject:index:",
+       "_showQueryProgress",
+       "_showTextColorImmediatelyInObject:mode:",
        "_showToolTip",
        "_showToolTip:",
        "_showToolbar:animate:",
        "_showToolbarWithAnimation:",
        "_showingFocusRingAroundEnclosingScrollView:",
        "_showsAllDrawing",
+       "_showsDontWarnAgain",
        "_showsNode:",
-       "_shutDrawer",
-       "_sidebar",
+       "_sideTitlebarWidth",
+       "_sideTitlebarWidth:",
        "_sidebarView",
        "_signatureValid",
+       "_simpleCompletePathWithPrefix:intoString:caseSensitive:matchesIntoArray:filterTypes:",
        "_simpleDeleteGlyphsInRange:",
        "_simpleDescription",
        "_simpleInsertGlyph:atGlyphIndex:characterIndex:elastic:",
@@ -4527,59 +5748,70 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_singleMutableArrayValueForKey:",
        "_singleMutableArrayValueForKeyPath:",
        "_singleValueForKey:",
-       "_singleValueForKey:operationKey:",
        "_singleValueForKeyPath:",
-       "_singleValueForKeyPath:operationKey:",
+       "_singleValueForKeyPath:operationType:",
        "_size",
-       "_sizeAllDrawers",
        "_sizeAllDrawersWithRect:",
+       "_sizeChanged",
        "_sizeDocumentViewToColumnsAndAlignIfNecessary:",
        "_sizeDownIfPossible",
-       "_sizeEditDone:",
+       "_sizeHeightBucket:withSize:toFitSize:",
        "_sizeHorizontallyToFit",
-       "_sizeLastColumnToFitIfNecessary",
        "_sizeListChanged:",
        "_sizeMatrixOfColumnToFit:",
        "_sizeModeIsValidForCurrentDisplayMode:",
        "_sizeOfTitlebarFileButton",
+       "_sizeRowHeaderToFitIfNecessary",
+       "_sizeTableColumnsToFitForAutoresizingWithStyle:",
+       "_sizeTableColumnsToFitForColumnResizeWithStyle:",
+       "_sizeTableColumnsToFitWithStyle:",
+       "_sizeTableColumnsToFitWithStyle:forceExactFitIfPossible:",
        "_sizeToFit:",
        "_sizeToFitColumn:withEvent:",
        "_sizeToFitColumn:withSizeToFitType:",
        "_sizeToFitColumnMenuAction:",
-       "_sizeToFitIfNecessary",
-       "_sizeToFitText",
+       "_sizeToFitForUserColumnResize",
        "_sizeVerticalyToFit",
        "_sizeWindowForPicker:",
        "_sizeWithRect:",
        "_sizeWithSize:",
-       "_sizeWithSize:attributes:",
-       "_slideWithDelta:beginOperation:endOperation:",
+       "_sizeWithSize:attributedString:",
+       "_smallCapsFont",
+       "_smallCapsRenderer",
        "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:",
-       "_smallestEncodingInCFStringEncoding",
        "_snapPositionConstrainedResizeSplitView:",
        "_snapSplitPosition:forItem:snapIndex:",
        "_sniffForContentType",
        "_sortCollections",
        "_sortDescriptors",
-       "_sortLabelsUsing:",
        "_sortNodes:",
+       "_sortObjects:",
        "_sortOrderAutoSaveNameWithPrefix",
-       "_sound",
+       "_sortedAETEElementClassDescriptions:",
+       "_sortedAETEPropertyDescriptions:",
+       "_sortedEdges",
+       "_spanClassForAttributes:inParagraphClass:spanClass:flags:",
        "_speakingString",
-       "_specialControlView",
-       "_specialPurposeType",
        "_specialServicesMenuUpdate",
-       "_specifierTestFromDescriptor:inCommandConstructionContext:",
+       "_specifiedStyleForElement:",
+       "_specifierTestFromDescriptor:",
        "_spellServers",
        "_spellingGuessesForRange:",
        "_spellingSelectionRangeForProposedRange:",
+       "_spotlightedAttachment",
+       "_sqlCore",
+       "_sqlTypeForAttributeDescription:",
        "_standardCommonMenuFormRepresentationClicked:",
        "_standardCustomMenuFormRepresentationClicked:",
        "_standardFrame",
+       "_standardFrameForDrawersInRect:",
        "_startAnimation",
        "_startAnimationWithThread:",
        "_startAutoExpandingItemFlash",
+       "_startAutoscrollTimer:",
+       "_startBatchWindowAccumulation:",
        "_startChanging",
+       "_startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:",
        "_startDraggingUpdates",
        "_startDrawingThread:",
        "_startHeartBeating",
@@ -4590,18 +5822,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_startLiveResizeAsTopLevel",
        "_startLiveResizeCacheOK:",
        "_startLiveResizeForAllDrawers",
+       "_startLoadWithRequest:delegate:",
        "_startLoading",
        "_startLoading:",
        "_startMove",
+       "_startObservingModelObject:",
+       "_startObservingSelectionIfNecessary",
+       "_startObservingUndoManagerNotifications",
+       "_startOrContinueAnimationIfNecessary",
        "_startRunMethod",
        "_startRunWithDuration:firingInterval:",
-       "_startSearch",
+       "_startRunningNonBlocking",
+       "_startSQL:",
        "_startSheet",
        "_startSound",
+       "_startTable",
+       "_startTableCell",
        "_startTearingOffWithScreenPoint:",
        "_startTimer:",
+       "_startingWindowForSendAction:",
        "_startingWithDocument:continueSavingAndClosingAll:contextInfo:",
-       "_startupThread",
        "_stashCollapsedOrigin:",
        "_stashOrigin:",
        "_stashedOrigin",
@@ -4609,27 +5849,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_stateMarkerForValue:",
        "_statusItemWithLength:withPriority:",
        "_stepInUpDirection:",
+       "_stepperCell",
+       "_stepperCellValueChanged:",
        "_stopAnimation",
+       "_stopAnimation:",
        "_stopAnimationWithWait:",
        "_stopAutoExpandingItemFlash",
+       "_stopAutoscrollTimer",
        "_stopDraggingUpdates",
+       "_stopGotoWithCode:",
        "_stopLoading",
        "_stopLoadingInternal",
        "_stopLoadingWithError:",
        "_stopModal:",
-       "_stopObservingValue:andStartObservingValue:ofObject:",
+       "_stopObservingModelObject:",
+       "_stopObservingSelectionIfNecessary",
+       "_stopObservingUndoManagerNotifications",
        "_stopPeriodicEventsForSource:",
        "_stopRun",
        "_stopSearchTimer",
        "_stopTearingOff",
        "_stopTimerIfRunningForToolTip:",
+       "_stopsValidationAfterFirstError:",
+       "_storeClassForStoreType:",
        "_storeCurrentDirectory",
        "_storeExpandedFrameSize",
        "_storeExpandedState",
        "_storeFileListMode",
+       "_storeMetadataForSaving",
+       "_storeNewColorInColorWell:",
+       "_storeOrderedByFileProperty:orderedAscending:",
        "_storeRootDirectory",
+       "_storeTypeForStore:",
        "_storeUserSetHideExtensionButtonState",
-       "_storedInPageCache",
+       "_storeZone",
+       "_stretchWindowIfNecessaryToFitResizedColumnWithInfo:resizeColumnDelta:",
+       "_string:objectValueTokenRangeForIndex:",
+       "_string:tokenRangeForIndex:",
+       "_string:tokenizeIndex:inTextStorage:",
        "_stringByReplacingChar:withChar:inString:",
        "_stringByResolvingSymlinksInPathUsingCache:",
        "_stringByStandardizingPathUsingCache:",
@@ -4637,64 +5894,98 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_stringByTranslatingFSSpecDescriptor:toType:inSuite:",
        "_stringByTranslatingTextDescriptor:toType:inSuite:",
        "_stringByTrimmingLeadingDot",
+       "_stringForDatePickerElement:",
        "_stringForEditing",
+       "_stringForNode:property:",
        "_stringRepresentation",
        "_stringSearchParametersForListingViews",
        "_stringToWrite",
        "_stringValueForKey:",
        "_stringWithData:",
+       "_stringWithDocumentTypeStringAndMarkupString:",
        "_stringWithSavedFrame",
-       "_stringWithSeparator:atFrequency:",
        "_stripAttachmentCharactersFromAttributedString:",
        "_stripAttachmentCharactersFromString:",
+       "_styleDeclarationImpl",
+       "_styleDeclarationWithImpl:",
+       "_styleElementImpl",
+       "_styleForAttributeChange:",
+       "_styleFromColorPanelWithSelector:",
+       "_styleFromFontAttributes:",
+       "_styleFromFontManagerOperation",
+       "_styleRuleImpl",
+       "_styleSheetListImpl",
+       "_styleSheetListWithImpl:",
        "_subImageFocus",
+       "_subclassDescriptionsForDescription:",
        "_subclassManagesData",
-       "_subrowEqualing:inArray:",
+       "_subentitiesIncludes:",
+       "_subentityNamed:",
+       "_subpredicateDescription:",
+       "_subresourceURLs",
        "_subsetDescription",
-       "_substituteFontName:flag:",
-       "_substituteGlyphWithPlatformGlyphArray:length:glyphFlushCheck:",
+       "_substituteEntityAndProperty:inString:",
+       "_substituteFontForCharacters:length:families:",
+       "_substituteFontForString:families:",
+       "_subtextStorageFromRange:",
        "_subtractColor:",
+       "_subtreeDescriptionWithDepth:",
        "_subviews",
+       "_subviewsExcludingHiddenViews",
        "_suggestCompletionsForPartialWordRange:inString:language:",
        "_suggestGuessesForWord:inLanguage:",
-       "_suiteNameForAppleEventCode:",
-       "_summationRectForFont",
+       "_suggestedControllerKeyForController:binding:",
+       "_suiteDescriptions",
+       "_suiteDescriptionsByName",
+       "_sumForKeyPath:",
        "_superviewClipViewFrameChanged:",
-       "_supportsCertificatePolicy:",
+       "_supportedMIMETypes",
+       "_supportsGetValueWithNameForKey:perhapsByOverridingClass:",
+       "_supportsGetValueWithUniqueIDForKey:perhapsByOverridingClass:",
        "_supportsMinAndMax",
+       "_supportsVariableHeightRows",
        "_supposedNumberOfItems",
+       "_suppressNotification",
+       "_suppressNotification:",
        "_surface",
        "_surfaceBounds",
        "_surfaceDidComeBack:",
        "_surfaceNeedsUpdate:",
        "_surfaceWillGoAway:",
-       "_surrogateFontName:",
-       "_surroundValueInString:withLength:andBuffer:",
-       "_swap",
-       "_swapName",
+       "_suspendIfTopHandling:",
+       "_suspendLoading",
+       "_swapFileListKeyViewFrom:to:",
        "_sweeperInterval",
-       "_switchImage",
        "_switchImage:andUpdateColor:",
        "_switchInitialFirstResponder:lastKeyView:forTabViewItem:",
        "_switchTabViewItem:oldView:withTabViewItem:newView:initialFirstResponder:lastKeyView:",
+       "_switchToAppropriateModeForColorIfNecessary:",
        "_switchToPicker:",
        "_switchToPlatformInput:",
        "_switchViewForToolbarItem:",
        "_syncAllExpandedNodes",
+       "_syncCookies:",
        "_syncItemSet",
+       "_syncItemSetAndUpdateItemViewersWithSEL:setNeedsModeConfiguration:sizeToFit:setNeedsDisplay:updateKeyLoop:",
        "_syncLoop:",
+       "_syncScopeButtons",
+       "_syncScopeLayout",
        "_syncScrollerSizeOfColumn:",
        "_syncSwatchSizeToSavedNumVisibleRows",
+       "_syncToChangedToolbar:itemInserted:",
+       "_syncToChangedToolbar:itemMoved:",
+       "_syncToChangedToolbar:itemRemoved:",
+       "_syncToChangedToolbar:toolbarItemUserVisibilityPriorityChanged:",
+       "_syncToChangedToolbar:toolbarModeChanged:",
+       "_syncToChangedToolbar:toolbarReplacedAllItems:",
+       "_syncToolbarItemUserVisibilityPriorityToValues:",
        "_syncToolbarPosition",
-       "_syncWithRemoteBuddies",
+       "_synchronizeExpandedNodesWithOutlineExpandedItems",
        "_synchronizeTextView:",
        "_synchronizeTitlesAndColumnsViewVisibleRect",
        "_synchronizeTitlesAndColumnsViewWidth",
        "_synchronizeWindowTitles",
        "_synchronizeWithPeerBindersInArray:",
-       "_synonymTableInSuite:",
-       "_synonymTerminologyDictionaryForCode:inSuite:",
-       "_synonymsInSuite:",
        "_systemColorChanged:",
        "_systemColorsChanged:",
        "_tabHeight",
@@ -4703,16 +5994,30 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_tabRectAdjustedForOverlap:",
        "_tabRectForTabViewItem:",
        "_tabViewWillRemoveFromSuperview",
-       "_table",
        "_tableBinderForTableView:",
-       "_tableColumnSizeChanged:",
+       "_tableBinderForTableViewSupportsSorting:",
+       "_tableCaptionElementImpl",
+       "_tableCaptionElementWithImpl:",
+       "_tableCellElementImpl",
+       "_tableCellElementWithImpl:",
+       "_tableColElementImpl",
+       "_tableElementImpl",
+       "_tableElementWithImpl:",
+       "_tableRowElementImpl",
+       "_tableSectionElementImpl",
+       "_tableSectionElementWithImpl:",
+       "_tableView:willAddTableColumn:",
+       "_tableView:willRemoveTableColumn:",
        "_takeApplicationMenuIfNeeded:",
        "_takeColorFrom:andSendAction:",
        "_takeColorFromAndSendActionIfContinuous:",
        "_takeColorFromDoAction:",
-       "_takeDownConverterPort",
        "_takeFocus",
+       "_takeValuesFromTextBlock:",
        "_target",
+       "_targetAndArgumentsAcceptableForMode:",
+       "_targetBinding",
+       "_targetBindingBound",
        "_taskNowMultiThreaded:",
        "_tempHide:relWin:",
        "_tempHideHODWindow",
@@ -4723,59 +6028,62 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_temporaryFilename:",
        "_termOneShotWindow",
        "_termWindowIfOwner",
+       "_termedDescriptionWithTabCount:propertyKindName:",
        "_terminate",
        "_terminate:",
        "_terminateSendShould:",
-       "_terminologyDictionaryForToOneRelationship:",
-       "_terminologyRegistry",
-       "_terminologyRegistryForSuite:",
-       "_testBinderConfiguration:repairBindings:",
+       "_testPartUsingDestinationFloatValue:",
        "_testWithComparisonOperator:object1:object2:",
+       "_textAreaElementImpl",
        "_textAttributes",
+       "_textColorWithMode:",
        "_textDidEndEditing:",
        "_textDimColor",
+       "_textFieldWithStepperCellSize",
+       "_textFieldWithStepperKeyDown:inRect:ofView:",
+       "_textFieldWithStepperTrackMouse:inRect:ofView:untilMouseUp:",
        "_textHighlightColor",
-       "_textLength",
+       "_textImpl",
        "_textSizeMultiplierChanged",
+       "_textSizeMultiplierFromWebView",
+       "_textTransform",
        "_textViewOwnsTextStorage",
        "_textureImage",
        "_texturePattern",
+       "_theMap",
        "_themeContentRect",
        "_themeTabAndBarArea",
-       "_thousandChar",
        "_threadContext",
-       "_threadedImportTipCards",
-       "_threadedSave:",
-       "_thumbnailView",
-       "_tightenGlyphVector:delta:maxWidth:",
+       "_throwIfNotEditable",
+       "_tidyWithData:error:isXML:",
+       "_tile",
        "_tile:",
+       "_tileAndRedisplayAll",
        "_tileContinuousScrollingBrowser",
        "_tileNonContinuousScrollingBrowser",
-       "_tileTitlebar",
+       "_tileTitlebarAndRedisplay:",
        "_timeOfLastCompletedLoad",
-       "_timeRemaining",
        "_timedAdjustTextControl:",
-       "_timedLayout:",
        "_timestamp",
        "_title",
-       "_title:",
        "_titleCellHeight",
        "_titleCellHeight:",
        "_titleCellOfColumn:",
        "_titleCellSize",
        "_titleCellSizeForTitle:styleMask:",
-       "_titleIsRepresentedFilename",
+       "_titleElementImpl",
        "_titleRectForCellFrame:",
        "_titleRectForTabViewItem:",
        "_titleSizeWithSize:",
-       "_titleWidth",
        "_titlebarHeight",
        "_titlebarHeight:",
        "_titlebarTitleRect",
-       "_tmpPasteboardWithCFPasteboard:",
-       "_toOneRelationshipTerminologyKeys",
+       "_toManyInformation",
+       "_toOneRange",
+       "_toggleBold",
        "_toggleCollapsedSplitView",
        "_toggleFrameAutosaveEnabled:",
+       "_toggleItalic",
        "_toggleLogging",
        "_toggleOrderedFrontMost:",
        "_toggleOrderedFrontMostWillOrderOut",
@@ -4783,43 +6091,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_toggleShown:",
        "_toggleToolbarConfigPanel:",
        "_toggleTypographyPanel",
+       "_toggleUserVisibilityPriority:",
+       "_tokenAttachmentDisplayAttributeDidChange",
+       "_tokenAttachmentForString:",
+       "_tokenizeDirtyTokens",
+       "_tokensFromCharacterRange:inAttributedString:includePlainText:includeAttachments:asRepresentedObjects:",
+       "_tokensFromPasteboard:",
+       "_toolTipManagerWillRecomputeToolTipsByRemoving:adding:",
+       "_toolTipRectForCell:withFrame:",
        "_toolTipTimer",
        "_toolbar",
        "_toolbarAttributesChanged:",
+       "_toolbarAuxiliary:",
        "_toolbarBackgroundColor",
        "_toolbarButtonIsClickable",
        "_toolbarButtonOrigin",
        "_toolbarCommonBeginInit",
        "_toolbarCommonFinishInit",
-       "_toolbarContentsAttributesChanged:",
-       "_toolbarContentsChanged:",
        "_toolbarFrameSizeChanged:oldSize:",
-       "_toolbarInsertedNewItemNotification:",
        "_toolbarIsHidden",
        "_toolbarIsInTransition",
        "_toolbarIsShown",
        "_toolbarItemCommonInit",
-       "_toolbarLabelFontOfSize:",
-       "_toolbarLabelFontSize",
-       "_toolbarModeChangedNotification:",
-       "_toolbarMovedItemNotification:",
        "_toolbarPatternPhase",
        "_toolbarPillButtonClicked:",
        "_toolbarRegisterForNotifications",
-       "_toolbarRemovedItemNotification:",
-       "_toolbarReplacedAllItemsNotification:",
-       "_toolbarSmallLabelFontSize",
        "_toolbarUnregisterForNotifications",
        "_toolbarView",
        "_toolbarViewCommonInit",
-       "_toolbarWillDeallocNotification:",
        "_tooltipForColorPicker:",
+       "_tooltipStringForCell:column:row:point:trackingRect:",
+       "_topContainerView",
        "_topCornerSize",
        "_topHandling",
        "_topLeftResizeCursor",
        "_topMenuView",
        "_topRightResizeCursor",
        "_topmostChild",
+       "_totalAdvancementForNativeGlyphs:count:",
        "_totalHeightOfTableView",
        "_totalMinimumTabsLengthWithOverlap:",
        "_totalNominalTabsLengthWithOverlap:",
@@ -4827,125 +6136,165 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_trackAndModifySelectionWithEvent:onColumn:stopOnReorderGesture:",
        "_trackAttachmentClick:characterIndex:glyphIndex:attachmentCell:",
        "_trackButton:forEvent:inRect:ofView:",
-       "_trackMenuSelection",
-       "_trackMenuSelectionInMatrix:",
        "_trackMouse:",
-       "_trackMouseDownInWindow:withSelectedItem:",
+       "_trackSelectedItemMenu",
        "_trackingHandlerRef",
+       "_trackingSegment",
+       "_transferCache:",
        "_transferWindowOwnership",
+       "_transform",
+       "_transformDstRect:clipRect:",
        "_transformerRegistry",
        "_transitionToCommitted:",
        "_transitionToLayoutAcceptable",
        "_transparency",
+       "_transparentBackground",
+       "_trapezoidForRun:style:atPoint:",
        "_trashContainsOrIs:",
+       "_traverseLibXML2Node:depth:",
+       "_traverseNode:depth:",
        "_traverseToSubmenu",
        "_traverseToSupermenu",
        "_treeHasDragTypes",
-       "_triggerRefreshAtEndOfEvent",
+       "_treeWalkerImpl",
+       "_treeWalkerWithImpl:filter:",
        "_triggeringAction",
        "_trimRecentSearchList",
        "_trimWithCharacterSet:",
-       "_trueName",
        "_truncateToSizeLimit:",
        "_tryChallenge:",
+       "_tryCookieLookup:path:secure:result:",
        "_tryDrop:dropItem:dropChildIndex:",
        "_tryDrop:dropRow:dropOperation:",
        "_tryToSendDoubleAction",
-       "_turnOffVerticalScroller",
-       "_turnOnVerticalScroller",
+       "_tryUserDrillIntoHighlightedNode",
+       "_tryUserMoveToParentNode",
        "_type",
-       "_typeAhead:",
+       "_typeDescription",
+       "_typeDescriptionForName:",
+       "_typeDescriptionForName:suiteName:isValid:",
+       "_typeDescriptionsFromEnumerationImplDeclarations:presoDeclarations:valueTypeDeclarations:",
        "_typeDictForType:",
-       "_typeOfPrintFilter:",
+       "_typeIdentifierFromCarbonCode:",
+       "_typeIdentifierFromCocoaName:",
        "_types",
        "_typesForDocumentClass:includeEditors:includeViewers:includeExportable:",
+       "_typesIncludingConversionsFromTypes:",
        "_typesetterBehavior",
-       "_typesetterIsBusy",
-       "_uiClearField:",
+       "_typographicLeading",
+       "_typographyPanel",
+       "_uListElementImpl",
        "_umask",
        "_unbind:existingNibConnectors:connectorsToRemove:connectorsToAdd:",
+       "_uncachedRectHeightOfRow:",
        "_uncachedSize",
        "_under",
        "_underlineIsOn",
        "_underlineStyleForArgument:",
-       "_undoManager",
+       "_undoDelete:",
+       "_undoManagerCheckpoint:",
+       "_undoManagerForFieldEditor:defaultUndoManager:",
        "_undoRedoAttributedSubstringFromRange:",
-       "_undoRedoChangeProperties",
        "_undoRedoTextOperation:",
        "_undoStack",
+       "_undoUpdate:",
        "_unformattedAttributedStringValue:",
        "_ungrowFrameForDropGapStyle",
        "_unhide",
        "_unhideAllDrawers",
        "_unhideChildren",
-       "_unhideHODWindow",
        "_unhideSheet",
-       "_unhookColumnSubviews",
-       "_uniqueIdForTable:",
+       "_uninstallActionButtonIfNecessary",
+       "_unionOfArraysForKeyPath:",
+       "_unionOfObjectsForKeyPath:",
        "_uniqueNameForNewSubdocument:",
-       "_uniqueVolumeNameForName:",
+       "_uniquer",
        "_unitsForClientLocation:",
        "_unitsForRulerLocation:",
        "_unlock",
        "_unlockFirstResponder",
-       "_unlockFocusNoRecursion",
        "_unlockQuickDrawPort",
        "_unlockViewHierarchyForDrawing",
        "_unlockViewHierarchyForModification",
-       "_unnamedArgumentDescription",
+       "_unlockfeContext",
+       "_unnestListAtIndex:markerRange:",
        "_unobstructedPortionOfRect:",
+       "_unobstructedVisibleHeaderRectOfColumn:",
+       "_unobstructedVisibleRectOfColumn:",
        "_unpinViews:resizeMasks:",
        "_unregisterDragTypes",
+       "_unregisterDynamicToolTipManagerInstance:",
+       "_unregisterForAdapterContextNotifications:",
        "_unregisterForChildChangedNotifications",
+       "_unregisterForClipBoundsDidChangeNotificaitonIfNecessaryForSuperview:force:",
        "_unregisterForCompletion:",
+       "_unregisterForDocViewFrameAndBoundsChangeNotifications",
        "_unregisterForMovieIdle",
+       "_unregisterForNotifications",
        "_unregisterForToolbarNotifications:",
        "_unregisterMenuForKeyEquivalentUniquing:",
        "_unregisterMenuItemForKeyEquivalentUniquing:",
+       "_unregisterObservedModelKeyPath:",
        "_unregisterTableColumnBinder:fromTableColumn:",
        "_unregisterToolbarInstance:",
-       "_unregisterWithObject:",
+       "_unregisterViewClassAndRepresentationClassForMIMEType:",
        "_unresolveTypeAlias:",
-       "_unscheduleFromCFRunLoop:forMode:",
        "_unsetFinalSlide",
+       "_unsetInputs",
        "_unshowOpenHandCursor:",
        "_untitledDocumentNumber",
+       "_untitledNumberForDocument:",
        "_update",
-       "_update:",
        "_updateAllViews",
        "_updateAntialiasingThreshold",
        "_updateAppleMenu:",
        "_updateAttributes",
+       "_updateAutosavedRecents:",
        "_updateAutoscrollingStateWithTrackingViewPoint:event:",
        "_updateButtonState",
        "_updateButtons",
+       "_updateCell",
+       "_updateCellIfNotEditing",
+       "_updateCellImage:",
        "_updateCommandDisplayWithRecognizer",
+       "_updateContent",
        "_updateContentsIfNecessary",
-       "_updateCookiesFromServer",
-       "_updateCountLabelForLayout:",
        "_updateCrayonsFromColorList",
+       "_updateCreatedTime:",
+       "_updateDataCellControlView",
        "_updateDateColumnDetailLevelWidths",
        "_updateDateColumnDetailLevels",
        "_updateDefaultState:forCredential:protectionSpace:",
-       "_updateDefaults",
        "_updateDependenciesWithPeerBinders:",
+       "_updateDocumentMetadata",
        "_updateDragInsertion:",
        "_updateDragInsertionIndicatorWith:",
+       "_updateDraggingInfo:dragInside:",
+       "_updateDrawer:withVisibilityState:",
+       "_updateDrawsBackground",
        "_updateEnabled",
+       "_updateExpansionButtonEnabledState",
        "_updateExpirationTimer:",
        "_updateFileDatabase",
        "_updateFileNamesForChildren",
-       "_updateFirstItem",
+       "_updateFilterPredicate:",
+       "_updateFirstItemIfNecessary",
        "_updateFocusRing",
+       "_updateFontPanel",
        "_updateForEditedMovie:",
-       "_updateFormats:",
+       "_updateForLiveResizeWithOldSize:",
+       "_updateForVersion:",
        "_updateFrameWidgets",
+       "_updateFromDeltas:",
        "_updateFromPath:checkOnly:exists:",
+       "_updateFromSnapshot:",
+       "_updateGlyphEntryForCharacter:glyphID:font:",
+       "_updateHeaderCellControlView",
        "_updateHideExtensionButtonStateFromNameFieldContents",
        "_updateHighlightedItemWithTrackingViewPoint:event:",
        "_updateIconDatabaseWithURL:",
-       "_updateIndex",
        "_updateInputManagerState",
+       "_updateInvalidatedObjectValue:",
        "_updateKeychainItem:",
        "_updateKnownNotVisibleAppleMenu:",
        "_updateLabel",
@@ -4954,94 +6303,95 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_updateLengthAndSelectedRange:",
        "_updateLoading",
        "_updateMenuForClippedItems",
-       "_updateMenuMatrix",
+       "_updateMenuItemIcon:",
        "_updateMouseTracking",
-       "_updateMouseTracking:",
        "_updateMouseoverWithEvent:",
        "_updateMouseoverWithFakeEvent",
        "_updateNameFieldContentsFromHideExtensionButtonState",
+       "_updateNewFolderButtonEnabledState",
        "_updateNodeList:byAddingNode:",
-       "_updateNodeList:byRemovingNode:",
+       "_updateNodeList:byRemovingNode:sendPrepareMessageWithParentNode:",
        "_updateNodeList:forChangedProperty:ofNode:",
        "_updateNumberOfTitleCellsIfNecessary",
-       "_updateObject:atIndex:ignoreIfNotController:",
-       "_updateObject:forChangeInController:",
+       "_updateNumberOfTitleCellsIfNecessary:",
+       "_updateObject:observedController:observedKeyPath:context:",
+       "_updateObservingRegistration:",
        "_updateOkButtonEnabledState",
-       "_updateParagraphStyleSettings:attributes:",
+       "_updateOkButtonEnabledStateAndErrorMessage",
+       "_updateParagraphStyleCache:",
        "_updatePlaceholdersForBindingInfo:",
        "_updateProxySettings",
        "_updateRulerlineForRuler:oldPosition:newPosition:vertical:",
        "_updateSearchMenu",
        "_updateSeekingSubmenuWithScreenPoint:viewPoint:event:",
-       "_updateSelectedItem:forKeyDown:",
+       "_updateSelectionForInputManager",
+       "_updateSelectionIndexPaths:",
        "_updateSelectionIndexes:",
+       "_updateSizeAndLocation",
        "_updateSortDescriptors:",
+       "_updateSubfieldStringsForDateChange",
        "_updateSubmenuKnownStale:",
+       "_updateTable",
+       "_updateTableColumn",
+       "_updateTableColumn:withWidth:",
+       "_updateTableRow",
        "_updateTearOffPositionWithScreenPoint:",
-       "_updateTitle",
+       "_updateTextSizeMultiplier",
+       "_updateTextViewWidth",
+       "_updateToNewPrefs:",
        "_updateUIToMatchCachedValues",
+       "_updateUnprocessedOwnDestinations:",
        "_updateUsageForTextContainer:addingUsedRect:",
        "_updateWebCoreSettingsFromPreferences:",
        "_updateWidgets",
+       "_updateWindow:withVisibilityState:",
+       "_updateWindow:withWidth:height:",
        "_updateWindowsUsingCache",
-       "_updatedCardWithChanges:",
-       "_updatingIndex:",
-       "_url",
+       "_updatedItemViewsForChildrenOfContainerNodes:",
+       "_useErrorPresenter:",
+       "_useFSRefsEvenOnPathBasedFileSystems",
        "_useIconNamed:from:",
        "_usePolicy:",
        "_useSharedKitWindow:rect:",
        "_useSimpleTrackingMode",
        "_useSquareToolbarSelectionHighlight",
-       "_useUserKeyEquivalent",
        "_userCanChangeSelection",
        "_userCanEditTableColumn:row:",
+       "_userCanMoveColumn:toColumn:",
        "_userCanSelectAndEditTableColumn:row:",
-       "_userCanSelectColumn:",
-       "_userCanSelectRow:",
+       "_userCanSelectColumn:byExtendingSelection:",
+       "_userCanSelectRow:byExtendingSelection:",
        "_userChangeSelection:fromAnchorRow:toRow:lastExtensionRow:selecting:",
-       "_userDefaultsKeysForIB",
-       "_userDeleteRange:",
+       "_userClickOrKeyInColumnShouldMaintainColumnPosition",
+       "_userData",
        "_userDeselectColumn:",
        "_userDeselectRow:",
        "_userInsertItemWithItemIdentifier:atIndex:",
-       "_userKeyEquivalentForTitle:",
-       "_userKeyEquivalentModifierMaskForTitle:",
-       "_userLoggedOut",
+       "_userLibraryPath",
        "_userMoveItemFromIndex:toIndex:",
        "_userRemoveItemAtIndex:",
        "_userReplaceRange:withString:",
        "_userResetToDefaultConfiguration",
        "_userSelectColumn:byExtendingSelection:",
        "_userSelectColumnRange:toColumn:byExtendingSelection:",
+       "_userSelectIndexesInRange:toIndex:byExtendingSelection:indexType:",
        "_userSelectRow:byExtendingSelection:",
        "_userSelectRowRange:toRow:byExtendingSelection:",
        "_userSelectTextOfNextCell",
        "_userSelectTextOfNextCellInSameColumn",
        "_userSelectTextOfPreviousCell",
        "_userSetCurrentItemsToItemIdentifiers:",
+       "_userVisibilityPriorityValues",
        "_usernameForRealm:URL:",
-       "_usesATSTypesetter",
        "_usesCorrectContentSize",
        "_usesCustomTrackImage",
        "_usesFastJavaBundleSetup",
-       "_usesNoRulebook",
        "_usesPageCache",
        "_usesProgrammingLanguageBreaks",
-       "_usesQuickdraw",
        "_usesScreenFonts",
        "_usesToolTipsWhenTruncated",
-       "_usesUnnamedArgumentsInSuite:",
-       "_usesUserKeyEquivalent",
        "_usingAlternateHighlightColorWithFrame:inView:",
        "_usingToolbarShowHideWeightingOptimization",
-       "_vCard21RepresentationOfRecords:",
-       "_vCard30RepresentationOfRecords:",
-       "_vCardKeyForAddressLabel:vCard3:",
-       "_vCardKeyForEmailLabel:",
-       "_vCardKeyForGenericLabel:",
-       "_vCardKeysForPhoneLabel:",
-       "_vCardRepresentation",
-       "_vCardRepresentationAsString",
        "_validDestinationForDragsWeInitiate",
        "_validFrameForResizeFrame:fromResizeEdge:",
        "_validIndexes:indexType:",
@@ -5050,28 +6400,51 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_validItemViewerBoundsAssumingClipIndicatorShown",
        "_validRememberedEditingFirstResponder",
        "_validSize:force:",
+       "_validateAndCommitTokens",
+       "_validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:bindingAdaptor:",
        "_validateAsCommonItem:",
        "_validateAsCustomItem:",
+       "_validateAttributes:",
        "_validateBundleSecurity",
+       "_validateCarbonCatalogInfo",
+       "_validateCarbonNameAndCatalogInfo",
+       "_validateChangesForSave:",
        "_validateCollections:",
+       "_validateDeletesUsingTable:withError:",
        "_validateDisplayValue",
        "_validateEditing:",
        "_validateEntryString:uiHandled:",
+       "_validateEnumeratedProperties:forPropertyType:error:",
+       "_validateError:forPresentationMethod:",
        "_validateExtrasButton:",
        "_validateFaces:",
-       "_validateGroupsSelection",
-       "_validateLDAPServer",
+       "_validateForDelete:",
+       "_validateForInsert:",
+       "_validateForSave:",
+       "_validateForUpdate:",
+       "_validateIsSymbolicLink",
+       "_validateLinkTargetCarbonCatalogInfo",
+       "_validateLinkTargetSpecifier",
        "_validateMenuFormRepresentation:",
        "_validateMultipleValue:forKeyPath:atIndex:error:",
+       "_validateMultipleValue:forKeyPath:atIndexPath:error:",
        "_validateNewWidthOfColumn:width:",
+       "_validateOpacitySlider",
        "_validatePaginationAttributes",
+       "_validatePath",
        "_validateSingleValue:forKey:error:",
        "_validateSingleValue:forKeyPath:error:",
        "_validateSizes:",
+       "_validateSpecifier",
        "_validateStyleMask:",
+       "_validateTable:kind:exceptions:exhaustive:forSave:",
+       "_validateToOnes",
+       "_validateValue:forKey:error:",
        "_validateValue:forKeyPath:ofObjectAtIndex:error:",
+       "_validateValue:forKeyPath:ofObjectAtIndexPath:error:",
        "_validateViewIsInViewHeirarchy:",
        "_validateVisibleToolbarItems",
+       "_validateWithSchemaAndReturnError:",
        "_validatedPosixName",
        "_validatedStoredUsageForTextContainerAtIndex:",
        "_value",
@@ -5079,56 +6452,77 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_valueByTranslatingOSAErrorRangeDescriptor:toType:inSuite:",
        "_valueClass",
        "_valueClass:",
-       "_valueForDepth:",
-       "_valueForIdentifier:",
-       "_valueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:",
+       "_valueClassIsSortableWithBinding:",
+       "_valueForBindingWithResolve:mode:",
+       "_valueForBindingWithoutResolve:mode:",
+       "_valueForKey:",
+       "_valueForKey:withInputs:",
+       "_valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:",
        "_valueForKeyPath:ofObjectAtIndex:",
-       "_valueInMultiValue:",
+       "_valueForKeyPath:ofObjectAtIndexPath:",
+       "_valueForOptionalCocoaAttributeKey:fromElement:",
+       "_valueForParameter:",
+       "_valueForRequiredCocoaAttributeKey:fromElement:",
+       "_valueImpl",
+       "_valueListImpl",
+       "_valueOfType:",
        "_valueTransformerNameForBinding:",
-       "_valueTypesInSuite:",
+       "_valueTypeForParameter:",
+       "_valueWithImpl:",
        "_valueWithOperatorKeyPath:",
-       "_verifyDataIsPICT:withFrame:",
-       "_verifyDefaultButtonCell",
+       "_variableValueInBindings:",
+       "_verifyDataIsPICT:",
+       "_verifyDefaultButtonCell:",
+       "_verifyNoChangesToReadonlyEntity:",
        "_verifySelectionIsOK",
        "_verticalDistanceForLineScroll",
        "_verticalDistanceForPageScroll",
-       "_verticalKeyboardScrollAmount",
-       "_verticalOriginForRow:",
-       "_verticalResizeCursor",
+       "_verticalKeyboardScrollDistance",
+       "_verticalPageScrollDistance",
+       "_verticalScrollerClass",
        "_view",
        "_viewAboveAccessoryView",
+       "_viewClass:andRepresentationClass:forMIMEType:",
        "_viewClassForMIMEType:",
        "_viewDetaching:",
+       "_viewDidEndLiveResize_handleRowHeaderSurfaces",
        "_viewDidMoveToHostWindow",
        "_viewFreeing:",
        "_viewTypesAllowImageTypeOmission:",
+       "_viewVisibleBoundsChanged",
        "_viewWillMoveToHostWindow:",
+       "_viewWillStartLiveResize_handleRowHeaderSurfaces",
        "_visibleAndCanBecomeKey",
        "_visibleAndCanBecomeKeyLimitedOK:",
+       "_visibleColumnIndexesForKeyPath:",
        "_visibleItemViewers",
        "_visibleRectOfColumns",
+       "_visibleRowIndexesForObject:",
        "_volumeIsEjectableForRefNum:",
        "_volumeIsLocalForRefNum:",
-       "_waitCursor",
        "_waitForLoadThreadSetup",
        "_wakeup",
-       "_wantToBeModal",
-       "_wantsCellClipTips",
-       "_wantsCellClipTipsWhenDisplayedInRect:inView:",
        "_wantsDeviceDependentEventModifierFlags",
+       "_wantsFiles:",
        "_wantsHeartBeat",
+       "_wantsHideOnDeactivate",
        "_wantsKeyboardLoop",
        "_wantsLiveResizeToUseCachedImage",
-       "_wantsOldValueForKey:",
+       "_wantsRevealoverAtColumn:row:",
+       "_wantsRevealovers",
        "_wantsToActivate",
        "_wantsToDestroyRealWindow",
-       "_wantsToHaveLeadingBelow",
+       "_wantsToolTipAtColumn:row:",
        "_wantsToolbarContextMenu",
+       "_wasFirstResponderAtMouseDownTime:",
        "_wasRedirectedToRequest:redirectResponse:",
+       "_webArchiveClass",
        "_webDataRequestBaseURL",
        "_webDataRequestData",
        "_webDataRequestEncoding",
        "_webDataRequestExternalRequest",
+       "_webDataRequestExternalURL",
+       "_webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:",
        "_webDataRequestMIMEType",
        "_webDataRequestParametersForReading",
        "_webDataRequestParametersForWriting",
@@ -5136,30 +6530,37 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_webDataRequestSetData:",
        "_webDataRequestSetEncoding:",
        "_webDataRequestSetMIMEType:",
-       "_webDataRequestURLForData:",
+       "_webDataRequestSetUnreachableURL:",
+       "_webDataRequestUnreachableURL",
        "_webIsDataProtocolURL:",
-       "_webKitErrorWithCode:failingURL:",
+       "_webKitBundle",
+       "_webKitErrorWithDomain:code:URL:",
        "_webPreferences",
+       "_webResourceClass",
        "_webView",
        "_webViewClass",
        "_web_HTTPStyleLanguageCode",
        "_web_HTTPStyleLanguageCodeWithoutRegion",
        "_web_RFC1123DateString",
        "_web_RFC1123DateStringWithTimeInterval:",
-       "_web_URLByRemovingFragment",
        "_web_URLByRemovingLastPathComponent",
        "_web_URLByRemovingUserAndPath",
        "_web_URLByRemovingUserAndQueryAndFragment",
+       "_web_URLCString",
        "_web_URLComponents",
        "_web_URLFragment",
        "_web_URLWithComponents:",
+       "_web_URLWithData:relativeToURL:",
+       "_web_URLWithDataAsString:",
+       "_web_URLWithDataAsString:relativeToURL:",
        "_web_URLWithString:",
        "_web_URLWithString:relativeToURL:",
+       "_web_URLWithUserTypedString:",
        "_web_acceptLanguageHeaderForPreferredLanguages",
        "_web_addDefaultsChangeObserver",
        "_web_addDotLocalIfNeeded",
        "_web_addErrorsWithCodesAndDescriptions:inDomain:",
-       "_web_arrayByRemovingIfSelector:",
+       "_web_background",
        "_web_backgroundRemoveFileAtPath:",
        "_web_backgroundRemoveLeftoverFiles:",
        "_web_bestURL",
@@ -5172,155 +6573,171 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_web_changeFinderAttributes:forFileAtPath:",
        "_web_characterSetFromContentTypeHeader",
        "_web_checkLastReferenceForIdentifier:",
+       "_web_clearPrintingModeRecursive",
        "_web_compareDay:",
        "_web_countOfString:",
        "_web_createDirectoryAtPathWithIntermediateDirectories:attributes:",
        "_web_createFileAtPath:contents:attributes:",
        "_web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:",
        "_web_createIntermediateDirectoriesForPath:attributes:",
-       "_web_dateByAdjustingFor1950Cutoff",
+       "_web_dataForKey:",
+       "_web_dataForURLComponentType:",
        "_web_dateFromHTTPDateString:",
+       "_web_declareAndWriteDragImage:URL:title:archive:source:",
+       "_web_decodeHostNameWithRange:",
        "_web_defaultsDidChange",
        "_web_dissolveToFraction:",
        "_web_doesEveryElementSatisfyPredicate:",
        "_web_domainFromHost",
        "_web_domainMatches:",
-       "_web_doubleForKey:",
+       "_web_dragImage:rect:event:pasteboard:source:offset:",
        "_web_dragOperationForDraggingInfo:",
-       "_web_dragPromisedImage:rect:URL:fileType:title:event:",
-       "_web_dragShouldBeginFromMouseDown:withExpiration:",
        "_web_dragShouldBeginFromMouseDown:withExpiration:xHysteresis:yHysteresis:",
        "_web_dragTypesForURL",
        "_web_drawAtPoint:font:textColor:",
+       "_web_drawDoubledAtPoint:withTopColor:bottomColor:font:",
+       "_web_encodeHostNameWithRange:",
        "_web_encodeWWWFormURLData",
        "_web_encodeWWWFormURLData:",
-       "_web_errorIsInDomain:",
-       "_web_errorWithDomain:code:failingURL:",
-       "_web_extractFourCharCode",
-       "_web_failingURL",
+       "_web_encodingForResource:",
+       "_web_errorWithDomain:code:URL:",
+       "_web_errorWithDomain:code:URL:userInfoObjectsAndKeys:",
        "_web_fileExistsAtPath:isDirectory:traverseLink:",
        "_web_fileNameFromContentDispositionHeader",
        "_web_filenameByFixingIllegalCharacters",
-       "_web_filteredArrayWithSelector:",
-       "_web_filteredArrayWithSelector:withObject:",
        "_web_firstOccurrenceOfCharacter:",
+       "_web_firstResponderCausesFocusDisplay",
+       "_web_firstResponderIsSelfOrDescendantView",
        "_web_fixedCarbonPOSIXPath",
-       "_web_floatForKey:",
        "_web_guessedMIMEType",
-       "_web_guessedMIMETypeForExtension:",
+       "_web_guessedMIMETypeForExtension:originalType:",
+       "_web_guessedMIMETypeForXML",
        "_web_hasCaseInsensitivePrefix:",
        "_web_hasCaseInsensitiveSubstring:",
        "_web_hasCaseInsensitiveSuffix:",
        "_web_hasCountryCodeTLD",
-       "_web_hasSubstring:atIndex:",
-       "_web_hostWithPort",
-       "_web_inHTMLView",
-       "_web_indexOfObjectSatisfyingPredicate:withObject:",
+       "_web_hasQuestionMarkOnlyQueryString",
+       "_web_hostData",
+       "_web_hostNameNeedsDecodingWithRange:",
+       "_web_hostNameNeedsEncodingWithRange:",
+       "_web_initWithDomain:code:URL:",
        "_web_initWithDomain:code:failingURL:",
        "_web_intForKey:",
-       "_web_isAllStrings",
+       "_web_isCaseInsensitiveEqualToCString:",
        "_web_isCaseInsensitiveEqualToString:",
+       "_web_isEmpty",
        "_web_isFTPDirectoryURL",
        "_web_isFileURL",
        "_web_isJavaScriptURL",
-       "_web_isToday",
+       "_web_isKeyEvent:",
+       "_web_isTabKeyEvent",
        "_web_lastOccurrenceOfCharacter:",
-       "_web_localizedDescription",
+       "_web_layoutIfNeededRecursive:testDirtyRect:",
        "_web_locationAfterFirstBlankLine",
-       "_web_longForKey:",
        "_web_looksLikeAbsoluteURL",
        "_web_looksLikeDomainName",
        "_web_looksLikeIPAddress",
        "_web_lowercaseStrings",
-       "_web_makeObjectsPerformSelector:withObject:withObject:",
        "_web_makePluginViewsPerformSelector:withObject:",
+       "_web_mapHostNameWithRange:encode:makeString:",
        "_web_mappedArrayWithFunction:context:",
        "_web_mappedArrayWithSelector:",
        "_web_mimeTypeFromContentTypeHeader",
        "_web_noteFileChangedAtPath:",
        "_web_numberForKey:",
        "_web_objectForMIMEType:",
+       "_web_originalData",
+       "_web_originalDataAsString",
+       "_web_pageSetupScaleFactor",
        "_web_parentWebFrameView",
+       "_web_parentWebView",
        "_web_parseAsKeyValuePair",
        "_web_parseAsKeyValuePairHandleQuotes:",
        "_web_parseRFC822HeaderFields",
-       "_web_pathWithQuery",
+       "_web_pathWithUniqueFilenameForPath:",
        "_web_performBooleanSelector:",
        "_web_performBooleanSelector:withObject:",
        "_web_preferredLanguageCode",
-       "_web_propagateDirtyRectToAncestor",
-       "_web_rangeOfURLHost",
-       "_web_rangeOfURLPassword",
-       "_web_rangeOfURLPort",
        "_web_rangeOfURLResourceSpecifier",
        "_web_rangeOfURLScheme",
-       "_web_rangeOfURLUser",
        "_web_rangeOfURLUserPasswordHostPort",
        "_web_removeFileOnlyAtPath:",
-       "_web_saveAndOpen",
+       "_web_safeMakeObjectsPerformSelector:",
        "_web_scaleToMaxSize:",
-       "_web_scanForURLsInString:tag:attribute:relativeToURL:",
+       "_web_schemeData",
        "_web_scriptIfJavaScriptURL",
        "_web_selectorValue",
        "_web_setBool:forKey:",
-       "_web_setDouble:forKey:",
        "_web_setFindPasteboardString:withOwner:",
-       "_web_setFloat:forKey:",
        "_web_setInt:forKey:",
-       "_web_setLong:forKey:",
        "_web_setObject:forUncopiedKey:",
        "_web_setObjectIfNotNil:forKey:",
-       "_web_setShort:forKey:",
-       "_web_setUnsignedInt:forKey:",
-       "_web_setUnsignedLong:forKey:",
-       "_web_setUnsignedShort:forKey:",
-       "_web_shortForKey:",
-       "_web_shouldLoadAsEmptyDocument",
+       "_web_setObjectUsingSetIfNecessary:forKey:",
+       "_web_setPrintingModeRecursive",
        "_web_spaceSeparatedPrefix",
        "_web_spaceSeparatedSuffix",
        "_web_splitAtNonDateCommas",
        "_web_startsWithBlankLine",
        "_web_startupVolumeName",
+       "_web_stringByAbbreviatingWithTildeInPath",
        "_web_stringByCollapsingNonPrintingCharacters",
-       "_web_stringByExpandingTildeInPath",
        "_web_stringByReplacingValidPercentEscapes",
        "_web_stringByStrippingCharactersFromSet:",
+       "_web_stringByStrippingReturnCharacters",
        "_web_stringByTrimmingWhitespace",
        "_web_stringForKey:",
        "_web_stringRepresentationForBytes:",
-       "_web_stringRepresentationForBytes:ofTotal:",
        "_web_stringWithUTF8String:length:",
        "_web_suggestedFilenameWithMIMEType:",
        "_web_superviewOfClass:",
        "_web_superviewOfClass:stoppingAtClass:",
-       "_web_timeoutFromKeepAliveHeader",
-       "_web_unsignedIntForKey:",
-       "_web_unsignedLongForKey:",
-       "_web_unsignedShortForKey:",
+       "_web_textSizeMultiplierChanged",
+       "_web_uniqueWebDataURL",
+       "_web_uniqueWebDataURLWithRelativeString:",
+       "_web_userVisibleString",
        "_web_valueWithSelector:",
        "_web_visibleItemsInDirectoryAtPath:",
        "_web_widthWithFont:",
-       "_web_writeURL:andTitle:withOwner:",
-       "_web_writeURL:andTitle:withOwner:types:",
+       "_web_writableTypesForImage",
+       "_web_writableTypesForURL",
+       "_web_writeFileWrapperAsRTFDAttachment:",
+       "_web_writeImage:URL:title:archive:types:",
+       "_web_writeURL:andTitle:types:",
+       "_webcore_effectiveFirstResponder",
+       "_webcore_initWithHeaderString:",
+       "_webkit_URLByRemovingFragment",
+       "_webkit_canonicalize",
+       "_webkit_isFTPDirectoryURL",
+       "_webkit_isJavaScriptURL",
+       "_webkit_scriptIfJavaScriptURL",
+       "_webkit_shouldLoadAsEmptyDocument",
+       "_webkit_stringByReplacingValidPercentEscapes",
        "_whenDrawn:fills:",
        "_whiteRGBColor",
+       "_widthForStringRange:",
        "_widthIsFlexible",
        "_widthOfColumn:",
        "_widthOfLongestDateStringWithLevel:format:",
        "_widthOfPackedGlyphs:count:",
        "_widthRequiredForLabelLayout",
+       "_widthToStartRolloverTracking",
+       "_willAccessValueForKey:",
+       "_willChangeBackForwardKeys",
+       "_willChangeValueForKey:",
+       "_willChangeValuesForArrangedKeys:objectKeys:indexPathKeys:",
+       "_willDeallocIndexPath:",
        "_willPopUpNotification:",
        "_willPowerOff",
+       "_willSave",
        "_willStartTrackingMouseInMatrix:withEvent:",
        "_willUnmountDeviceAtPath:ok:",
        "_win32ChangeKeyAndMain",
-       "_win32TitleString",
        "_window",
        "_windowAnimationVelocity",
        "_windowBorderThickness",
        "_windowBorderThickness:",
+       "_windowChangedHilite:",
        "_windowChangedKeyState",
-       "_windowChangedMain:",
        "_windowChangedNumber:",
        "_windowDepth",
        "_windowDeviceRound",
@@ -5329,360 +6746,232 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "_windowDidComeBack:",
        "_windowDidHideToolbar",
        "_windowDidLoad",
-       "_windowDidMove:",
        "_windowDying",
        "_windowExposed:",
+       "_windowFileButtonSpacingWidth",
        "_windowInitWithCoder:",
        "_windowMoved:",
-       "_windowMovedToPoint:",
        "_windowMovedToRect:",
        "_windowNumber:changedTo:",
-       "_windowRef",
-       "_windowRefCreatedForCarbonApp",
        "_windowRefCreatedForCarbonControl",
        "_windowResizeBorderThickness",
        "_windowResizeCornerThickness",
+       "_windowSideTitlebarTitleMinWidth:",
        "_windowTitlebarButtonSpacingWidth",
        "_windowTitlebarButtonSpacingWidth:",
-       "_windowTitlebarTitleMinHeight",
        "_windowTitlebarTitleMinHeight:",
        "_windowTitlebarXResizeBorderThickness",
        "_windowTitlebarYResizeBorderThickness",
        "_windowWillClose:",
        "_windowWillGoAway:",
        "_windowWillLoad",
+       "_windowWillOrderOut:",
        "_windowWillShowToolbar",
        "_windowWithRealWindowNumber:",
-       "_windowsForMenu:",
        "_wiringNibConnections",
        "_wordsInDictionary:",
+       "_workspaceDidResignOrBecomeActive:",
+       "_wrappingAttributes",
+       "_writeCallback:",
+       "_writeCharacterAttributes:",
        "_writeCharacterData",
        "_writeCharacters:range:",
+       "_writeColorsToLibrary",
        "_writeDataForkData:resourceForkData:",
-       "_writeDocFontsUsed",
+       "_writeDocumentAttributes",
        "_writeDocumentData",
+       "_writeDocumentProperties",
+       "_writeDocumentPropertiesToString:",
+       "_writeDocumentProperty:value:",
+       "_writeDocumentProperty:value:toString:",
        "_writeFontInRange:toPasteboard:",
+       "_writeFonts",
        "_writeForkData:isDataFork:",
-       "_writeItemAt:in:makingTemporaryCopyIn:withType:forSaveOperation:",
-       "_writeItemAt:withType:forSaveOperation:",
-       "_writeOldAttributesFrom:andNewAttributes:to:",
-       "_writePageFontsUsed",
+       "_writeImageElement:withPasteboardTypes:toPasteboard:",
+       "_writeLinkElement:withPasteboardTypes:toPasteboard:",
        "_writeParagraphData",
+       "_writeParagraphStyle:",
        "_writePersistentBrowserColumns",
        "_writePersistentExpandItems",
        "_writePersistentTableColumns",
-       "_writeRTFDInRange:toPasteboard:",
-       "_writeRTFInRange:toPasteboard:",
+       "_writeRTFDInRanges:toPasteboard:",
+       "_writeRTFInRanges:toPasteboard:",
        "_writeRecentDocumentDefaults",
        "_writeRulerInRange:toPasteboard:",
+       "_writeSafelyToURL:ofType:forSaveOperation:error:",
        "_writeSelectionToPasteboard:",
-       "_writeStringInRange:toPasteboard:",
+       "_writeStringInRanges:toPasteboard:",
        "_writeTIFF:usingCompression:factor:",
+       "_writeToURL:ofType:forSaveOperation:error:",
+       "_writeToURL:ofType:forSaveOperation:inFolder:makingTemporaryCopyInFolder:error:",
+       "_writeTokensInCharacterRange:textStorage:toPasteboard:",
+       "_writeURLInRange:toPasteboard:",
+       "_writeURLNameInRange:toPasteboard:",
+       "_writeURLStringInRange:toPasteboard:",
+       "_writeURLStringsWithNamesInRange:toPasteboard:",
        "_writeVersionsAndEncodings",
-       "_wsmIconInitFor:",
        "_wsmOwnsWindow",
+       "_zapResultArray",
        "_zeroPinnedResizeColumnsBySharingDelta:lastSharingColumn:resizeInfo:",
        "_zeroScreen",
        "_zoomButtonOrigin",
-       "abAppendString:",
-       "abDecodeBase64",
-       "abDecodedUTF7",
-       "abEllipsizeWithFont:withWidth:",
-       "abEncodeBase64DataBreakLines:allowSlash:padChar:",
-       "abEndOfParagraphStartingAtIndex:",
-       "abEscapeStringForUnichar:and:advance:",
-       "abIsUTF16EntourageVCard",
-       "abRankOfPhoneNumberMatchingString:",
-       "abShowWindowDragProxie",
-       "abStandardizedPhoneNumber",
-       "abStringAtRange:inEncoding:",
-       "abVCardDataRepresenation",
-       "abVCardKoshify",
-       "abWords",
-       "ab_queryPieces",
-       "ab_queryPiecesNoLowerCase",
        "abbreviation",
        "abbreviationDictionary",
        "abbreviationForDate:",
-       "abbreviationForTimeInterval:",
+       "abortAllToolTips",
        "abortEditing",
        "abortModal",
        "abortParsing",
        "abortToolTip",
        "absolutePathForAppBundleWithIdentifier:",
-       "absolutePositionString",
        "absoluteString",
        "absoluteURL",
-       "acceptChanges:",
+       "absoluteX",
+       "absoluteY",
+       "absoluteZ",
        "acceptColor:atPoint:",
-       "acceptConnectionInBackgroundAndNotify",
        "acceptConnectionInBackgroundAndNotifyForModes:",
-       "acceptInputForMode:beforeDate:",
        "acceptLastEnteredText",
+       "acceptNode:",
+       "acceptVisitor:flags:",
        "acceptableDragTypes",
-       "acceptsArrowKeys",
-       "acceptsBinary",
        "acceptsFirstMouse:",
        "acceptsFirstResponder",
-       "acceptsFirstResponderForView:",
        "acceptsGlyphInfo",
        "acceptsMarker:binding:overrideWithPlaceholderIfDefined:",
        "acceptsMouseMovedEvents",
        "acceptsStyleChanges",
+       "access",
        "accessInstanceVariablesDirectly",
+       "accessibilityAXAttributedStringForCharacterRange:includingLinksAndAttachments:",
        "accessibilityActionDescription:",
        "accessibilityActionNames",
        "accessibilityArrayAttributeCount:",
        "accessibilityArrayAttributeValues:index:maxCount:",
+       "accessibilityAttachmentAtIndex:",
+       "accessibilityAttachments",
        "accessibilityAttributeNames",
        "accessibilityAttributeValue:",
        "accessibilityAttributeValue:forParameter:",
        "accessibilityBoundsForCharacterRange:",
        "accessibilityBoundsForRangeAttributeForParameter:",
-       "accessibilityCancelButtonAttribute",
        "accessibilityCharacterRangeForLineNumber:",
        "accessibilityCharacterRangeForPosition:",
        "accessibilityChildForColumn:",
        "accessibilityChildrenAttribute",
        "accessibilityClearButtonAttribute",
-       "accessibilityClearButtonUIElementAttribute",
-       "accessibilityCloseButtonAttribute",
        "accessibilityColumnForChild:",
        "accessibilityColumnTitlesAttribute",
-       "accessibilityColumnsAttribute",
        "accessibilityContentsAttribute",
        "accessibilityCurrentEditor",
        "accessibilityCurrentEditorForCell:",
        "accessibilityDecrementButtonAttribute",
-       "accessibilityDefaultButtonAttribute",
-       "accessibilityDisclosedByRowAttribute",
-       "accessibilityDisclosedRowsAttribute",
-       "accessibilityDisclosingAttribute",
-       "accessibilityDocumentAttribute",
-       "accessibilityEditedAttribute",
+       "accessibilityElementForAttachment:",
        "accessibilityElementWithParent:",
-       "accessibilityEnabledAttribute",
-       "accessibilityExpandedAttribute",
        "accessibilityFocusRingBounds",
        "accessibilityFocusRingBoundsForBounds:",
-       "accessibilityFocusedAttribute",
        "accessibilityFocusedUIElement",
-       "accessibilityFocusedUIElementAttribute",
-       "accessibilityFocusedWindowAttribute",
-       "accessibilityFrontmostAttribute",
        "accessibilityGrowAreaAttribute",
        "accessibilityHeaderAttribute",
-       "accessibilityHelpAttribute",
        "accessibilityHelpStringForChild:",
-       "accessibilityHiddenAttribute",
-       "accessibilityHitTest",
        "accessibilityHitTest:",
        "accessibilityHorizontalScrollBarAttribute",
        "accessibilityIncrementButtonAttribute",
+       "accessibilityIndexForAttachment:",
        "accessibilityIndexOfChild:",
+       "accessibilityInsertionPointLineNumber",
        "accessibilityIsAttributeSettable:",
-       "accessibilityIsCancelButtonAttributeSettable",
        "accessibilityIsChildFocusable:",
        "accessibilityIsChildOfApp",
-       "accessibilityIsChildrenAttributeSettable",
-       "accessibilityIsClearButtonUIElementAttributeSettable",
-       "accessibilityIsCloseButtonAttributeSettable",
-       "accessibilityIsColumnTitlesAttributeSettable",
-       "accessibilityIsColumnsAttributeSettable",
-       "accessibilityIsContentsAttributeSettable",
-       "accessibilityIsDecrementButtonAttributeSettable",
-       "accessibilityIsDefaultButtonAttributeSettable",
-       "accessibilityIsDisclosedByRowAttributeSettable",
-       "accessibilityIsDisclosedRowsAttributeSettable",
-       "accessibilityIsDisclosingAttributeSettable",
-       "accessibilityIsDocumentAttributeSettable",
-       "accessibilityIsEditedAttributeSettable",
-       "accessibilityIsEnabledAttributeSettable",
-       "accessibilityIsExpandedAttributeSettable",
-       "accessibilityIsFocusedAttributeSettable",
-       "accessibilityIsFocusedUIElementAttributeSettable",
-       "accessibilityIsFocusedWindowAttributeSettable",
-       "accessibilityIsFrontmostAttributeSettable",
-       "accessibilityIsGrowAreaAttributeSettable",
-       "accessibilityIsHeaderAttributeSettable",
-       "accessibilityIsHelpAttributeSettable",
-       "accessibilityIsHiddenAttributeSettable",
-       "accessibilityIsHorizontalScrollBarAttributeSettable",
        "accessibilityIsIgnored",
-       "accessibilityIsIncrementButtonAttributeSettable",
-       "accessibilityIsMainAttributeSettable",
-       "accessibilityIsMainWindowAttributeSettable",
-       "accessibilityIsMaxValueAttributeSettable",
-       "accessibilityIsMenuBarAttributeSettable",
-       "accessibilityIsMinValueAttributeSettable",
-       "accessibilityIsMinimizeButtonAttributeSettable",
-       "accessibilityIsMinimizedAttributeSettable",
-       "accessibilityIsModalAttributeSettable",
-       "accessibilityIsNextContentsAttributeSettable",
-       "accessibilityIsNumberOfCharactersAttributeSettable",
-       "accessibilityIsOrientationAttributeSettable",
-       "accessibilityIsOverflowButtonAttributeSettable",
-       "accessibilityIsParentAttributeSettable",
-       "accessibilityIsPositionAttributeSettable",
-       "accessibilityIsPreviousContentsAttributeSettable",
-       "accessibilityIsProxyAttributeSettable",
-       "accessibilityIsRoleAttributeSettable",
-       "accessibilityIsRoleDescriptionAttributeSettable",
-       "accessibilityIsRowsAttributeSettable",
-       "accessibilityIsSearchButtonUIElementAttributeSettable",
-       "accessibilityIsSelectedAttributeSettable",
-       "accessibilityIsSelectedChildrenAttributeSettable",
-       "accessibilityIsSelectedColumnsAttributeSettable",
        "accessibilityIsSelectedRangeSettable",
-       "accessibilityIsSelectedRowsAttributeSettable",
-       "accessibilityIsSelectedTextAttributeSettable",
-       "accessibilityIsSelectedTextRangeAttributeSettable",
        "accessibilityIsSelectedTextSettable",
-       "accessibilityIsSharedCharacterRangeAttributeSettable",
-       "accessibilityIsSharedTextUIElementsAttributeSettable",
        "accessibilityIsSingleCelled",
-       "accessibilityIsSizeAttributeSettable",
-       "accessibilityIsSplittersAttributeSettable",
-       "accessibilityIsSubroleAttributeSettable",
-       "accessibilityIsTabsAttributeSettable",
-       "accessibilityIsTitleAttributeSettable",
-       "accessibilityIsTitleUIElementAttributeSettable",
-       "accessibilityIsToolbarButtonAttributeSettable",
-       "accessibilityIsValueAttributeSettable",
-       "accessibilityIsValueIndicatorAttributeSettable",
-       "accessibilityIsVerticalScrollBarAttributeSettable",
-       "accessibilityIsVisibleCharacterRangeAttributeSettable",
+       "accessibilityIsSortButton",
        "accessibilityIsVisibleCharacterRangeSettable",
-       "accessibilityIsVisibleChildrenAttributeSettable",
-       "accessibilityIsVisibleColumnsAttributeSettable",
-       "accessibilityIsVisibleRowsAttributeSettable",
-       "accessibilityIsWindowAttributeSettable",
-       "accessibilityIsWindowsAttributeSettable",
-       "accessibilityIsZoomButtonAttributeSettable",
        "accessibilityLineForIndexAttributeForParameter:",
        "accessibilityLineNumberForCharacterIndex:",
-       "accessibilityMainAttribute",
-       "accessibilityMainWindowAttribute",
-       "accessibilityMaxValueAttribute",
        "accessibilityMenuBarAttribute",
-       "accessibilityMinValueAttribute",
-       "accessibilityMinimizeButtonAttribute",
-       "accessibilityMinimizedAttribute",
-       "accessibilityModalAttribute",
-       "accessibilityNextContentsAttribute",
-       "accessibilityNumberOfCharactersAttribute",
-       "accessibilityOrientationAttribute",
        "accessibilityOverflowButtonAttribute",
+       "accessibilityOverriddenAttributes",
        "accessibilityParameterizedAttributeNames",
-       "accessibilityParentAttribute",
        "accessibilityPerformAction:",
-       "accessibilityPositionAttribute",
+       "accessibilityPopUpMenuCreated:",
+       "accessibilityPopUpMenuParent:",
        "accessibilityPositionOfChild:",
        "accessibilityPostNotification:",
-       "accessibilityPreviousContentsAttribute",
-       "accessibilityProxyAttribute",
        "accessibilityRTFForCharacterRange:",
-       "accessibilityRTFForRangeAttributeForParameter:",
-       "accessibilityRangeForIndexAttributeForParameter:",
        "accessibilityRangeForLineAttributeForParameter:",
        "accessibilityRangeForPositionAttributeForParameter:",
        "accessibilityRoleAttribute",
-       "accessibilityRoleDescriptionAttribute",
-       "accessibilityRowsAttribute",
+       "accessibilityRulerMarkerType",
+       "accessibilityRulerMarkerTypeDescription",
        "accessibilitySearchButtonAttribute",
-       "accessibilitySearchButtonUIElementAttribute",
-       "accessibilitySearchMenuAttribute",
-       "accessibilitySelectedAttribute",
        "accessibilitySelectedChildrenAttribute",
-       "accessibilitySelectedColumnsAttribute",
        "accessibilitySelectedRange",
-       "accessibilitySelectedRowsAttribute",
        "accessibilitySelectedText",
-       "accessibilitySelectedTextAttribute",
-       "accessibilitySelectedTextRangeAttribute",
-       "accessibilitySetDisclosingAttribute:",
-       "accessibilitySetExpandedAttribute:",
        "accessibilitySetFocus:forChild:",
-       "accessibilitySetFocusedAttribute:",
-       "accessibilitySetFrontmostAttribute:",
-       "accessibilitySetHiddenAttribute:",
-       "accessibilitySetMainAttribute:",
-       "accessibilitySetMinimizedAttribute:",
-       "accessibilitySetPositionAttribute:",
-       "accessibilitySetSelectedAttribute:",
-       "accessibilitySetSelectedChildrenAttribute:",
-       "accessibilitySetSelectedColumnsAttribute:",
+       "accessibilitySetOverrideValue:forAttribute:",
        "accessibilitySetSelectedRange:",
-       "accessibilitySetSelectedRowsAttribute:",
        "accessibilitySetSelectedText:",
-       "accessibilitySetSelectedTextAttribute:",
-       "accessibilitySetSelectedTextRangeAttribute:",
-       "accessibilitySetSizeAttribute:",
        "accessibilitySetValue:forAttribute:",
-       "accessibilitySetValueAttribute:",
        "accessibilitySetVisibleCharacterRange:",
-       "accessibilitySetVisibleCharacterRangeAttribute:",
        "accessibilitySharedCharacterRange",
-       "accessibilitySharedCharacterRangeAttribute",
-       "accessibilitySharedTextUIElementsAttribute",
        "accessibilitySharedTextViews",
        "accessibilityShouldUseUniqueId",
-       "accessibilitySizeAttribute",
        "accessibilitySizeOfChild:",
        "accessibilitySplittersAttribute",
-       "accessibilityStringForRangeAttributeForParameter:",
        "accessibilityStyleRangeForCharacterIndex:",
-       "accessibilityStyleRangeForIndexAttributeForParameter:",
        "accessibilitySubroleAttribute",
+       "accessibilitySupportsOverriddenAttributes",
        "accessibilityTabsAttribute",
+       "accessibilityTextLinkAtIndex:",
+       "accessibilityTextLinks",
        "accessibilityTextView",
-       "accessibilityTitleAttribute",
        "accessibilityTitleUIElementAttribute",
-       "accessibilityToolbarButtonAttribute",
+       "accessibilityTopLevelUIElementAttributeValueHelper",
+       "accessibilityTree",
        "accessibilityValueAttribute",
        "accessibilityValueIndicatorAttribute",
        "accessibilityVerticalScrollBarAttribute",
        "accessibilityVisibleCharacterRange",
        "accessibilityVisibleCharacterRangeAttribute",
-       "accessibilityVisibleChildrenAttribute",
-       "accessibilityVisibleColumnsAttribute",
-       "accessibilityVisibleRowsAttribute",
        "accessibilityWindowAttribute",
+       "accessibilityWindowAttributeValueHelper",
+       "accessibilityWindowNumber",
        "accessibilityWindowsAttribute",
-       "accessibilityZoomButtonAttribute",
        "accessoryView",
-       "acquireLock:lockMode:",
+       "accessoryViewContainerContentFrameDidChange:",
+       "accumulate::minRadius:factor:",
        "action",
        "action:",
+       "actionForControlCharacterAtIndex:",
        "actionHasBegun:sender:",
        "actionHasEnded:sender:",
+       "actionType",
        "activate:",
-       "activateContextHelpMode:",
        "activateIgnoringOtherApps:",
        "activateInputManagerFromMenu:",
-       "activeApplication",
-       "activeColumnFilter",
-       "activeColumnIdentifier",
+       "activeColorSpace",
        "activeConversationChanged:toNewConversation:",
        "activeConversationWillChange:fromOldConversation:",
-       "activeDirectoryPassword",
-       "activeDirectoryUser",
        "activeFileListDelegate",
        "actualBitsPerPixel",
        "actualIndexForIndex:filtered:",
+       "adapter",
+       "adapterOperations",
+       "adapterOperator",
        "add:",
+       "add:to:",
        "addAcceptFieldsToHeader",
-       "addAction:",
-       "addAdditionalField:",
-       "addAddress:stringAttribute:endOfRange:",
-       "addAddressMultiValues",
+       "addAdapterOperation:",
+       "addAnimatingRenderer:inView:",
+       "addAttribute:",
        "addAttribute:value:range:",
-       "addAttribute:values:",
-       "addAttribute:values:mergeValues:",
-       "addAttributedString:inRect:",
        "addAttributes:range:",
        "addAttributesWeakly:range:",
        "addAuthenticationFieldsToHeader",
+       "addBindVariable:",
        "addBinder:",
        "addBinding:toController:withKeyPath:valueTransformer:options:",
        "addButtonWithTitle:",
@@ -5690,22 +6979,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "addCharactersInString:",
        "addChild:",
        "addChildItem:",
+       "addChildObject:",
        "addChildWindow:ordered:",
-       "addChildWithPath:",
        "addChildren:",
+       "addChildrenToArray:",
        "addClassNamed:version:",
        "addClient:",
        "addClip",
-       "addCollection:options:",
        "addColumn",
-       "addColumnFilter:forColumnTitle:",
-       "addColumnFilter:forColumnTitle:andIdentifier:",
-       "addColumnWithCells:",
+       "addColumns:",
        "addCommon:docInfo:value:zone:",
        "addConditionalFieldsToHeader",
+       "addConnection:forKey:",
        "addConnection:toRunLoop:forMode:",
        "addConnectionFieldToHeader",
-       "addContentObject:value:tag:cellOrControl:",
+       "addContentObject:isPlaceholder:value:tag:cellOrControl:",
        "addConversation:",
        "addCookieFieldToHeader",
        "addCrayon:",
@@ -5714,236 +7002,165 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "addCredentialsToRetryHTTPRequest:afterFailureResponse:nsFailureResponse:failureCount:protocol:withCallback:context:",
        "addCursorRect:cursor:",
        "addData:",
-       "addData:name:",
+       "addDefaultTable",
+       "addDelta:forManyToManyKey:",
+       "addDescription:forSubelementName:",
        "addDirNamed:lazy:",
        "addDocument:",
-       "addDocumentIconButton",
-       "addDrawerWithView:",
-       "addElement:",
-       "addEntries:fromSession:",
+       "addEntity:index:",
        "addEntriesFromDictionary:",
-       "addEntry:",
+       "addEnumeration:",
+       "addEventListener:::",
        "addExpandedNode:",
        "addExtraFieldsToHeader",
        "addFavorite",
-       "addFavorite:inWindow:",
        "addFavoriteInWindow:",
-       "addFieldWithNoPopup:",
-       "addFieldWithPopup:property:stringAttribute:endOfRange:",
-       "addFile:",
+       "addFeatureDescriptions:",
        "addFileButton:",
        "addFileNamed:fileAttributes:",
-       "addFileWithPath:",
        "addFileWrapper:",
+       "addFontDescriptorToRecents:",
        "addFontDescriptors:toCollection:",
        "addFontTrait:",
-       "addFormat:",
        "addGlyphs:advances:count:at::",
-       "addGroupFromDictionary:",
-       "addGroupView",
-       "addGroupsFromPasteboard:toGroup:",
-       "addHeaderValue:forKey:",
        "addHeartBeatView:",
        "addHostFieldToHeader",
-       "addIMValueTo:",
        "addIndex:",
        "addIndexRange:",
        "addIndexes:",
-       "addIndexesFromIndexSet:",
        "addIndexesInRange:",
        "addItem:",
        "addItemForURL:",
-       "addItemWithImage:",
        "addItemWithObjectValue:",
        "addItemWithTitle:",
        "addItemWithTitle:action:keyEquivalent:",
-       "addItemWithTitle:andIdentifier:",
+       "addItemWithTitle:action:tag:",
        "addItems:",
-       "addItemsWithImages:",
-       "addItemsWithImagesInReverseOrder:",
        "addItemsWithObjectValues:",
        "addItemsWithTitles:",
+       "addJoinForDirectToManyToMany:",
+       "addJoinForManyToManyRelationship:sourcePath:destinationPath:",
+       "addJoinForToManyRelationship:sourcePath:destinationPath:",
+       "addJoinForToOneRelationship:sourcePath:destinationPath:",
        "addLayoutManager:",
-       "addLink:",
+       "addListenerIfAbsent:",
        "addMarker:",
-       "addMember:",
-       "addMembers:",
        "addMessageBodyToRequest",
+       "addMessageToConsole:",
        "addMouseMovedObserver",
-       "addMultiValues:toProperty:",
+       "addNamespace:",
        "addNewColor:andShowInWell:",
-       "addNumberOfIndexes:toSelectionIndexesAtIndex:",
        "addObject:",
+       "addObject:objectIDMap:",
        "addObject:toBothSidesOfRelationshipWithKey:",
        "addObject:toPropertyWithKey:",
-       "addObject:withSorter:",
-       "addObjectIfAbsent:",
-       "addObjectToMasterArrayRelationship:",
-       "addObjects:",
+       "addObjectToMasterArrayRelationship:selectionMode:",
        "addObjectsFromArray:",
-       "addObjectsToMasterArrayRelationship:",
+       "addObjectsToMasterArrayRelationship:selectionMode:",
        "addObserver:forKeyPath:options:context:",
        "addObserver:selector:name:object:",
        "addObserver:selector:name:object:suspensionBehavior:",
-       "addObserver:toObjectsAtIndexes:forKeyPath:options:context:",
-       "addPeopleFromPasteboard:toGroup:",
-       "addPerson:",
+       "addOrNestTable",
+       "addPathToLibrarySearchPaths:",
+       "addPersistentStoreWithType:configuration:URL:readOnly:error:",
        "addPlugin:",
+       "addPolicy:",
        "addPort:forMode:",
        "addPortsToAllRunLoops",
        "addPortsToRunLoop:",
        "addPreferenceNamed:owner:",
-       "addPropertiesAndTypes:",
-       "addProperty:",
-       "addRecord:",
-       "addRecordsToGroup",
        "addRect:",
        "addReferrerFieldToHeader",
-       "addRegion:",
        "addRegularFileWithContents:preferredFilename:",
        "addRepresentation:",
        "addRepresentations:",
-       "addRequestMode:",
-       "addRollOver:",
        "addRow",
        "addRowWithCells:",
+       "addRows:",
        "addRunLoop:",
-       "addSelectedObjects:",
-       "addSelectionIndexes:",
-       "addServer:",
        "addServiceProvider:",
        "addSpecialGStateView:",
        "addStatistics:",
-       "addString:attributes:inRect:",
-       "addString:inRect:",
-       "addSubgroup:",
-       "addSubrecord:",
+       "addSubresource:",
        "addSubview:",
        "addSubview:positioned:relativeTo:",
-       "addSuiteNamed:",
        "addSuperviewObservers",
-       "addSymbolicLinkWithDestination:preferredFilename:",
        "addTabStop:",
-       "addTabViewItem:",
        "addTableColumn:",
        "addTemporaryAttributes:forCharacterRange:",
        "addTextContainer:",
        "addTimeInterval:",
        "addTimer:forMode:",
        "addTimerToModes",
-       "addToDirectoryResults:",
        "addToPageSetup",
        "addToolTipRect:owner:userData:",
        "addTrackingRect:owner:userData:assumeInside:",
-       "addTrackingRectForToolTip:",
-       "addType:",
-       "addTypes:",
+       "addTrackingRectForToolTip:reuseExistingTrackingNum:",
        "addTypes:owner:",
        "addUserAgentFieldToHeader",
        "addValue:forHTTPHeaderField:",
-       "addValue:withLabel:",
+       "addVariationDescriptions:",
        "addView:frame:toView:characterIndex:layoutManager:",
        "addWebView:toSetNamed:",
        "addWindowController:",
        "addWindowObservers",
        "addWindowsItem:title:filename:",
-       "addedGroups:",
-       "addedMembers:",
-       "addedMembers:toGroup:",
-       "addedPeople",
-       "addedToGroup",
        "additionalClip",
+       "additionalPatternPhase",
        "address",
-       "addressBookCompactedDataFile",
-       "addressBookDataFile",
-       "addressBookDirectory",
-       "addressBookImagesDirectory",
-       "addressBookLockFile",
-       "addressBookProperty",
-       "addressBookSaveFile",
-       "addressFormats",
-       "addressInfoForHost:",
        "addresses",
-       "addrinfo",
        "adjustCTM:",
        "adjustControls:",
-       "adjustFrames:",
+       "adjustFrameOriginX:",
+       "adjustFrameSize",
        "adjustHalftonePhase",
        "adjustOffsetToNextWordBoundaryInString:startingAt:",
        "adjustPageHeightNew:top:bottom:limit:",
        "adjustPageWidthNew:left:right:limit:",
-       "adjustRulersForMaxSize",
        "adjustScroll:",
        "adjustScrollView",
        "adjustSubviews",
        "adjustView:frame:forView:characterIndex:layoutManager:",
-       "adjustVolumePath:",
-       "adminGroup",
-       "advancePastEOL",
-       "advancePastEOLSingle",
-       "advancePastEOLUnicode",
-       "advanceToEOL",
-       "advanceToEOLSingle",
-       "advanceToEOLUnicode",
-       "advanceToPeakPoint",
-       "advanceToSingleByteString",
-       "advanceToString",
-       "advanceToToken:throughTypes:",
-       "advanceToUnicodeString",
+       "adjustViewSize",
+       "advanceProxyArray",
+       "advanceToNextMisspelling",
+       "advanceToNextMisspellingStartingJustBeforeSelection",
        "advancementForGlyph:",
        "aeDesc",
        "aeteResource:",
-       "afmDictionary",
-       "afmFileContents",
-       "aggregateExceptionWithExceptions:",
-       "alertStyle",
-       "alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:",
+       "affineTransform",
+       "afterEntityLookup",
+       "alertDidEnd:returnCode:contextInfo:",
+       "alertShowHelp:",
+       "alertWithError:",
        "alignCenter:",
        "alignJustified:",
        "alignLeft:",
        "alignRight:",
        "alignment",
-       "allAttributeKeys",
        "allBundles",
-       "allCards",
        "allConnections",
        "allCredentials",
-       "allDirectoriesServer",
        "allFrameworks",
-       "allGroup",
-       "allGroups",
        "allHTTPHeaderFields",
        "allHeaderFields",
-       "allImportableFilesFromPaths:",
        "allKeys",
        "allKeysForObject:",
-       "allLabelsForProperty:",
-       "allMemberNames",
-       "allMembers",
-       "allModes",
        "allObjects",
-       "allPeople",
-       "allPersonProperties",
-       "allProperties",
+       "allOrderedScopeButtons",
        "allPropertyKeys",
-       "allServices",
-       "allToManyRelationshipKeys",
-       "allToOneRelationshipKeys",
-       "allUniqueRecordsIn:",
        "allValues",
        "alloc",
        "allocFromZone:",
        "allocWithZone:",
        "allocateGState",
-       "allowDatabaseCleanup",
-       "allowEditing",
+       "allocateObjectIDForPayload:withType:",
+       "allowDHTMLDrag:UADrag:",
        "allowEmptySel:",
-       "allowGroupSelection",
-       "allowableCharacters",
+       "allowFlushing",
+       "allowedContentBindingMask",
        "allowedFileTypes",
        "allowedValueBindingMask",
-       "allowsAnimatedImageLooping",
-       "allowsAnimatedImages",
        "allowsAnyHTTPSCertificateForHost:",
        "allowsBranchSelection",
        "allowsColumnReordering",
@@ -5956,27 +7173,18 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "allowsEmptySelection",
        "allowsExpandingMultipleDirectories",
        "allowsFloats",
-       "allowsGroupEditing",
-       "allowsGroupSelection",
-       "allowsHorizontalScrolling",
-       "allowsIncrementalSearching",
-       "allowsIndividualValueSelection",
        "allowsKeyedCoding",
        "allowsMixedState",
        "allowsMultipleSelection",
-       "allowsMultipleSubrowSelection",
        "allowsNaturalLanguage",
        "allowsNullArgumentWithBinding:",
+       "allowsOtherFileTypes",
        "allowsReverseTransformation",
        "allowsScrolling",
-       "allowsSubrowSelection",
        "allowsTickMarkValuesOnly",
        "allowsToolTipsWhenApplicationIsInactive",
-       "allowsTruncatedLabels",
        "allowsUndo",
-       "allowsUserConfiguration",
        "allowsUserCustomization",
-       "allowsVerticalScrolling",
        "alpha",
        "alphaComponent",
        "alphaControlAddedOrRemoved:",
@@ -5984,96 +7192,124 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "alphanumericCharacterSet",
        "altIncrementValue",
        "altModifySelection:",
+       "alterCurrentSelection:direction:granularity:",
+       "alterCurrentSelection:verticalDistance:",
+       "alternateArrangeInFront:",
        "alternateImage",
-       "alternateMnemonic",
        "alternateMnemonicLocation",
-       "alternateName",
-       "alternateSecondarySelectedControlColor",
        "alternateSelectedControlColor",
        "alternateSelectedControlTextColor",
        "alternateTitle",
-       "altersStateOfSelectedItem",
        "alwaysAttemptToUsePageCache",
+       "alwaysPresentsApplicationModalAlerts",
+       "alwaysPresentsApplicationModalAlertsWithBinding:",
+       "alwaysUsesMultipleValuesMarker",
+       "analyzeKeyPath:registerOrUnregister:",
        "ancestorSharedWithView:",
        "ancestorsStartingWith:",
+       "anchorElement",
+       "andPredicateOperator",
+       "angledROI:forRect:",
        "animate",
        "animate:",
-       "animates",
-       "animationDelay",
+       "animation:didReachProgressMark:",
+       "animation:valueForProgress:",
+       "animationBlockingMode",
+       "animationCurve",
+       "animationDidEnd:",
+       "animationDidStop:",
        "animationResizeTime:",
+       "animationShouldStart:",
        "anyObject",
        "appDidActivate:",
        "appearanceChanged:",
-       "append:",
        "appendAttributedString:",
        "appendBezierPath:",
        "appendBezierPathWithArcFromPoint:toPoint:radius:",
        "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:",
        "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:",
-       "appendBezierPathWithGlyph:inFont:",
        "appendBezierPathWithGlyphs:count:inFont:",
        "appendBezierPathWithOvalInRect:",
-       "appendBezierPathWithPackedGlyphs:",
        "appendBezierPathWithPoints:count:",
        "appendBezierPathWithRect:",
        "appendBytes:length:",
        "appendCharacter:",
-       "appendCharacters:length:",
        "appendChild:",
+       "appendClause:forKeyPath:allowToMany:",
+       "appendClause:forKeyPathExpression:allowToMany:",
+       "appendClause:forProperty:keypath:",
        "appendData:",
-       "appendData:length:",
        "appendDisplayedNode:identifier:title:displaysChildren:",
-       "appendField:label:withText:",
+       "appendElementClassDeclarationToAETEData:",
+       "appendEnumerationDeclarationToAETEData:",
        "appendFormat:",
-       "appendLabel:toVCardRep:inGroup:",
-       "appendList:",
+       "appendJoinClauseToSQL",
+       "appendLimitClauseToSQL:",
+       "appendObjectClassDeclarationToAETEData:",
+       "appendOrderByClauseToSQL",
+       "appendParameterDeclarationsToAETEData:",
+       "appendPropertyDeclarationToAETEData:",
+       "appendPropertyDeclarationsToAETEData:",
+       "appendReceivedData:fromDataSource:",
+       "appendRecordTypeDeclarationsToAETEData:",
+       "appendSQL:",
+       "appendSelectListToSQL",
+       "appendSelectableScopeLocationNode:",
        "appendString:",
-       "appendString:withFont:",
-       "appendString:withFont:andAttribute:",
-       "appendTemporaryField:andLabel:font:",
+       "appendSuiteDeclarationsToAETEData:",
        "appendTransform:",
-       "appleEvent",
+       "appendWhereClause:",
+       "appendWhereClauseToSQL",
        "appleEventClassCode",
        "appleEventCode",
-       "appleEventCodeForArgumentWithName:",
        "appleEventCodeForKey:",
        "appleEventCodeForReturnType",
-       "appleEventCodeForSuite:",
-       "appleEventForSuspensionID:",
-       "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:",
+       "application:delegateHandlesKey:",
+       "application:openFile:",
+       "application:openFileWithoutUI:",
+       "application:openFiles:",
+       "application:openTempFile:",
+       "application:printFile:",
+       "application:printFiles:",
+       "application:printFiles:withSettings:showPrintPanels:",
+       "application:receivedEvent:dequeuedEvent:",
+       "application:runTest:duration:",
+       "application:willPresentError:",
+       "applicationDelegateHandlesKey::",
        "applicationDidBecomeActive:",
+       "applicationDockMenu:",
        "applicationIcon",
-       "applicationIconImage",
-       "applicationLaunched:handle:",
        "applicationName",
-       "applicationNameForUserAgent",
-       "applicationQuit:handle:",
-       "applicationWillTerminate:",
+       "applicationOpenUntitledFile:",
+       "applicationShouldHandleReopen:hasVisibleWindows:",
+       "applicationShouldOpenUntitledFile:",
+       "applicationShouldTerminate:",
+       "applicationShouldTerminateAfterLastWindowClosed:",
        "appliesImmediately",
-       "appliesToRequest:",
-       "apply",
        "apply:",
-       "apply:context:",
-       "applyDisplayedValue",
-       "applyFontTraits:range:",
-       "applyObjectValue:forBinding:operation:",
-       "applyToAll:",
-       "applyToRequest:",
-       "applyValueTransformerToValue:forBinding:reverse:",
-       "archiveButtonImageSourceWithName:toDirectory:",
+       "apply:arguments:options:",
+       "apply:to:",
+       "apply:to:options1:options2:",
+       "apply:to:options:",
+       "apply:to:params:",
+       "applyDisplayedValueHandleErrors:typeOfAlert:canRecoverFromErrors:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+       "applyEditingStyleToBodyElement",
+       "applyObjectValue:forBinding:operation:needToRunAlert:error:",
+       "applyStyle:",
+       "archive",
        "archiveRootObject:toFile:",
        "archivedDataWithRootObject:",
-       "archiverData",
-       "areAllContextsOutputTraced",
-       "areAllContextsSynchronized",
+       "archiver:didEncodeObject:",
+       "archiver:willEncodeObject:",
+       "archiver:willReplaceObject:withObject:",
+       "archiverDidFinish:",
+       "archiverWillFinish:",
        "areCursorRectsEnabled",
-       "areEventsTraced",
        "arePlugInsEnabled",
        "areScrollbarsVisible",
        "areToolbarsVisible",
-       "argumentNames",
+       "argumentDescriptionFromName:implDeclaration:presoDeclaration:suiteName:commandName:",
        "arguments",
-       "argumentsRetained",
        "arrangeInFront:",
        "arrangeObjects:",
        "arrangedObjects",
@@ -6081,36 +7317,34 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "arrayByAddingObject:",
        "arrayByAddingObjects:count:",
        "arrayByAddingObjectsFromArray:",
-       "arrayByApplyingSelector:",
-       "arrayByExcludingIdenticalObjectsInArray:",
        "arrayByExcludingObjectsInArray:",
        "arrayByExcludingObjectsInArray:identical:",
-       "arrayByExcludingToObjectsInArray:",
        "arrayForKey:",
+       "arrayForOptionalSubelementName:",
+       "arrayOrNumberFromResolutions:andValues:withCount:",
        "arrayRepresentation",
        "arrayWithArray:",
        "arrayWithArray:copyItems:",
        "arrayWithCapacity:",
        "arrayWithContentsOfFile:",
-       "arrayWithContentsOfURL:",
        "arrayWithIFURLsWithTitlesPboardType",
+       "arrayWithIndexes:",
        "arrayWithObject:",
        "arrayWithObjects:",
        "arrayWithObjects:count:",
+       "arrayWithRange:",
+       "arrayWithRanges:count:",
        "arrowCursor",
        "arrowPosition",
-       "arrowsPosition",
        "asRef",
        "ascender",
        "ascending",
        "ascent",
        "aspectRatio",
-       "associatePopup:withProperty:",
+       "assignValuesForInsertedObject:",
        "asyncInvokeServiceIn:msg:pb:userData:menu:remoteServices:unhide:",
-       "asyncResolveWithCallbackClient:",
-       "atEOF",
+       "atomAttachmentCell",
        "attachColorList:",
-       "attachColorList:makeSelected:",
        "attachColorList:systemList:makeSelected:",
        "attachPopUpWithFrame:inView:",
        "attachSubmenuForItemAtIndex:",
@@ -6122,32 +7356,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "attachedViewFrameDidChange:",
        "attachment",
        "attachmentCell",
+       "attachmentMenu",
        "attachmentSizeForGlyphAtIndex:",
        "attemptOverwrite:",
-       "attemptToBind",
-       "attrImpl",
-       "attrWithImpl:",
+       "attemptRecoveryFromError:optionIndex:",
+       "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:",
+       "attemptRetryAfter3xxResponse",
        "attribute:atIndex:effectiveRange:",
        "attribute:atIndex:longestEffectiveRange:inRange:",
-       "attributeCount",
+       "attributeColumnDefinitions",
+       "attributeColumns",
        "attributeDescriptorForKeyword:",
-       "attributeExists:withValue:",
+       "attributeForLocalName:URI:",
+       "attributeForName:",
        "attributeKeys",
-       "attributeRuns",
+       "attributeMappings",
+       "attributeType",
+       "attributeTypeForXMLInfo:",
+       "attributeValueClassName",
+       "attributeValueForSlot:",
        "attributedAlternateTitle",
        "attributedString",
-       "attributedStringByWeaklyAddingAttributes:",
        "attributedStringForNil",
        "attributedStringForNotANumber",
        "attributedStringForObjectValue:withDefaultAttributes:",
        "attributedStringForZero",
        "attributedStringFrom:startOffset:to:endOffset:",
-       "attributedStringToEndOfGroup",
        "attributedStringValue",
        "attributedStringWithAttachment:",
+       "attributedStringWithHTML:documentAttributes:",
+       "attributedStringWithHTML:useEncoding:documentAttributes:",
        "attributedSubstringForMarkedRange",
        "attributedSubstringFromRange:",
-       "attributedText",
        "attributedTitle",
        "attributes",
        "attributesAtEndOfGroup",
@@ -6155,251 +7395,259 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "attributesAtIndex:effectiveRange:inRange:",
        "attributesAtIndex:longestEffectiveRange:inRange:",
        "attributesAtPath:traverseLink:",
-       "attributesForVoice:",
+       "attributesByName",
+       "attributesForExtraLineFragment",
        "attributesWithStat:",
-       "authenticate:",
-       "authenticateName:withPassword:",
-       "authenticateName:withPassword:authOnly:",
-       "authenticateWithBufferItems:authType:authOnly:",
+       "authenticateComponents:withData:",
        "authenticateWithDelegate:",
-       "authenticationInfoWithAuthentication:forUser:andPass:",
-       "authenticationList",
+       "authenticationDataForComponents:",
        "authenticationMethod",
-       "autoPositionMask",
-       "autoResizesOutlineColumn",
        "autoenablesItems",
-       "autofill",
-       "autofillColor",
-       "autohidesScrollers",
        "automaticallyNotifiesObserversForKey:",
        "automaticallyPreparesContent",
+       "autorecalculatesKeyViewLoop",
        "autorelease",
-       "autoreleasePoolExists",
-       "autoreleasedObjectCount",
        "autorepeat",
        "autoresizesAllColumnsToFit",
-       "autoresizesOutlineColumn",
        "autoresizesSubviews",
        "autoresizingMask",
-       "autosaveExpandedItems",
+       "autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:",
        "autosaveName",
        "autosaveTableColumns",
-       "autosaves",
+       "autosavedContentsFileURL",
        "autosavesConfiguration",
-       "autosavesConfigurationUsingIdentifier",
+       "autosavingFileType",
        "autoscroll:",
        "autosizesCells",
+       "autovalidates",
        "availableBindings",
-       "availableCollatorElements",
-       "availableCollators",
        "availableColorLists",
        "availableData",
        "availableFontFamilies",
-       "availableFontNamesWithTraits:",
        "availableFonts",
        "availableLanguageContextNames",
-       "availableLanguageNames",
        "availableMembersOfFontFamily:",
-       "availablePPDTypeFiles",
+       "availableProfiles",
        "availableResourceData",
-       "availableStringEncodings",
        "availableTypeFromArray:",
-       "availableUserServers",
-       "availableVoices",
+       "average:",
        "avoidsEmptySelection",
-       "awaitReturnValues",
        "awake",
        "awakeAfterUsingCoder:",
+       "awakeFromFetch",
+       "awakeFromInsert",
        "awakeFromNib",
        "backForwardList",
        "backItem",
        "backListCount",
        "backListWithLimit:",
-       "backgrounQueriesRunning",
+       "background",
        "backgroundColor",
-       "backgroundGray",
-       "backgroundImage",
-       "backgroundLayoutEnabled",
+       "backgroundEdgeColor",
        "backgroundLoadDidFailWithReason:",
        "backingType",
-       "backupDatabaseToPath:",
+       "base64DecodeData:",
        "baseAffineTransform",
-       "baseOfTypesetterGlyphInfo",
+       "baseGetter",
+       "baseSetter",
        "baseSpecifier",
        "baseURL",
        "baseWritingDirection",
        "baseline",
        "baselineLocation",
        "baselineOffsetInLayoutManager:glyphIndex:",
-       "becameVisible",
        "becomeFirstResponder",
        "becomeKeyWindow",
        "becomeMainWindow",
        "becomeMultiThreaded:",
        "becomeSingleThreaded:",
        "becomesKeyOnlyIfNeeded",
-       "beginAnimationInRect:fromRect:",
+       "beginConstructionWithSuiteRegistry:",
        "beginDataLoad",
        "beginDocument",
        "beginDocumentWithTitle:",
        "beginEditing",
+       "beginLayoutChange",
+       "beginLineWithGlyphAtIndex:",
        "beginLoadInBackground",
-       "beginLoadingImageDataForClient:",
-       "beginLoadingImageForEmails:forClient:",
        "beginModalSessionForWindow:",
        "beginModalSessionForWindow:relativeToWindow:",
        "beginPage:",
        "beginPage:label:bBox:fonts:",
        "beginPageInRect:atPlacement:",
        "beginPageSetupRect:placement:",
+       "beginParagraph",
        "beginPrologueBBox:creationDate:createdBy:fonts:forWhom:pages:title:",
        "beginSetup",
        "beginSheet",
        "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
        "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
        "beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
+       "beginSheetForSavePanel:withFilepath:didEndSelector:contextInfo:",
        "beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:",
        "beginSheetWithPrintInfo:modalForWindow:delegate:didEndSelector:contextInfo:",
        "beginTrailer",
+       "beginTransaction",
        "beginUndoGrouping",
        "beginUpdateInsertionAnimationAtIndex:throwAwayCacheWhenDone:",
-       "beginUsingMenuRepresentation:",
-       "bestLocationRepFromPath:",
+       "beginUsingMenuFormRepresentation:",
+       "bestLocationRep",
+       "bestLocationRep:matchesBestLocationRep:",
        "bestLocationRepFromURL:",
+       "bestMatchingFontForCharacters:length:attributes:actualCoveredLength:",
        "bestRepresentationForDevice:",
        "bestVisualFrameSizeForCharacterCount:",
        "bezelStyle",
-       "bezelStyleForState:",
        "bezierPath",
-       "bezierPathByFlatteningPath",
-       "bezierPathByReversingPath",
        "bezierPathWithOvalInRect:",
        "bezierPathWithRect:",
        "bidiProcessingEnabled",
-       "binaryAttributes",
        "binaryCollator",
+       "binaryOperatorForSelector",
        "bind:toObject:withKeyPath:options:",
        "bindHIViewToNSView:nsView:",
+       "bindVariables",
        "binderClassesForObject:",
        "binderClassesSuperseded",
        "binderSpecificFlagAtIndex:",
-       "binderUpdateType",
        "binders",
        "binding",
        "bindingCategory",
+       "bindingRunsAlerts:",
        "bindingsForObject:",
-       "birthDate",
-       "birthdayFieldPresent",
        "bitmapData",
-       "bitmapDataPlanes",
-       "bitmapImage",
+       "bitmapFormat",
        "bitmapRepresentation",
        "bitsPerPixel",
        "bitsPerSample",
        "blackColor",
        "blackComponent",
        "blendedColorWithFraction:ofColor:",
-       "blocksOtherRecognizers",
+       "blue",
        "blueColor",
        "blueComponent",
        "blueControlTintColor",
-       "bluetoothButton",
-       "body",
+       "blur1ROI:::",
+       "blur2ROI:::",
+       "blur:pass:",
+       "blurRegionOf:destRect:userInfo:",
+       "bodyBackgroundColor",
        "boldSystemFontOfSize:",
        "boolForKey:",
+       "boolParameterValue:",
        "boolValue",
        "booleanForKey:inTable:",
        "booleanValue",
+       "borderColorForEdge:",
        "borderRect",
        "borderType",
        "bottomCornerRounded",
        "bottomMargin",
        "boundingBox",
+       "boundingBoxForControlGlyphAtIndex:forTextContainer:proposedLineFragment:glyphPosition:characterIndex:",
        "boundingRectForFont",
        "boundingRectForGlyph:",
        "boundingRectForGlyphRange:inTextContainer:",
+       "boundingRectWithSize:options:",
+       "boundingRectWithSize:options:attributes:",
        "bounds",
-       "boundsAsQDRect",
        "boundsForButtonCell:",
        "boundsForTextCell:",
-       "boundsRotation",
+       "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:",
+       "boundsRectForContentRect:inRect:textContainer:characterRange:",
+       "boundsRectForTextBlock:atIndex:effectiveRange:",
+       "boundsRectForTextBlock:glyphRange:",
        "boxType",
        "branchImage",
        "breakConnection",
        "breakLineAtIndex:",
        "breakLock",
-       "bridgeCount",
+       "bridgeForDOMDocument:",
+       "bridgeForView:",
        "brightColor",
        "brightnessComponent",
-       "brightnessSlider:",
        "broadcast",
-       "brownColor",
        "browser",
        "browser:createRowsForColumn:inMatrix:",
        "browser:didClickOnDisabledCell:atRow:column:",
+       "browser:isColumnValid:",
        "browser:numberOfRowsInColumn:",
+       "browser:selectCellWithString:inColumn:",
+       "browser:selectRow:inColumn:",
        "browser:shouldSizeColumn:forUserResize:toWidth:",
+       "browser:sizeToFitWidthOfColumn:",
+       "browser:titleOfColumn:",
        "browser:willDisplayCell:atRow:column:",
-       "browserColumnConfigurationDidChange:",
-       "bufferIsEmpty",
+       "browserDidScroll:",
+       "browserWillScroll:",
+       "buddhistCalendar",
        "bufferingSize",
+       "buildAlertStyle:title:formattedMsg:first:second:third:oldStyle:",
        "buildAlertStyle:title:message:first:second:third:oldStyle:args:",
        "buildFilterCache",
        "buildHTTPRequest",
-       "buildPropertyDict:",
-       "buildRequest",
-       "buildString",
+       "buildOrderByClauseWithSortDescriptors:",
+       "buildWhereClauseForRow:",
+       "buildWhereClauseWithSelectPredicate:",
        "builderForClass:",
-       "builderForObject:",
-       "builtInLabelsForProperty:",
        "builtInPlugInsPath",
-       "builtInProperties",
        "bundle",
+       "bundleForClass",
        "bundleForClass:",
-       "bundleForSuite:",
        "bundleIdentifier",
-       "bundleLanguages",
-       "bundleObject",
        "bundlePath",
        "bundleWithIdentifier:",
        "bundleWithPath:",
+       "busyButClickableCursor",
+       "buttonHeight",
+       "buttonImageForHeightReference",
+       "buttonImageNamePrefixForButtonState:",
        "buttonImageSourceWithName:",
+       "buttonImagesForButtonState:",
+       "buttonMask",
        "buttonNumber",
        "buttonPressed:",
+       "buttonROI:forRect:",
+       "buttonRectForBounds:",
+       "buttonRectangleForResolutionData:",
+       "buttonResult:buttonImage:inlayImage:highlightImage:figure:figureOffset:stripeGradient:phase:",
+       "buttonResultForResolutionData:",
        "buttons",
        "bytes",
        "bytesPerPlane",
        "bytesPerRow",
        "cString",
-       "cStringForStatus:",
        "cStringLength",
+       "cStringUsingEncoding:",
+       "cache",
        "cacheDepthMatchesImageDepth",
-       "cacheImageInRect:",
+       "cacheInsertStatement:",
        "cacheMiniwindowTitle:guess:",
-       "cacheMode",
        "cachePolicy",
        "cacheRect:",
+       "cacheStringImage:whiteText:",
+       "cachedChildren",
+       "cachedChildrenForExpandedNode:",
        "cachedChildrenForNode:",
-       "cachedDateForEmail:",
        "cachedDrawingImage",
        "cachedFontFromFamily:traits:size:",
        "cachedHandleForURL:",
-       "cachedImageForEmail:",
-       "cachedImagePathForEmail:",
        "cachedResponse",
        "cachedResponseForRequest:",
        "cachedResponseMustBeRevalidated",
        "cachedResponseRevalidated",
-       "cachesBezierPath",
+       "cachedSQLiteStatement",
        "calcDrawInfo:",
        "calcSize",
+       "calculateFigureCenter:",
+       "calculateFigureSize:",
        "calculatesAllSizes",
+       "calendar",
        "calendarDate",
        "calendarFormat",
-       "callbackBased",
        "canAdd",
        "canAddBinding:toController:",
-       "canAddField:",
+       "canAddChild",
        "canApplyValueTransformer:toBinding:",
        "canBeCompressedUsing:",
        "canBeConvertedToEncoding:",
@@ -6407,108 +7655,97 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "canBecomeKeyView",
        "canBecomeKeyWindow",
        "canBecomeMainWindow",
+       "canBrowseNode:allowInteraction:",
        "canCachePage",
        "canChooseDirectories",
        "canChooseFiles",
+       "canChooseNode:",
        "canClickDisabledFiles",
        "canCloseDocument",
        "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",
-       "canCompleteForforPartialWordRange:",
-       "canConvertToBMPRepresentation",
+       "canConnect",
        "canCreateCollapsedSpecifierFromAbsolutePositionRecord:",
        "canCreateCollapsedSpecifierFromRangeRecord:",
        "canCreateDirectories",
        "canCycle",
-       "canDecodeHeaderData:",
+       "canDecodeDownloadHeaderData:",
+       "canDragRowsWithIndexes:atPoint:",
        "canDraw",
        "canGoBack",
+       "canGoBackOrForward:",
        "canGoForward",
        "canHandleRequest:",
        "canHide",
+       "canHighlightNode:",
+       "canIgnorePopulatingObject:",
+       "canIgnoreSettingMinAndMaxForObject:",
        "canImportData:",
        "canInitWithData:",
        "canInitWithPasteboard:",
        "canInitWithRequest:",
        "canInitWithURL:",
        "canInsert",
+       "canInsertChild",
        "canMakeTextLarger",
        "canMakeTextSmaller",
+       "canPaste",
        "canPopulateWithPlaceholders",
        "canProvideDocumentSource",
-       "canReachAddress:",
        "canRedo",
        "canRemove",
-       "canRunModal",
+       "canResumeDownloadDecodedWithEncodingMIMEType:",
+       "canSearch",
        "canSelectHiddenExtension",
        "canSelectNext",
        "canSelectPrevious",
        "canShowFile:",
        "canShowMIMEType:",
        "canShowMIMETypeAsHTML:",
-       "canSpawnSeparateThread",
        "canStart",
        "canStoreColor",
        "canSupportMinAndMaxForObject:",
        "canTakeFindStringFromSelection",
+       "canTargetLoadInFrame:",
        "canUndo",
-       "canUsePlugin:",
-       "canVolumeBeUnmounted",
        "cancel",
        "cancel:",
        "cancelAddCredentialsToRetryHTTPRequest:",
-       "cancelAllQueries",
        "cancelAuthentication:",
        "cancelAuthenticationChallenge:",
-       "cancelButtonCell",
-       "cancelButtonPressed:",
        "cancelButtonRectForBounds:",
-       "cancelChanges:",
        "cancelContentPolicy",
-       "cancelEditing",
-       "cancelImport:",
-       "cancelImporting:",
-       "cancelIncrementalLoad",
+       "cancelDelayedUpdate",
        "cancelIncrementalLoadForImage:",
        "cancelInput:conversation:",
+       "cancelLoadAndDestroyStreamWithError:",
        "cancelLoadInBackground",
-       "cancelLoadingImageDataForTag:",
+       "cancelLoadWithError:",
        "cancelOperation:",
        "cancelPerformSelector:target:argument:",
-       "cancelPerformSelectorsWithTarget:",
        "cancelPreviousPerformRequestsWithTarget:",
        "cancelPreviousPerformRequestsWithTarget:selector:object:",
-       "cancelQueries:",
-       "cancelQuery",
-       "cancelSheet:",
+       "cancelPreviouslScheduleRolloverWindow",
        "cancelUserAttentionRequest:",
        "cancelWithError:",
        "cancelledError",
-       "canonicalFormOfID:",
        "canonicalHTTPURLForURL:",
        "canonicalRequestForRequest:",
-       "canonicalString",
+       "canonicalXMLStringPreservingComments:",
+       "canonicalizeHTTPEncodingString",
        "capHeight",
        "capabilityMask",
        "capacity",
-       "capacityOfTypesetterGlyphInfo",
-       "capitalizeWord:",
-       "capitalizedAttributes",
        "capitalizedLetterCharacterSet",
        "capitalizedString",
        "captionTextField",
-       "carbonDelegate",
        "carbonHICommandIDFromActionSelector:",
-       "carbonPickerWindow",
-       "cardPane",
-       "cardScrollView",
-       "cardsFromGroup",
-       "cardsWithCategory:",
+       "carbonNotificationProc",
+       "caretRectAtNode:offset:affinity:",
        "cascadeTopLeftFromPoint:",
-       "caseConversionFlags",
        "caseInsensitiveCompare:",
        "caseSensitive",
+       "castObject:toType:",
        "catalogNameComponent",
-       "categories",
        "cell",
        "cellAtIndex:",
        "cellAtPoint:row:column:",
@@ -6519,16 +7756,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "cellBackgroundColor",
        "cellBaselineOffset",
        "cellClass",
-       "cellEnabled:",
-       "cellForItemAtIndex:",
        "cellForRow:column:tableView:",
        "cellForRow:tableColumn:",
        "cellFrameAtRow:column:",
        "cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:",
+       "cellMenuForSearchField",
        "cellOrControlForObject:",
+       "cellPadding",
        "cellPrototype",
        "cellSize",
        "cellSizeForBounds:",
+       "cellSpacing",
        "cellWithTag:",
        "cells",
        "center",
@@ -6536,54 +7774,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "center:didRemoveObserver:name:object:",
        "centerOverMainWindow",
        "centerScanRect:",
+       "centerSelectionInVisibleArea",
        "centerSelectionInVisibleArea:",
        "centerTabMarkerWithRulerView:location:",
-       "centerTruncateString:toWidth:",
        "centerTruncateString:toWidth:withFont:",
        "cgsRegionObj",
-       "chainChildContext:",
-       "changeAction:",
-       "changeAddressFormat:",
-       "changeAttribute:index:newValue:",
-       "changeAttribute:oldValue:newValue:",
        "changeAttributes:",
+       "changeBaseWritingDirection:",
        "changeColor:",
-       "changeCompanyStatus:",
        "changeCount",
        "changeCurrentDirectoryPath:",
        "changeDestinationToPoint:",
        "changeDestinationToRect:",
+       "changeDisplayedColorName:",
        "changeDocumentBackgroundColor:",
-       "changeFieldLabel:",
        "changeFileAttributes:atPath:",
        "changeFont:",
+       "changeFontTrait:",
        "changeInLength",
-       "changeInstantField:",
        "changeOptionsPanelSettings:",
-       "changePassword:toNewPassword:",
-       "changeSaveType:",
        "changeSpelling:",
        "changeToolbarDisplayMode:",
-       "changeValue:forKey:",
        "changeWillBeUndone:",
        "changeWindowFrameSizeByDelta:display:animate:",
        "changeWindowsItem:title:filename:",
-       "changedGroups:",
-       "changedMembers:",
-       "changedValues",
        "charIndex",
+       "charRefToUnicode:",
        "charValue",
        "character:hasNumericProperty:",
        "character:hasProperty:",
        "characterAtIndex:",
        "characterCollection",
-       "characterDataImpl",
+       "characterEncoding",
        "characterIdentifier",
        "characterIndexForGlyphAtIndex:",
        "characterIndexForPoint:",
        "characterIsMember:",
+       "characterRange",
        "characterRangeForGlyphRange:actualGlyphRange:",
-       "characterSetCoveredByFont:language:",
        "characterSetWithBitmapRepresentation:",
        "characterSetWithCharactersInString:",
        "characterSetWithContentsOfFile:",
@@ -6592,37 +7820,33 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "characters",
        "charactersIgnoringModifiers",
        "charactersToBeSkipped",
-       "chatWithPerson:",
+       "cheapBlur",
+       "cheapBlurROI:::",
+       "check:",
        "checkContentPolicyForResponse:",
        "checkForAuthenticationFailureInHTTPResponse:withURL:",
        "checkForRemovableMedia",
+       "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:",
        "checkSpaceForParts",
        "checkSpelling:",
-       "checkSpellingOfString:startingAt:",
        "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:",
        "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:",
        "childAtIndex:",
-       "childContext",
        "childCount",
        "childFrames",
+       "childGlyphStorageWithGlyphRange:cleanCopy:",
        "childItemWithName:",
-       "childNodes",
-       "childNodesMatchingString:",
-       "childSpecifier",
+       "childOfNode:atIndex:",
+       "childStore:didForgetObjectsWithObjectIDs:",
+       "childStores",
        "childWindows",
-       "childWithName:",
        "children",
+       "childrenChanged",
+       "childrenKeyPath",
+       "chineseCalendar",
        "chooseButtonPressed:",
-       "chooseCustomImage:",
-       "chooseFilename:",
-       "chooseRollOverIdentifier:withSelection:",
-       "chooseSize:",
-       "chooseSizeFromField:",
-       "chooseSizeFromList:",
-       "chooseSizeFromSlider:",
        "class",
        "classCode",
-       "classDelegate",
        "classDescription",
        "classDescriptionForClass:",
        "classDescriptionForDestinationKey:",
@@ -6630,63 +7854,54 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "classDescriptionForKey:",
        "classDescriptionForKeyPath:",
        "classDescriptionWithAppleEventCode:",
+       "classDescriptions",
+       "classDescriptionsByName",
        "classDescriptionsInSuite:",
+       "classFallbacksForKeyedArchiver",
        "classForArchiver",
        "classForClassName:",
        "classForCoder",
        "classForKeyedArchiver",
        "classForKeyedUnarchiver",
        "classForPortCoder",
-       "classHintsForKeyedArchiver",
        "className",
        "classNameDecodedForArchiveClassName:",
-       "classNameEncodedForTrueClassName:",
        "classNameForClass:",
        "classNamed:",
        "classPropertyKeys",
-       "classTerminologyDictionary:",
-       "cleanUp",
        "cleanUpAfterDragOperation",
-       "cleanUpCardState",
        "cleanUpForRetry",
        "cleanUpOperation",
        "clear",
        "clear:",
-       "clearAll",
-       "clearAllFieldVisiblity",
+       "clearAllModelObjectObserving",
        "clearAsMainCarbonMenuBar",
        "clearAttributesCache",
-       "clearBackingStore",
-       "clearCacheForGroup:",
+       "clearCaches",
+       "clearChildren",
+       "clearClipping",
        "clearColor",
        "clearControlTintColor",
+       "clearController",
        "clearConversationRequest",
        "clearCurrentContext",
-       "clearCustomImage:",
-       "clearDataFileInfo",
-       "clearDirectoriesSelection",
-       "clearDirectoryResults",
-       "clearDirectoryResultsSelection",
+       "clearCurrentValues",
        "clearDrawable",
-       "clearField:",
        "clearFilterCache",
        "clearGLContext",
        "clearGlyphCache",
-       "clearGroupsSelection",
        "clearMarkedRange",
-       "clearMembersSelection",
        "clearNewAvailableData",
-       "clearPrivateFields",
        "clearProperties",
        "clearRecentDocuments:",
-       "clearSearchField",
-       "clearSearchField:",
-       "clearShadow",
-       "clearTempClickedRow",
-       "clearTemporaryCaches",
+       "clearRolloverTrackingRect",
+       "clearStartAnimation",
+       "clearStopAnimation",
+       "clearTableParameters",
+       "clearsFilterPredicateOnInsertion",
        "clickCount",
        "clickableContentRectForBounds:",
-       "clicked:",
+       "clicked",
        "clickedColumn",
        "clickedOnLink:atIndex:",
        "clickedRow",
@@ -6694,34 +7909,34 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "clientView",
        "clientWrapperWithRealClient:",
        "clip:",
+       "clipForDrawingRow:column:",
        "clipFrameChanged:",
        "clipRect:",
        "clipToQDRegion:",
        "clippedItems",
        "clipviewBoundsChangedNotification:",
-       "cloneNode:",
+       "clockPreferencesChanged:",
+       "cloneRange",
        "close",
        "close:",
        "closeAllDocuments",
        "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",
        "closeButton",
-       "closeDataFile",
        "closeFile",
        "closePath",
        "closeResourceFile:",
        "closeSpellDocumentWithTag:",
        "closeURL",
        "closeWidgetInView:withButtonID:action:",
-       "closeWindowForPerson:",
        "closeWindowSoon",
        "closedHandCursor",
        "closestTickMarkValueToValue:",
        "coalesceAffectedRange:replacementRange:selectedRange:text:",
        "coalesceInTextView:affectedRange:replacementRange:",
        "coalesceTextDrawing",
+       "cocoaSubVersion",
        "cocoaVersion",
        "code",
-       "codeSegment",
        "coerceArray:toColor:",
        "coerceColor:toArray:",
        "coerceColor:toData:",
@@ -6737,28 +7952,33 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "coerceValue:toClass:",
        "collapseItem:",
        "collapseItem:collapseChildren:",
-       "collator:",
+       "collapsed",
        "collatorElementWithName:",
        "collatorWithName:",
        "collectResources",
-       "collectionNames",
        "color",
        "colorAtIndex:filtered:",
-       "colorForControlTint:",
-       "colorForProperty:",
        "colorFromPasteboard:",
        "colorFromPoint:",
        "colorList",
        "colorListChanged:",
        "colorListNamed:",
-       "colorMask",
+       "colorMatrixBiasKernel",
        "colorNameComponent",
        "colorPanel",
        "colorPanelColorChanged:",
+       "colorPanelColorDidChange:",
        "colorPanelDidSelectColorPicker:",
+       "colorProfile",
+       "colorSpace",
+       "colorSpaceForColorSpaceName:",
+       "colorSpaceModel",
        "colorSpaceName",
+       "colorSwathesChangedInAnotherApplicationNotification:",
        "colorSyncData",
+       "colorSyncProfile",
        "colorTable",
+       "colorUsingColorSpace:",
        "colorUsingColorSpaceName:",
        "colorUsingColorSpaceName:device:",
        "colorWithAlphaComponent:",
@@ -6766,101 +7986,112 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "colorWithCalibratedRed:green:blue:alpha:",
        "colorWithCalibratedWhite:alpha:",
        "colorWithCatalogName:colorName:",
+       "colorWithColorSpace:components:count:",
        "colorWithDeviceCyan:magenta:yellow:black:alpha:",
        "colorWithDeviceHue:saturation:brightness:alpha:",
        "colorWithDeviceRed:green:blue:alpha:",
        "colorWithDeviceWhite:alpha:",
        "colorWithKey:",
        "colorWithPatternImage:",
+       "colorWithRed:green:blue:",
+       "colorWithRed:green:blue:alpha:",
+       "colorWithString:",
        "colorizeByMappingGray:toColor:blackMapping:whiteMapping:",
        "column",
        "columnAtPoint:",
+       "columnAutoresizingStyle",
        "columnContentWidthForColumnWidth:",
-       "columnFilters",
-       "columnNumber",
+       "columnDefinitions",
+       "columnName",
        "columnOfMatrix:",
        "columnResizeButtonImage",
        "columnResizeButtonRect",
        "columnResizingType",
-       "columnTitleForIdentifier:",
-       "columnTitleForProperty:",
+       "columnSpan",
        "columnWidthForColumnContentWidth:",
        "columnWithIdentifier:",
        "columnsAutosaveName",
        "columnsInRect:",
-       "combineStructures:withCustom:",
+       "columnsToFetch",
+       "comboBox:completedString:",
        "comboBox:indexOfItemWithStringValue:",
        "comboBox:objectValueForItemAtIndex:",
        "comboBoxCell:completedString:",
        "comboBoxCell:indexOfItemWithStringValue:",
        "comboBoxCell:objectValueForItemAtIndex:",
-       "comboBoxCellSelectionDidChange:",
-       "comboBoxCellSelectionIsChanging:",
-       "comboBoxCellWillDismiss:",
-       "comboBoxCellWillPopUp:",
        "comboBoxTextDidEndEditing:",
+       "command",
        "commandClassName",
        "commandDescription",
        "commandDescriptionWithAppleEventClass:andAppleEventCode:",
+       "commandDescriptions",
+       "commandDescriptionsByName",
        "commandDescriptionsInSuite:",
        "commandDisplay",
        "commandName",
-       "commandTerminologyDictionary:",
+       "commandWithEditCommand:",
        "commands",
        "comment",
-       "commentImpl",
        "commentURL",
-       "commentWithImpl:",
+       "commitChanges:",
        "commitEditing",
-       "commitPendingChanges",
-       "commitPendingChangesAndSave:",
-       "commonPrefixWithString:options:",
+       "commitEditingWithDelegate:didCommitSelector:contextInfo:",
+       "commitTransaction",
+       "committedSnapshotForObject:",
+       "commonAncestorContainer",
        "compare:",
        "compare:options:",
        "compare:options:range:",
        "compare:options:range:locale:",
-       "compareAscending:",
-       "compareCaseInsensitiveAscending:",
-       "compareCaseInsensitiveDescending:",
-       "compareContainsSubString:",
-       "compareContainsSubStringCaseInsensitive:",
-       "compareDescending:",
+       "compareBoundaryPoints::",
        "compareGeometry:",
+       "compareGeometryInWindowCoordinates:",
        "compareObject:toObject:",
-       "comparePrefixMatch:",
-       "comparePrefixMatchCaseInsensitive:",
+       "compareObjectValue:toObjectValue:",
        "compareSelector",
-       "compareWithRecordValue:",
+       "comparisonPredicateModifier",
        "compileAndReturnError:",
        "complete:",
-       "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:",
+       "completedSpoolToFile",
        "completedString:",
        "completes",
-       "completionEnabled",
+       "completionDelay",
        "completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:",
        "completionsForPartialWordRange:indexOfSelectedItem:",
        "components",
        "componentsJoinedByString:",
        "componentsSeparatedByString:",
-       "componentsToDisplayForPath:",
-       "compositeName",
        "compositeToPoint:fromRect:operation:",
        "compositeToPoint:fromRect:operation:fraction:",
        "compositeToPoint:operation:",
        "compositeToPoint:operation:fraction:",
-       "computeCountForKey:",
+       "compoundPredicateType",
+       "computeButton",
+       "computeFigureRectangle:",
+       "computeHighlight",
+       "computeInlay",
+       "computeInsideShadow",
+       "computeInterpolatedResolution:data:",
+       "computeLinearA:andB:fromX0:y0:x1:y1:",
+       "computeOutline",
+       "computeOutsideShadow",
+       "computePageRectsWithPrintWidthScaleFactor:printHeight:",
+       "computeRectOfRow:cacheHint:",
+       "computeRowAtPoint:cacheHint:",
+       "computeTableHeight",
        "concat",
        "concat:",
+       "concludeDragForDraggingInfo:",
+       "concludeDragForDraggingInfo:actionMask:",
        "concludeDragOperation:",
-       "condition",
+       "conditionalBehaviorOffByDefault:",
        "conditionallySetsEditable",
        "conditionallySetsEnabled",
        "conditionallySetsHidden",
-       "configNode",
        "configurationDictionary",
-       "configurationPaletteIsRunning",
-       "configureAsServer",
-       "configureForActiveStateWithCurrentDirectoryNode:",
+       "configurationName",
+       "configurations",
+       "configureForActiveState",
        "configureForAllowsExpandingMultipleDirectories:",
        "configureForAllowsMultipleSelection:",
        "configureForCalculatesAllSizes:",
@@ -6871,25 +8102,29 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "configureForDisplayedFileProperties:",
        "configureForInactiveState",
        "configureForLayoutInDisplayMode:andSizeMode:inToolbarView:",
+       "configureForRolloverTrackingIfNecessary",
+       "configureForRolloverTrackingIfNecessaryForClipViewFrameChange",
        "configureForShowsPreviews:",
        "configureForSortedByFileProperty:ascending:caseSensitive:",
        "configureForTreatsDirectoryAliasesAsDirectories:",
        "configureForTreatsFilePackagesAsDirectories:",
+       "configurePersistentStoreCoordinatorForURL:ofType:error:",
        "confirmCloseSheetIsDone:returnCode:contextInfo:",
-       "confirmSheet:",
        "conformsTo:",
        "conformsToProtocol:",
-       "connectToLDAPServer:",
+       "connect",
        "connectedToInternet:",
        "connection",
        "connection:didCancelAuthenticationChallenge:",
-       "connection:didFailLoadingWithError:",
        "connection:didFailWithError:",
        "connection:didReceiveAuthenticationChallenge:",
        "connection:didReceiveData:",
+       "connection:didReceiveData:lengthReceived:",
        "connection:didReceiveResponse:",
+       "connection:handleRequest:",
+       "connection:shouldMakeNewConnection:",
+       "connection:willCacheResponse:",
        "connection:willSendRequest:redirectResponse:",
-       "connectionDidDie:",
        "connectionDidFinishLoading:",
        "connectionForProxy",
        "connectionWasBroken:",
@@ -6897,14 +8132,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "connectionWithReceivePort:sendPort:",
        "connectionWithRegisteredName:host:",
        "connectionWithRegisteredName:host:usingNameServer:",
-       "connectionWithRequest:delegate:",
-       "connectionsCount",
+       "connectionsForKey:",
+       "constantValue",
        "constrainFrameRect:toScreen:",
        "constrainResizeEdge:withDelta:elapsedTime:",
        "constrainScrollPoint:",
-       "consumeImageData:forTag:",
-       "consumeJobEntry:",
+       "constraintDefinitions",
        "containerClassDescription",
+       "containerComponent",
        "containerIsObjectBeingTested",
        "containerIsRangeContainerObject",
        "containerNode",
@@ -6912,46 +8147,52 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "containerSize",
        "containerSpecifier",
        "containsAttachments",
-       "containsGroupName:",
        "containsIndex:",
-       "containsIndexes:",
        "containsIndexesInRange:",
-       "containsItem:",
+       "containsItemForURLLatin1:length:",
        "containsItemForURLString:",
-       "containsKey:",
+       "containsItemForURLUnicode:length:",
        "containsObject:",
-       "containsObject:inRange:",
        "containsObjectIdenticalTo:",
-       "containsObjectsNotIdenticalTo:",
        "containsPoint:",
        "containsPort:forMode:",
        "containsRect:",
-       "containsTimer:forMode:",
        "containsURL:",
        "containsValueForKey:",
        "content",
        "contentAlpha",
-       "contentAspectRatio",
        "contentBinder",
+       "contentCountWithEditedMode:",
+       "contentDocument",
        "contentFill",
+       "contentFrame",
+       "contentKind",
        "contentMaxSize",
        "contentMinSize",
+       "contentObjectKey",
+       "contentObjectWithEditedMode:contentIndex:",
        "contentRect",
        "contentRectForFrameRect:",
        "contentRectForFrameRect:styleMask:",
-       "contentResizeIncrements",
        "contentSize",
        "contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:",
+       "contentValueKey",
+       "contentValueWithEditedMode:contentIndex:",
        "contentView",
-       "contentViewMargins",
+       "contentWidth",
+       "contentWidthValueType",
        "contentsAtPath:",
        "contentsEqualAtPath:andPath:",
        "context",
-       "contextForSecondaryThread",
        "contextHelpForKey:",
        "contextHelpForObject:",
        "contextID",
-       "contextMenuRepresentation",
+       "contextMenuItemsForElement:",
+       "contextWithBitmap:rowBytes:bounds:format:options:",
+       "contextWithCGContext:",
+       "contextWithCGContext:options:",
+       "contextWithCGLContext:pixelFormat:options:",
+       "contextWithOptions:",
        "continue",
        "continueAfterBytesAvailable",
        "continueAfterContentPolicy:",
@@ -6959,11 +8200,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "continueAfterEndEncountered",
        "continueAfterNavigationPolicy:formState:",
        "continueBeginLoadInBackgroundAfterCreatingHTTPRequest",
-       "continueHeaderReadAfter3xxResponseAndCall:",
-       "continueHeaderReadAfterFailureResponseAndCall:",
+       "continueHeaderReadAfterFailureResponse",
        "continueTracking:at:inView:",
        "continueTrackingWithEvent:",
        "continueWithoutCredentialForAuthenticationChallenge:",
+       "continuouslyUpdatesValue",
+       "control",
        "control:didFailToFormatString:errorDescription:",
        "control:didFailToFormatString:errorDescription:inFrame:",
        "control:didFailToValidatePartialString:errorDescription:",
@@ -6974,8 +8216,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "control:textShouldBeginEditing:inFrame:",
        "control:textShouldEndEditing:",
        "control:textShouldEndEditing:inFrame:",
+       "control:textView:completions:forPartialWordRange:",
+       "control:textView:completions:forPartialWordRange:indexOfSelectedItem:",
        "control:textView:doCommandBySelector:",
        "control:textView:doCommandBySelector:inFrame:",
+       "control:textView:shouldHandleEvent:",
+       "control:textView:shouldHandleEvent:inFrame:",
        "controlAlternatingRowBackgroundColors",
        "controlAlternatingRowColor",
        "controlBackgroundColor",
@@ -6983,6 +8229,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "controlColor",
        "controlContentFontOfSize:",
        "controlDarkShadowColor",
+       "controlDrawsSelectionHighlights",
        "controlFillColor",
        "controlHighlightColor",
        "controlLightHighlightColor",
@@ -6997,27 +8244,25 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "controlTextDidChange:inFrame:",
        "controlTextDidEndEditing:",
        "controlTextDidEndEditing:inFrame:",
-       "controlTint",
        "controlView",
-       "controlViewWillBecomeFirstResponder:",
-       "controlViewWillResignFirstResponder:",
        "controller",
+       "controller:didChangeToFilterPredicate:",
+       "controller:didChangeToSelectionIndexPaths:",
+       "controller:didChangeToSelectionIndexes:",
+       "controller:didChangeToSortDescriptors:",
        "controllerForBinding:",
        "controlsInForm:",
-       "conversation",
        "conversationIdentifier",
        "conversationRequest",
        "convertAttributes:",
        "convertBaseToScreen:",
-       "convertCharacters:length:toGlyphs:skipControlCharacters:",
+       "convertCString:toUnsignedInt64:withBase:",
        "convertFont:",
-       "convertFont:toApproximateTraits:",
        "convertFont:toFace:",
        "convertFont:toFamily:",
        "convertFont:toHaveTrait:",
        "convertFont:toNotHaveTrait:",
        "convertFont:toSize:",
-       "convertOldFactor:newFactor:",
        "convertPoint:fromView:",
        "convertPoint:toView:",
        "convertRect:fromView:",
@@ -7025,12 +8270,13 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "convertScreenToBase:",
        "convertSize:fromView:",
        "convertSize:toView:",
+       "convertStringToUChar:",
+       "convertToDictionary",
+       "convertToRGBA:",
        "convertType:data:to:inPasteboard:usingFilter:",
-       "convertUnicodeCharacters:length:toGlyphs:",
        "convertWeight:ofFont:",
-       "converterLockFileName",
+       "convolveROI:forRect:",
        "cookieAcceptPolicy",
-       "cookieRequestHeaderFieldsForURL:",
        "cookieWithProperties:",
        "cookieWithV0Spec:forURL:locationHeader:",
        "cookies",
@@ -7041,8 +8287,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "copiesOnScroll",
        "copy",
        "copy:",
-       "copy:into:",
-       "copyAttributesFromContext:withMask:",
+       "copyBindingsFromObject:toObject:",
+       "copyCachedInstance",
        "copyDOMNode:copier:",
        "copyDOMTree:",
        "copyDropDirectory",
@@ -7053,23 +8299,27 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "copyLinkToClipboard:",
        "copyOfCalendarDate",
        "copyPath:toPath:handler:",
+       "copyPreviewIcon",
        "copyRenderNode:copier:",
        "copyRenderTree:",
        "copyRuler:",
        "copySerializationInto:",
+       "copyToObject:",
        "copyWithZone:",
        "copyright",
        "cornerView",
+       "correlation",
+       "correlationTableName",
        "count",
        "countFiltered:",
-       "countForKey:",
+       "countForIndexPath:",
+       "countForNode:",
        "countForObject:",
-       "countOccurrences:",
-       "countWordsInString:language:",
+       "countKeyPath",
+       "countOfCachedChildrenForNode:",
        "coveredCharacterCache",
+       "coveredCharacterCacheData",
        "coveredCharacterSet",
-       "coversAllCharactersInString:",
-       "coversCharacter:",
        "crayonAtIndex:",
        "crayonClosestToIndex:",
        "crayonToLeft",
@@ -7077,101 +8327,113 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "crayonToRight",
        "crayonToRightOfCrayon:",
        "crayons",
-       "createAttribute:",
-       "createAttributeNS::",
-       "createCDATASection:",
+       "createAdapterOperationsForDatabaseOperation:",
+       "createAndCacheRowHeightSumsIfNecessary",
+       "createCGImage:",
+       "createCGImage:format:",
+       "createCGImage:fromRect:format:",
+       "createCMYKColorSpace",
+       "createCSSStyleDeclaration",
+       "createCTTypesetter",
        "createChildFrameNamed:withURL:renderPart:allowsScrolling:marginWidth:marginHeight:",
        "createClassDescription",
        "createCommandInstance",
        "createCommandInstanceWithZone:",
-       "createComment:",
+       "createConnection",
        "createContext",
+       "createConversationForConnection:",
+       "createCopy:",
        "createDictHashTable:",
        "createDirectoryAtPath:attributes:",
-       "createDocument:::",
        "createDocumentFragment",
-       "createDocumentType:::",
-       "createDragProgressWindow:forRow:",
        "createElement:",
-       "createElementNS::",
-       "createEntityReference:",
+       "createElementContent:",
+       "createElementContentFromString:",
        "createFTPReadStream",
        "createFileAtPath:contents:attributes:",
-       "createFirstLastSortingNamePart1:part2:",
+       "createGrayColorSpace",
        "createKHTMLViewWithNSView:marginWidth:marginHeight:",
        "createKeyValueBindingForKey:typeMask:",
-       "createLastFirstSortingNamePart1:part2:",
-       "createProcessingInstruction::",
+       "createMDQueryNodeRefIfNecessary",
+       "createMetadata",
+       "createNamedNodeFromNode:reader:",
+       "createPredicateForFetchFromPredicate:",
+       "createRGBColorSpace",
        "createRandomKey:",
+       "createRange",
        "createRealObject",
+       "createSchema",
        "createSharedAdapter",
+       "createSharedBridge",
        "createSharedFactory",
+       "createSharedGenerator",
+       "createStream:",
        "createSymbolicLinkAtPath:pathContent:",
-       "createTextNode:",
-       "createTexture:fromView:internalFormat:",
+       "createTablesForEntities:",
        "createUniqueKey:",
        "createWindowWithURL:frameName:",
+       "createsSortDescriptor",
        "creationDate",
        "credentialWithKeychainItem:",
        "credentialWithUser:password:persistence:",
        "credentialsForProtectionSpace:",
        "credits",
-       "crop",
-       "croppedImage",
+       "criticalValue",
        "crosshairCursor",
+       "cssText",
+       "cssValueType",
+       "ctFontRef",
+       "cubeImage",
        "current",
        "currentAppleEvent",
-       "currentCommand",
-       "currentContainer",
+       "currentBrowsingNodePath",
+       "currentButtonCell",
+       "currentButtonClicked:",
+       "currentButtonState",
+       "currentClipRect",
+       "currentConstructionContext",
        "currentContext",
        "currentContextDrawingToScreen",
-       "currentControlTint",
-       "currentConversation",
        "currentCursor",
        "currentDirectory",
        "currentDirectoryNode",
        "currentDirectoryPath",
-       "currentDiskUsage",
        "currentDocument",
        "currentEditor",
-       "currentEditorForEitherField",
-       "currentEditorForSecureField",
        "currentEvent",
        "currentForm",
        "currentFrame",
        "currentFrameDuration",
        "currentHandler",
        "currentHost",
-       "currentImageNumber",
        "currentInputContext",
        "currentInputManager",
        "currentItem",
-       "currentLayoutManager",
-       "currentMainStructure:",
-       "currentMemoryUsage",
+       "currentLocalSearchScopeNode",
+       "currentLocale",
        "currentMode",
        "currentOperation",
        "currentPage",
        "currentParagraphStyle",
-       "currentPassNumber",
-       "currentPicture",
        "currentPluginView",
        "currentPoint",
+       "currentProgress",
        "currentReplyAppleEvent",
+       "currentResolvedDirectoryNode",
        "currentRunLoop",
+       "currentSuiteAppleEventCode",
+       "currentSuiteTerminology",
        "currentTaskDictionary",
        "currentTextContainer",
-       "currentTextStorage",
-       "currentTextView",
        "currentThread",
-       "currentVirtualScreen",
+       "currentTypeSelectDirectoryNode",
+       "currentValue",
        "currentVoiceIdentifier",
        "currentWindow",
        "cursiveFontFamily",
-       "cursor",
        "curveToPoint:controlPoint1:controlPoint2:",
+       "customAttributes",
        "customTextEncodingName",
-       "customUserAgent",
        "customizationPaletteIsRunning",
        "cut:",
        "cyanColor",
@@ -7181,112 +8443,113 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "cycleToNextInputScript:",
        "cycleToNextInputServerInLanguage:",
        "darkGrayColor",
+       "dashboardRegions",
+       "dashboardRegionsChanged:",
        "data",
        "data1",
        "data2",
-       "dataBaseChanged:",
        "dataCell",
        "dataCellForRow:",
-       "dataFile",
-       "dataForFile:",
        "dataForKey:",
+       "dataForObjectID:",
+       "dataForObjectID:withContext:",
+       "dataForPPI:",
+       "dataForResolutionData:",
        "dataForType:",
        "dataForType:fromPasteboard:",
        "dataFromPropertyList:format:errorDescription:",
+       "dataFromRange:documentAttributes:error:",
+       "dataOfType:error:",
        "dataRepresentation",
        "dataRepresentationOfType:",
        "dataSource",
-       "dataSourceCount",
        "dataSourceUpdated:",
-       "dataTypeDoesNotExist:forKey:inCurrentStruct:inCustomStruct:",
+       "dataStampForTriplet:littleEndian:",
        "dataUsingEncoding:",
        "dataUsingEncoding:allowLossyConversion:",
-       "dataValueOfProperty:",
        "dataWithBytes:length:",
        "dataWithBytesNoCopy:length:",
        "dataWithBytesNoCopy:length:freeWhenDone:",
        "dataWithCapacity:",
        "dataWithContentsOfFile:",
+       "dataWithContentsOfFile:options:error:",
        "dataWithContentsOfMappedFile:",
        "dataWithContentsOfURL:",
+       "dataWithContentsOfURL:options:error:",
        "dataWithData:",
        "dataWithEPSInsideRect:",
        "dataWithLength:",
        "dataWithPDFInsideRect:",
-       "databaseChanged:",
-       "databaseChangedExternally:",
-       "databaseChangedForUserInfo:groupsChanged:peopleChanged:",
+       "database",
+       "databaseOperationForGlobalID:",
+       "databaseOperationForObject:",
+       "databaseOperator",
+       "databaseUUID",
+       "databaseVersion",
        "date",
        "dateByAddingYears:months:days:hours:minutes:seconds:",
        "dateFormat",
-       "dateFromISO8601String:",
-       "dateWithCalendarFormat:timeZone:",
-       "dateWithDate:",
+       "datePickerCell:validateProposedDateValue:timeInterval:",
+       "datePickerElements",
+       "datePickerMode",
+       "datePickerStyle",
+       "dateValue",
        "dateWithNaturalLanguageString:",
        "dateWithNaturalLanguageString:date:locale:",
        "dateWithNaturalLanguageString:locale:",
-       "dateWithString:",
-       "dateWithString:calendarFormat:",
        "dateWithString:calendarFormat:locale:",
-       "dateWithTimeInterval:sinceDate:",
        "dateWithTimeIntervalSince1970:",
        "dateWithTimeIntervalSinceNow:",
        "dateWithTimeIntervalSinceReferenceDate:",
        "dateWithYear:month:day:hour:minute:second:timeZone:",
-       "dayOfCommonEra",
        "dayOfMonth",
        "dayOfWeek",
        "dayOfYear",
+       "dbSnapshot",
        "deactivate",
        "dealloc",
+       "deallocAllExpandedNodes",
        "deallocateCFNetworkResources",
+       "deallocatePayloadForObjectID:",
+       "debugDefault",
        "debugDescription",
+       "decObservationCount",
        "decimalDigitCharacterSet",
-       "decimalNumberByAdding:",
        "decimalNumberByAdding:withBehavior:",
        "decimalNumberByDividingBy:",
        "decimalNumberByDividingBy:withBehavior:",
-       "decimalNumberByMultiplyingBy:",
        "decimalNumberByMultiplyingBy:withBehavior:",
-       "decimalNumberByMultiplyingByPowerOf10:",
        "decimalNumberByMultiplyingByPowerOf10:withBehavior:",
-       "decimalNumberByRaisingToPower:",
        "decimalNumberByRaisingToPower:withBehavior:",
        "decimalNumberByRoundingAccordingToBehavior:",
-       "decimalNumberBySubstracting:",
-       "decimalNumberBySubstracting:withBehavior:",
-       "decimalNumberBySubtracting:",
        "decimalNumberBySubtracting:withBehavior:",
        "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:",
        "decimalNumberWithDecimal:",
-       "decimalNumberWithMantissa:exponent:isNegative:",
        "decimalNumberWithString:",
        "decimalNumberWithString:locale:",
        "decimalSeparator",
        "decimalTabMarkerWithRulerView:location:",
        "decimalValue",
        "declareTypes:owner:",
-       "decodeAllIntoBuffer:size:",
+       "decodeAllIntoBuffer:size:useZeroBytesForCRC:",
        "decodeArrayOfObjCType:count:at:",
        "decodeBoolForKey:",
        "decodeBytesForKey:returnedLength:",
        "decodeBytesWithReturnedLength:",
        "decodeClassName:asClassName:",
-       "decodeColumns:",
        "decodeData:",
-       "decodeData:dataForkData:resourceForkData:",
        "decodeDataObject",
        "decodeDoubleForKey:",
+       "decodeDownloadData:dataForkData:resourceForkData:",
+       "decodeDownloadHeader",
+       "decodeDownloadHeader:headerLength:modificationTime:filename:",
        "decodeFloatForKey:",
        "decodeForkWithData:count:CRCCheckFlag:",
-       "decodeHeader",
-       "decodeHeader:headerLength:modificationTime:filename:",
        "decodeInt32ForKey:",
        "decodeInt64ForKey:",
        "decodeIntForKey:",
-       "decodeIntoBuffer:size:",
+       "decodeIntoBuffer:size:useZeroBytesForCRC:",
        "decodeNXColor",
-       "decodeNXObject",
        "decodeObject",
        "decodeObjectForKey:",
        "decodePoint",
@@ -7305,31 +8568,39 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "decomposableCharacterSet",
        "decomposedStringWithCanonicalMapping",
        "decomposedStringWithCompatibilityMapping",
+       "decreaseUseCount",
        "decrementButtonWithParent:",
-       "decrementNumberOfThreadsAlive:withSessionUID:",
-       "decrementOriginLoadCount",
+       "decrementRefCount",
+       "decrementRefCountForObjectID:",
+       "decrementSnapshotCountForGlobalID:",
+       "decryptComponents:",
        "decryptWithDelegate:",
+       "deepNodeCopy:",
+       "deepPropertiesCopy:",
+       "deepSubnodeCopy:",
        "deepestScreen",
-       "defaultAddressBookPreferencesFile",
        "defaultAttachmentScaling",
-       "defaultAttributes",
        "defaultBaselineOffsetForFont:",
        "defaultBehavior",
        "defaultButtonCell",
        "defaultCStringEncoding",
        "defaultCenter",
+       "defaultClassPath",
        "defaultCollator",
-       "defaultConnection",
-       "defaultCountryCode",
+       "defaultCompletionDelay",
        "defaultCredentialForProtectionSpace:",
+       "defaultDateFormatter",
        "defaultDecimalNumberHandler",
        "defaultDepthLimit",
        "defaultFixedFontSize",
        "defaultFlatness",
        "defaultFocusRingType",
        "defaultFontSize",
+       "defaultFormatterBehavior",
+       "defaultHandler",
        "defaultIconSize",
        "defaultIconWithSize:",
+       "defaultLabelFontAttribute",
        "defaultLanguage",
        "defaultLanguageCode",
        "defaultLanguageContext",
@@ -7339,80 +8610,71 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "defaultLineJoinStyle",
        "defaultLineWidth",
        "defaultManager",
+       "defaultMappingGenerator",
        "defaultMenu",
        "defaultMiterLimit",
-       "defaultNameOrdering",
-       "defaultNameServerPortNumber",
-       "defaultObjectValue",
+       "defaultNamespaceForPrefix:",
+       "defaultNamespaceForURI:",
        "defaultParagraphStyle",
        "defaultPixelFormat",
        "defaultPlaceholderForBinding:onObjectClass:",
        "defaultPlaceholderForMarker:withBinding:",
        "defaultPlaceholderLookupClassForBinding:object:",
-       "defaultPortNameServer",
        "defaultPreferencesClass",
        "defaultPrinter",
        "defaultQueue",
-       "defaultRowHeight",
+       "defaultShadowColor",
+       "defaultSortDescriptorPrototypeForTableColumn:",
        "defaultStringDrawingTypesetterBehavior",
        "defaultSubcontainerAttributeKey",
        "defaultTabInterval",
        "defaultTextColor",
        "defaultTextColorWhenObjectValueIsUsed:",
-       "defaultTextEncoding",
        "defaultTextEncodingName",
        "defaultTimeZone",
-       "defaultTimeoutInterval",
+       "defaultTokenizingCharacterSet",
+       "defaultType",
        "defaultTypesetterBehavior",
+       "defaultValue",
+       "defaultValueFontAttribute",
        "defaultVoice",
        "defaultWindingRule",
        "defaultWritingDirectionForLanguage:",
        "defaults",
        "defaultsChanged:",
-       "defaultsDictionary",
        "deferSync",
        "defersCallbacks",
        "defersLoading",
-       "delay",
-       "delayDatabaseCleanup",
-       "delayWindowOrdering",
+       "definition",
+       "delayedProcessGetInfoButtonClick:",
+       "delayedProcessLogonButtonClick:",
        "delegate",
-       "delegateBased",
-       "delegatedObject",
-       "delete",
        "delete:",
-       "deleteAction:",
        "deleteBackward:",
-       "deleteBackwardByDecomposingPreviousCharacter:",
        "deleteCharactersInRange:",
-       "deleteConfirmSheetDidEnd:returnCode:contextInfo:",
-       "deleteCookie:",
        "deleteCookies:",
-       "deleteData::",
-       "deleteForward:",
+       "deleteCorrelation:",
        "deleteGlyphsInRange:",
-       "deleteKey:",
+       "deleteImageTexture:name:userInfo:",
+       "deleteKeyPressed",
        "deleteLastCharacter",
+       "deleteObject:",
        "deleteObjectsInRange:",
-       "deleteToBeginningOfLine:",
-       "deleteToBeginningOfParagraph:",
-       "deleteToEndOfLine:",
-       "deleteToEndOfParagraph:",
-       "deleteToMark:",
-       "deleteWordBackward:",
-       "deleteWordForward:",
-       "deletedGroups:",
-       "deletedMembers:",
+       "deleteRow:",
+       "deleteRows:atIndex:",
+       "deleteRule",
+       "deleteSelectionWithSmartDelete:",
+       "deletedObjects",
+       "deletesObjectsOnRemove",
+       "deliverResource",
+       "deliverResourceAfterDelay",
        "deliverResult",
        "deltaX",
        "deltaY",
        "deltaZ",
        "deminiaturize:",
-       "departmentFieldPresent",
        "depth",
        "depthLimit",
-       "dequeueNotificationsMatching:coalesceMask:",
-       "dereferencedEntity:",
        "descender",
        "descent",
        "description",
@@ -7420,7 +8682,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "descriptionForInstanceMethod:",
        "descriptionForMIMEType:",
        "descriptionForMethod:",
-       "descriptionInStringsFileFormat",
+       "descriptionForOptionalSubelementName:",
        "descriptionWithCalendarFormat:",
        "descriptionWithCalendarFormat:locale:",
        "descriptionWithCalendarFormat:timeZone:locale:",
@@ -7430,7 +8692,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "descriptorByTranslatingObject:ofType:inSuite:",
        "descriptorForKeyword:",
        "descriptorType",
-       "descriptorWithBoolean:",
        "descriptorWithDescriptorType:bytes:length:",
        "descriptorWithDescriptorType:data:",
        "descriptorWithEnumCode:",
@@ -7441,23 +8702,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "deselectAll:",
        "deselectAllCells",
        "deselectColumn:",
-       "deselectDirectoryResultRow:subrow:",
-       "deselectGroup:",
-       "deselectIdentifier:forPerson:",
        "deselectItemAtIndex:",
-       "deselectMemberRow:subrow:",
-       "deselectRecord:",
        "deselectRow:",
-       "deselectRow:subrow:",
        "deselectSelectedCell",
+       "deselectText",
        "deserializeAlignedBytesLengthAtCursor:",
-       "deserializeBytes:length:atCursor:",
        "deserializeData:",
-       "deserializeDataAt:ofObjCType:atCursor:context:",
        "deserializeIntAtCursor:",
        "deserializeIntAtIndex:",
        "deserializeInts:count:atCursor:",
-       "deserializeInts:count:atIndex:",
        "deserializeList:",
        "deserializeListItemIn:at:length:",
        "deserializeNewData",
@@ -7466,226 +8719,206 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "deserializeNewObject",
        "deserializeNewPList",
        "deserializeNewString",
+       "deserializeObjectAt:ofObjCType:fromData:atCursor:",
        "deserializePList:",
        "deserializePListKeyIn:",
        "deserializePListValueIn:key:length:",
        "deserializePropertyListFromData:atCursor:mutableContainers:",
        "deserializePropertyListFromData:mutableContainers:",
-       "deserializePropertyListLazilyFromData:atCursor:length:mutableContainers:",
-       "deserializeServers:",
        "deserializeString:",
        "deserializer",
-       "deserializerStream",
+       "destKey",
+       "destNode",
        "destination",
+       "destinationAttributeName",
+       "destinationEntity",
+       "destinationEntityExternalName",
+       "destinationsForRelationship:",
        "destroyAllPlugins",
        "destroyContext",
        "destroyStream:reason:",
-       "destroyStreamWithReason:",
+       "destroyStreamWithError:",
+       "detach",
        "detachColorList:",
-       "detachDrawingThread:toTarget:withObject:",
+       "detachInstanceInfo:",
        "detachNewThreadSelector:toTarget:withObject:",
+       "detachQButton",
+       "detachQComboBox",
+       "detachQLineEdit",
+       "detachQScrollBar",
+       "detachQSlider",
+       "detachQTextEdit",
        "detachSubmenu",
-       "detailedDescription",
        "detailedDescriptionForClass:",
+       "determineContentEncoding",
        "determineErrorAndFail",
+       "determineHTTPEncodingFromString:",
        "determineTransferEncoding",
-       "developmentLocalization",
+       "deviceCMYKColorSpace",
        "deviceDescription",
+       "deviceGrayColorSpace",
        "deviceID",
+       "deviceRGBColorSpace",
        "dictionary",
-       "dictionaryForKey:",
+       "dictionaryForOptionalSubelementName:",
        "dictionaryInfo:",
+       "dictionaryNesting:",
        "dictionaryRepresentation",
        "dictionaryWithCapacity:",
        "dictionaryWithContentsOfFile:",
-       "dictionaryWithContentsOfURL:",
        "dictionaryWithDictionary:",
        "dictionaryWithObject:forKey:",
        "dictionaryWithObjects:forKeys:",
        "dictionaryWithObjects:forKeys:count:",
        "dictionaryWithObjectsAndKeys:",
        "dictionaryWithValuesForKeys:",
+       "didAccessValueForKey:",
        "didAddCredentials:toRequest:context:",
        "didAddSubview:",
+       "didCancelAuthenticationChallenge:",
        "didChange",
        "didChange:valuesAtIndexes:forKey:",
+       "didChangeExpandedNodes",
        "didChangeText",
        "didChangeValueForKey:",
+       "didChangeValueForKey:withSetMutation:usingObjects:",
+       "didChangeValuesForArrangedKeys:objectKeys:indexKeys:",
        "didEndAlert:returnCode:contextInfo:",
        "didEndSheet:returnCode:contextInfo:",
+       "didFailWithError:",
        "didFinishColumnScrollWithHelper:",
+       "didFinishLoading",
+       "didFirstLayout",
        "didLoadBytes:loadComplete:",
        "didLoadData:",
-       "didNotOpenURL:",
+       "didNotOpenURL:pageCache:",
+       "didPostNotificationForNodeEventKind:notification:",
+       "didReceiveAuthenticationChallenge:",
+       "didReceiveData:lengthReceived:",
+       "didReceiveResponse:",
+       "didSave",
+       "didSendActionNotification:",
+       "didSetName:",
        "didStart",
+       "didTurnIntoFault",
+       "differenceParameter:new:old:into:",
        "directDataAvailable:",
        "directDataComplete",
        "directParameter",
-       "directionalType:",
-       "directories",
-       "directoriesController",
-       "directoriesGroup",
-       "directoriesPane",
-       "directoriesSelectionChanged:",
        "directory",
-       "directoryAtIndex:",
-       "directoryAttributes",
        "directoryCanBeCreatedAtPath:",
        "directoryContentsAtPath:",
        "directoryContentsAtPath:matchingExtension:options:keepExtension:",
-       "directoryDataHasArrived:",
-       "directoryResultAtIndex:",
-       "directoryResults",
-       "directoryResultsController",
-       "directoryResultsPane",
-       "directoryResultsSelectionChanged:",
-       "directoryResultsSubrows",
-       "directorySelectionPopUpButtonClick:",
-       "directoryServicesNodes",
-       "directoryServicesServer",
-       "directoryServicesServer:",
        "disableCursorRects",
-       "disableDelegateMessages",
        "disableDisplayPositing",
        "disableFlush",
        "disableFlushWindow",
        "disableHeartBeating",
        "disableKeyEquivalentForDefaultButtonCell",
-       "disableSelectionChanging",
-       "disableUndoRegistration",
+       "disableMakeHistory",
+       "disableUpdates",
        "disabledControlTextColor",
-       "disabledImageForControlTint:",
-       "disabledSelectedImageForControlTint:",
-       "disabledUnselectedImage",
-       "discardCachedImage",
+       "disabledWhenInactive",
+       "disappearingItemCursor",
        "discardCursorRects",
        "discardEditing",
        "discardEventsMatchingMask:beforeEvent:",
-       "disconnect:",
-       "diskCapacity",
+       "disconnect",
        "dismissPopUp",
        "dismissPopUp:",
        "dispatch",
-       "dispatchDoubleAction:",
-       "dispatchGroupDoubleClick:",
-       "dispatchGroupSelection:",
+       "dispatchEvent:",
        "dispatchInvocation:",
-       "dispatchNameDoubleClick:",
-       "dispatchNameSelection:",
-       "dispatchPropertyChanged:",
        "dispatchRawAppleEvent:withRawReply:handlerRefCon:",
-       "dispatchValueSelection:",
+       "displaceROI:forRect:userInfo:",
        "display",
-       "displayAllColumns",
-       "displayColumn:",
-       "displayCompletions:forPartialWordRange:originalString:atPoint:forTextView:",
+       "displayCompletions:indexOfSelectedItem:forPartialWordRange:originalString:atPoint:forTextView:",
        "displayIfNeeded",
        "displayIfNeededIgnoringOpacity",
        "displayIfNeededInRect:",
        "displayIfNeededInRectIgnoringOpacity:",
        "displayIgnoringOpacity",
-       "displayImageInPicker:",
        "displayMode",
        "displayName",
        "displayNameAtPath:",
-       "displayNameForKey:",
-       "displayNameForObjectName:",
        "displayNameForType:",
        "displayPattern",
        "displayRect:",
        "displayRectIgnoringOpacity:",
        "displayStateForNode:",
+       "displayString",
        "displayStringForLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:",
        "displayStringsForAttributes:includeBoldItalic:",
        "displayStringsForParagraphStyle:",
-       "displayTitleInPicker:",
        "displayToolTip:",
        "displayValueForObjectValue:",
-       "displayableSampleText",
-       "displayableSampleTextForLanguage:",
        "displayableString",
-       "displayedCard",
-       "displayedColumns",
-       "displayedCommandsTitle",
        "displayedFileProperties",
-       "displayedGroups",
-       "displayedMemberMatching:",
-       "displayedMembers",
-       "displayedMembersSubrows",
-       "displayedProperties",
-       "displayedProperty",
-       "displayedRecords",
        "displayedStringsArray",
        "displayedTitle",
+       "displaysEnabledAtRow:",
+       "displaysTokenWhileEditing",
        "displaysTooltips",
+       "displaysWhenScreenProfileChanges",
+       "disposeGlyphStack",
        "dissolveToPoint:fraction:",
        "dissolveToPoint:fromRect:fraction:",
        "distantFuture",
        "distantPast",
-       "distributionIdentifierForProperty:person:",
-       "distributionIndexForProperty:person:",
-       "distributionStringsForMembers",
-       "distributionValueForProperty:person:",
+       "divide:by:",
        "dividerThickness",
-       "doAwakeFromNib",
+       "doCalcDrawInfo:",
        "doClick:",
-       "doClose:",
        "doCommandBySelector:",
        "doCommandBySelector:client:",
-       "doDelete:",
-       "doDeleteInReceiver:",
+       "doCompletion",
        "doDoubleClick:",
-       "doFileCompletion:",
-       "doIconify:",
-       "doIt",
+       "doFileCompletion:isAutoComplete:reverseCycle:",
        "doProgressiveLoad",
        "doProgressiveLoadHeader",
        "doProgressiveLoadImage",
        "doQueuedWork",
-       "doRemoveFromGroup",
-       "doSelectAll:",
+       "doRegexForString:pattern:flags:",
        "docFormatData",
-       "docFormatFromRange:documentAttributes:",
        "dockTitleIsGuess",
-       "doctype",
        "document",
+       "documentAttribute:",
        "documentAttributes",
        "documentClassForType:",
+       "documentClassNames",
+       "documentContentKind",
        "documentCursor",
        "documentEdited",
        "documentElement",
        "documentForFileName:",
+       "documentForURL:",
        "documentForWindow:",
-       "documentFragmentImpl",
-       "documentFragmentWithImpl:",
-       "documentImpl",
+       "documentFragmentForDocument:",
+       "documentFragmentWithMarkupString:baseURLString:",
+       "documentFragmentWithText:",
        "documentRect",
        "documentRef",
        "documentSource",
        "documentState",
-       "documentTypeImpl",
-       "documentTypeWithImpl:",
        "documentView",
+       "documentViewAtWindowPoint:",
        "documentVisibleRect",
-       "documentWithImpl:",
        "documents",
        "doesContain:",
        "doesNotRecognize:",
        "doesNotRecognizeSelector:",
-       "doesPropertyExist:inTable:",
        "domain",
        "done",
+       "doneLoading",
+       "doneProcessingData",
+       "doneSendingPopUpAction:",
        "doneTrackingMenu:",
        "doubleAction",
-       "doubleAction:",
-       "doubleClickAction",
        "doubleClickAtIndex:",
        "doubleClickAtIndex:inRange:",
        "doubleClickHandler",
        "doubleClickInString:atIndex:useBook:",
-       "doubleForKey:",
        "doubleValue",
-       "doubleValueOfProperty:",
        "download",
        "download:decideDestinationWithSuggestedFilename:",
        "download:didBeginChildDownload:",
@@ -7697,6 +8930,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "download:didReceiveResponse:",
        "download:shouldBeginChildDownloadOfSource:delegate:",
        "download:shouldDecodeSourceDataOfMIMEType:",
+       "download:willResumeWithResponse:fromByte:",
        "download:willSendRequest:redirectResponse:",
        "downloadDelegate",
        "downloadDidBegin:",
@@ -7704,28 +8938,37 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "downloadImageToDisk:",
        "downloadLinkToDisk:",
        "downloadURL:element:",
-       "dragAnimationComplete:toRow:",
+       "downloadWindowForAuthenticationSheet:",
+       "dragCaretDOMRange",
        "dragColor:withEvent:fromView:",
-       "dragColor:withEvent:inView:",
-       "dragFile:fromRect:slideBack:event:",
+       "dragExitedWithDraggingInfo:",
+       "dragImage",
        "dragImage:at:offset:event:pasteboard:source:slideBack:",
        "dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:",
+       "dragImageForAtomAttachmentCell:",
        "dragImageForRows:event:dragImageOffset:",
+       "dragImageForRowsWithIndexes:tableColumns:event:offset:",
        "dragImageForSelectionWithEvent:origin:",
+       "dragOperationForDraggingInfo:",
        "dragOperationForDraggingInfo:type:",
-       "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:",
        "dragRectForFrameRect:",
        "dragSelectionWithEvent:offset:slideBack:",
+       "dragSourceEndedAt:operation:",
+       "dragSourceMovedTo:",
        "draggedColumn",
        "draggedDistance",
        "draggedImage",
        "draggedImage:beganAt:",
+       "draggedImage:endedAt:deposited:",
        "draggedImage:endedAt:operation:",
        "draggedImage:movedTo:",
        "draggedImageLocation",
+       "draggingCancelledWithDraggingInfo:",
        "draggingDestinationWindow",
+       "draggingEnded:",
        "draggingEntered:",
        "draggingExited:",
+       "draggingKeyBindingManager",
        "draggingLocation",
        "draggingPasteboard",
        "draggingSequenceNumber",
@@ -7733,26 +8976,29 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "draggingSourceOperationMask",
        "draggingSourceOperationMaskForLocal:",
        "draggingUpdated:",
+       "draggingUpdatedWithDraggingInfo:actionMask:",
+       "drain",
        "draw",
        "drawArrow:highlight:",
        "drawArrow:highlightPart:",
        "drawAtPoint:",
        "drawAtPoint:fromRect:operation:fraction:",
+       "drawAtPoint:inContext:",
        "drawAtPoint:withAttributes:",
+       "drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:",
        "drawBackgroundForGlyphRange:atPoint:",
        "drawBackgroundInClipRect:",
        "drawBackgroundInRect:",
        "drawBackgroundInRect:inView:highlight:",
+       "drawBackgroundWithFrame:inView:characterRange:layoutManager:",
        "drawBarInside:flipped:",
        "drawBevel:",
+       "drawBevel:inFrame:topCornerRounded:",
        "drawBevel:inFrame:topCornerRounded:bottomCornerRounded:",
+       "drawBezelWithFrame:inView:",
        "drawBorderAndBackgroundWithFrame:inView:",
        "drawCell:",
-       "drawCellAtIndex:",
        "drawCellAtRow:column:",
-       "drawCellInside:",
-       "drawCharacters:stringLength:fromCharacterPosition:toCharacterPosition:atPoint:withPadding:withTextColor:backgroundColor:rightToLeft:letterSpacing:wordSpacing:smallCaps:fontFamilies:",
-       "drawClippedToValidInRect:fromRect:",
        "drawColor",
        "drawColor:",
        "drawCrayonLayer",
@@ -7762,12 +9008,18 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "drawGlyphsForGlyphRange:atPoint:",
        "drawGridInClipRect:",
        "drawHashMarksAndLabelsInRect:",
-       "drawHighlightWithFrame:inView:",
+       "drawHighlightForRun:style:geometry:",
+       "drawImage:inRect:fromRect:",
+       "drawImage:withFrame:inView:",
+       "drawImageAtIndex:inRect:fromRect:adjustedSize:compositeOperation:context:",
+       "drawImageAtIndex:inRect:fromRect:compositeOperation:context:",
+       "drawImageInRect:fromRect:",
+       "drawImageInRect:fromRect:compositeOperator:context:",
        "drawImageWithFrame:inView:",
        "drawInRect:",
        "drawInRect:fromRect:operation:fraction:",
-       "drawInRect:onView:",
        "drawInRect:onView:pinToTop:",
+       "drawInRect:withAlpha:operation:flipped:",
        "drawInRect:withAttributes:",
        "drawInView:",
        "drawInsertionPointInRect:color:turnedOn:",
@@ -7778,39 +9030,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "drawKnobSlotInRect:highlight:",
        "drawLabel:inRect:",
        "drawLineForCharacters:yOffset:withWidth:withColor:",
+       "drawLineForMisspelling:withWidth:",
        "drawMarkersInRect:",
        "drawNormalInteriorWithFrame:inView:",
-       "drawPackedGlyphs:atPoint:",
        "drawPageBorderWithSize:",
-       "drawParts",
        "drawPreviewInteriorWithFrame:inView:",
        "drawRect:",
        "drawRect:withPainter:",
        "drawRepresentation:inRect:",
        "drawResizeIndicator:",
+       "drawRevealoverTextWithFrame:inView:forView:",
        "drawRow:clipRect:",
+       "drawRowIndexes:clipRect:",
+       "drawRun:style:geometry:",
        "drawScroller:",
        "drawSegment:inFrame:withView:",
-       "drawSelection:selected:inView:withRoundedLeftEdges:",
        "drawSelectionIndicatorInRect:",
-       "drawSelector",
        "drawSeparatorInRect:",
        "drawSeparatorItemWithFrame:inView:",
-       "drawShadowLayer",
-       "drawSheetBorderWithSize:",
        "drawSortIndicatorWithFrame:inView:ascending:priority:",
        "drawSpellingUnderlineForGlyphRange:spellingState:inGlyphRange:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
        "drawStateImageWithFrame:inView:",
-       "drawStatusBarBackgroundInRect:withHighlight:",
        "drawStrikethroughForGlyphRange:strikethroughType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
        "drawSwatchInRect:",
        "drawTextContainer:inRect:onView:",
        "drawTextContainer:inRect:onView:pinToTop:",
        "drawThemeContentFill:inView:",
+       "drawTitle:withFrame:inView:",
        "drawTitleOfColumn:inRect:",
        "drawTitleWithFrame:inView:",
        "drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
        "drawViewBackgroundInRect:",
+       "drawViewInRect:",
        "drawWellInside:",
        "drawWindowBackgroundRect:",
        "drawWindowBackgroundRect:level:",
@@ -7819,64 +9070,68 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "drawWithFrame:inView:",
        "drawWithFrame:inView:characterIndex:",
        "drawWithFrame:inView:characterIndex:layoutManager:",
+       "drawWithRect:options:",
+       "drawWithRect:options:attributes:",
+       "drawer:didChangeToState:",
        "drawerDidClose:",
        "drawerDidOpen:",
+       "drawerShouldClose:",
+       "drawerShouldOpen:",
+       "drawerWillResizeContents:toSize:",
        "drawers",
+       "drawingAttributes",
+       "drawingRect",
        "drawingRectForBounds:",
+       "drawingRectForCellFrame:",
+       "drawingStyle",
+       "drawnInSelectedRow",
        "drawsBackground",
        "drawsCellBackground",
-       "drawsContainmentIndicator",
        "drawsGrid",
-       "drawsOutsideLineFragmentForGlyphAtIndex:",
-       "drawsSpecialSelection",
-       "dsDataBuffer",
-       "dsDataList",
-       "dsDataNode",
-       "dsDirRef",
-       "dsNodeReference",
-       "dsRecordReference",
+       "dropFirstComponent:",
+       "dropLastComponent:",
        "dstDraggingDepositedAtPoint:draggingInfo:",
        "dstDraggingEnteredAtPoint:draggingInfo:",
        "dstDraggingExitedAtPoint:draggingInfo:",
        "dstDraggingMovedToPoint:draggingInfo:",
-       "dummyAction:",
-       "duplicatesForPeople:",
-       "dynamicVerticalScroller",
-       "earlierDate:",
+       "duration",
+       "dynamicToolTipRectAtPoint:",
+       "dynamicToolTipRevealoverInfoAtPoint:trackingRect:",
+       "dynamicToolTipStringAtPoint:trackingRect:",
+       "eMapResult:eMap:arcsinTable:",
        "echosBullets",
        "edge",
-       "edit:",
-       "editButton",
-       "editCard:",
        "editColumn:row:withEvent:select:",
-       "editDisplayedCard:",
-       "editInAddressBook:",
-       "editInput:",
-       "editMode",
-       "editPerson:",
-       "editSelectedGroupWithUndo:",
-       "editServerAction:",
        "editWithFrame:inView:editor:delegate:event:",
        "editableBinder",
+       "editableDOMRangeForPoint:",
        "editableState",
        "editableStateAtIndex:",
+       "editableStateAtIndexPath:",
        "edited",
        "edited:range:changeInLength:",
        "editedColumn",
-       "editedIndex:",
        "editedMask",
+       "editedMode:forEditingOrAction:",
        "editedRange",
        "editedRow",
+       "editedToolbar",
        "editingBinderForControl:",
        "editingColorAdjustableObject:",
+       "editingContextMenuItemsForElement:",
+       "editingDelegate",
        "editingHasBegun:",
        "editingHasEnded:",
        "editingStringForObjectValue:",
        "editingWasAborted:",
        "editor",
-       "editorDidEnd:returnCode:contextInfo:",
+       "editorDidBeginEditing:",
+       "editorDidEndEditing:",
        "editorWithObject:",
-       "ejectVolume",
+       "eject",
+       "ejectButtonPressedAction:",
+       "element",
+       "elementAt:",
        "elementAtIndex:",
        "elementAtIndex:associatedPoints:",
        "elementAtIndex:effectiveRange:",
@@ -7884,45 +9139,41 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "elementCount",
        "elementDoesAutoComplete:",
        "elementForView:",
-       "elementImpl",
        "elementIsPassword:",
-       "elementSize",
-       "elementWithImpl:",
+       "elementName",
+       "elementTypeDescription",
        "elementWithName:inForm:",
        "elementWithRole:parent:",
-       "email",
-       "emailDomains",
-       "emailList",
+       "elementWithRole:subrole:parent:",
+       "elementsForLocalName:URI:",
+       "elementsForName:",
+       "emapROI:forRect:",
        "empty",
        "emptyAttributeDictionary",
-       "emptyCache",
-       "emulateUpdateCard:withImportedCard:changes:",
        "enable:",
        "enableAll:",
        "enableCursorRects",
-       "enableCustomAttributeFixing",
-       "enableDelegateMessages",
        "enableFlushWindow",
        "enableFreedObjectCheck:",
        "enableKeyEquivalentForDefaultButtonCell",
+       "enableMakeHistory",
        "enableMultipleThreads",
        "enableRelease:",
+       "enableSecureInput:",
        "enableSecureString:",
-       "enableUndoRegistration",
-       "enabled",
+       "enableUpdates",
        "enabledFileTypes",
-       "enabledSelectionChanging",
        "enabledState",
        "enabledStateAtIndex:",
+       "enabledStateAtIndexPath:",
+       "enabledStateForMenuItem:",
+       "enclosingClipViewBoundsOrFrameDidChangeNotification:",
        "enclosingScrollView",
        "encodeArrayOfObjCType:count:at:",
        "encodeBool:forKey:",
        "encodeBycopyObject:",
-       "encodeByrefObject:",
        "encodeBytes:length:",
        "encodeBytes:length:forKey:",
-       "encodeClassName:intoClassName:",
-       "encodeColumns",
        "encodeConditionalObject:",
        "encodeConditionalObject:forKey:",
        "encodeDataObject:",
@@ -7931,7 +9182,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "encodeInt32:forKey:",
        "encodeInt64:forKey:",
        "encodeInt:forKey:",
-       "encodeNXObject:",
        "encodeObject:",
        "encodeObject:forKey:",
        "encodeObject:isBycopy:isByref:",
@@ -7949,63 +9199,86 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "encodeValuesOfObjCTypes:",
        "encodeWithCoder:",
        "encodeWithCoder:colorSpaceCode:",
-       "encodedLineForValue:",
        "encodingScheme",
+       "encryptComponents:",
        "encryptWithDelegate:",
        "end",
        "endCoalesceTextDrawing",
+       "endConstruction",
+       "endContainer",
        "endDisplay",
        "endDocument",
        "endEditing",
        "endEditing:",
        "endEditingFor:",
+       "endFetch",
        "endHeaderComments",
        "endInputStream",
+       "endLayoutChange",
+       "endLineWithGlyphRange:",
        "endLoadInBackground",
        "endModalSession:",
+       "endOffset",
        "endPage",
        "endPageSetup",
+       "endParagraph",
        "endPrologue",
+       "endRevertingChange:moveLeft:",
        "endSetup",
        "endSheet:",
        "endSheet:returnCode:",
-       "endSheetReturningTag:",
        "endSpecifier",
        "endSubelementIdentifier",
        "endSubelementIndex",
        "endTrailer",
        "endUndoGrouping",
+       "enoiseROI:forRect:userInfo:",
+       "enqueueChallenge:forWindow:",
        "enqueueNotification:postingStyle:",
        "enqueueNotification:postingStyle:coalesceMask:forModes:",
        "ensureAttributesAreFixedInRange:",
+       "ensureSelectionVisible",
        "enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:",
        "enterProximity",
        "entities",
+       "entitiesByName",
+       "entitiesForConfiguration:",
+       "entity",
+       "entityDeclarationForName:",
+       "entityDescription",
+       "entityForEntityDescription:",
+       "entityForFetchRequest:",
+       "entityForID:",
+       "entityForName:inManagedObjectContext:",
+       "entityForObject:",
+       "entityID",
        "entityName",
-       "entityReferenceImpl",
-       "entityReferenceWithImpl:",
+       "entityNameOrderingArrayForEntities:",
+       "entityNamed:",
+       "entryForNode:inCachedChildrenForNode:",
        "entryState:",
        "entryType",
-       "entryWithURL:",
        "enumCodeValue",
-       "enumerationTerminologyDictionary:",
+       "enumerationDescriptionFromName:implDeclaration:presoDeclaration:",
+       "enumerations",
        "enumeratorAtPath:",
-       "environment",
-       "eoMKKDInitializer",
-       "equalID:andID:",
-       "equalsContentsOf:",
+       "enumeratorDescriptions",
        "error",
        "error:",
-       "errorAction",
-       "errorCount",
-       "errorInSetImageFromPath",
-       "errorProc",
+       "errorExpectedType",
+       "errorForReason:",
+       "errorNumber",
+       "errorOffendingObjectDescriptor",
        "errorStringForFTPStatusCode:fromURL:",
        "errorWithDomain:code:userInfo:",
-       "escapeKey:",
        "establishConnection",
-       "estimatedProgress",
        "evaluate",
+       "evaluateFromResolutionArray:valueArray:arrayCount:atResolution:",
+       "evaluateJavaScriptPluginRequest:",
+       "evaluatePredicates:withObject:variableBindings:",
+       "evaluateWithObject:",
+       "evaluateWithObject:variableBindings:",
+       "evaluateXQuery:constants:contextItem:error:",
        "evaluatedArguments",
        "evaluatedReceivers",
        "evaluationErrorNumber",
@@ -8013,49 +9286,59 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "event",
        "eventClass",
        "eventID",
-       "eventMask",
+       "eventMayStartDrag:",
        "eventNumber",
        "eventQueue",
+       "exactSizeToCellsSize",
        "exceptionAddingEntriesToUserInfo:",
        "exceptionDuringOperation:error:leftOperand:rightOperand:",
        "exceptionRememberingObject:key:",
        "exceptionWithName:reason:userInfo:",
-       "exchange::",
-       "exchangeObjectAtIndex:withObjectAtIndex:",
-       "exchangeServer",
+       "exclusives",
        "executablePath",
        "executableType",
        "execute",
-       "executeAndReturnError:",
-       "executeAppleEvent:error:",
        "executeCommand",
-       "exit",
+       "executeFetchRequest:error:",
+       "executeFetchRequest:withContext:",
+       "executeRequest:withContext:",
+       "executeSaveChangesRequest:withContext:",
+       "executionContextForView:",
+       "expandIndexPath:",
        "expandItem:",
        "expandItem:expandChildren:",
        "expandedNodes",
-       "expandedView",
+       "expandedNodesForObservedNode:",
+       "expandedRingROI:::",
        "expect:",
        "expectEndOfInput",
        "expectSeparatorEqualTo:",
-       "expectTokenEqualTo:mask:",
        "expectedContentLength",
-       "expectedResourceDataSize",
        "expiresDate",
-       "exportRecords:",
-       "exportVCard:",
+       "expiresTimeForResponse:",
        "exposeBinding:",
        "exposedBindings",
-       "extendCharacterToGlyphMapToInclude:",
-       "extendGlyphToWidthMapToInclude:font:",
+       "expressionForConstantValue:",
+       "expressionForKeyPath:",
+       "expressionType",
+       "expressionValueWithObject:context:",
        "extendPowerOffBy:",
-       "extendUnicodeCharacterToGlyphMapToInclude:",
        "extensionEnumerator",
        "extensionsForMIMEType:",
+       "extent",
+       "externalDataForObjectID:timestamp:",
+       "externalDataForSourceObjectID:key:timestamp:",
+       "externalName",
+       "externalNameForEntityName:",
+       "externalNameForPropertyName:",
+       "externalPrecision",
+       "externalScale",
+       "externalType",
+       "extraArgument2",
        "extraLineFragmentRect",
        "extraLineFragmentTextContainer",
        "extraLineFragmentUsedRect",
        "extractHeaderInfo:",
-       "fadePopUpWindowImmediately",
        "fadeToolTip:",
        "failWithError:",
        "failureReason",
@@ -8065,214 +9348,193 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "fantasyFontFamily",
        "fastDrawAttributedString:containerSize:padding:inRect:onView:pinToTop:sizeOnly:size:",
        "fastDrawString:attributes:containerSize:padding:inRect:onView:pinToTop:sizeOnly:size:",
+       "fastIndexForKnownKey:",
        "fastestEncoding",
+       "faultHandler",
+       "faultHandlerClass",
        "fauxFilePackageTypes",
        "favoriteAttributesForName:",
        "favoriteAttributesNames",
        "fbeNode",
-       "fetchNoteOutOfRecordWithEmptyTemplate:",
-       "fieldContentsForProperty:",
+       "fetch:",
+       "fetchIndex",
+       "fetchLimit",
+       "fetchMaxPrimaryKeyForEntity:",
+       "fetchMetadata",
+       "fetchObjectsWithSortDescriptors:error:",
+       "fetchPredicate",
+       "fetchRequest",
+       "fetchRequestTemplateForName:",
+       "fetchedValueForDataValue:attribute:",
+       "fetchedValueForDateValue:attribute:",
+       "fetchedValueForNumberValue:attribute:",
+       "fetchedValueForStringValue:attribute:",
+       "fidelity",
+       "fidelityMask",
+       "fieldDescriptionForAppleEventCode:",
+       "fieldDescriptions",
        "fieldEditableControl",
        "fieldEditor:forObject:",
-       "fieldEditorDidMouseDown:",
        "fieldEditorTextDidChange:",
        "file",
        "fileAttributes",
        "fileAttributesAtPath:traverseLink:",
        "fileAttributesToWriteToFile:ofType:saveOperation:",
+       "fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:",
        "fileButton",
-       "fileCreationDate",
+       "fileButtonWithDelegate:",
        "fileDescriptor",
        "fileExistsAtPath:",
        "fileExistsAtPath:isDirectory:",
-       "fileExtensionHidden",
        "fileExtensionsFromType:",
-       "fileGroupOwnerAccountID",
-       "fileGroupOwnerAccountName",
-       "fileGroupOwnerAccountNumber",
        "fileHFSCreatorCode",
        "fileHFSTypeCode",
        "fileHandleForReading",
        "fileHandleForReadingAtPath:",
-       "fileHandleForUpdatingAtPath:",
        "fileHandleForWriting",
-       "fileHandleForWritingAtPath:",
        "fileHandleWithNullDevice",
        "fileHandleWithStandardError",
        "fileHandleWithStandardInput",
        "fileHandleWithStandardOutput",
-       "fileIsAppendOnly",
-       "fileIsImmutable",
        "fileListMode",
        "fileListOrderedByFileProperty",
        "fileManager:shouldProceedAfterError:",
-       "fileManagerShouldProceedAfterError:",
+       "fileManager:willProcessPath:",
        "fileModificationDate",
        "fileName",
        "fileNameExtensionWasHiddenInLastRunSavePanel",
        "fileNameFromRunningSavePanelForSaveOperation:",
        "fileNamesFromRunningOpenPanel",
-       "fileOperationCompleted:ok:",
-       "fileOwnerAccountID",
-       "fileOwnerAccountName",
-       "fileOwnerAccountNumber",
        "filePosixPermissions",
        "fileProperty",
-       "fileSize",
        "fileSpecForName:atDestination:",
-       "fileSpecifier",
        "fileSystemAttributesAtPath:",
-       "fileSystemChanged",
-       "fileSystemFileNumber",
-       "fileSystemNumber",
        "fileSystemRepresentation",
        "fileSystemRepresentationWithPath:",
        "fileType",
        "fileTypeFromLastRunSavePanel",
+       "fileURL",
        "fileURLWithPath:",
        "fileWrapper",
+       "fileWrapperForURL:",
+       "fileWrapperFromRange:documentAttributes:error:",
+       "fileWrapperOfType:error:",
        "fileWrapperRepresentationOfType:",
        "fileWrappers",
        "filelistDelegate",
-       "filelock",
        "filename",
        "filenameChanged:",
-       "filenameHasAllowedFileType:",
        "filenameToDrag:",
+       "filenameWithOriginalFilename:",
        "filenames",
        "filepath",
        "filepathLabel",
        "fill",
        "fillAttributesCache",
-       "fillBodyTemplate:withReplacements:",
        "fillObjCType:count:at:",
        "fillRect",
        "fillRect:",
-       "fillSubrowList:forDisplayedRecords:withDelegate:",
-       "filterAndSortObjectNames:",
-       "filterChanged:",
+       "filter",
+       "filterClassDescription",
        "filterEvents:",
+       "filterKeyDown:",
+       "filterNamesInCategories:",
+       "filterPredicate",
+       "filterUsingPredicate:",
+       "filterWithName:",
+       "filterWithName:keysAndValues:",
+       "filteredArrayUsingPredicate:",
+       "filteredImage:keysAndValues:",
        "filteredIndexForActualIndex:",
        "finalWritePrintInfo",
-       "find:",
-       "findApplications",
-       "findAttachement:",
-       "findAttributeNamed:value:",
+       "finalize",
+       "finalizeForWebScript",
        "findBundleResources:callingMethod:directory:languages:name:types:limit:",
        "findClass:",
-       "findColorNamed:inList:usingLocalName:",
        "findCombinationForLetter:accent:",
-       "findEntryListFor:",
-       "findFontDebug:",
        "findFontLike:forCharacter:inLanguage:",
        "findFontLike:forString:withRange:inLanguage:",
-       "findFontLike:traits:forCharacter:inLanguage:checkCoveredCache:",
        "findFontLike:traits:forCharacters:length:inLanguage:checkCoveredCache:",
        "findFrameNamed:",
-       "findGroup:",
        "findInView:forward:",
        "findIndex:forDay:",
-       "findNextAndOrderFindPanelOut:",
-       "findNextOccuranceOfAttributeNamed:startingRange:",
-       "findNode:",
-       "findNode:matchType:",
-       "findNode:matchType:useFirst:",
-       "findNodeNames:matchType:",
-       "findNodeViaEnum:",
        "findPPDFileName:",
-       "findPanel",
-       "findPartialMatch:withComparer:",
-       "findPopupForField:excludingRange:",
-       "findPreviousOccuranceOfAttributeNamed:startingRange:",
-       "findRecord:ofType:",
-       "findRecordNames:andAttributes:ofType:matchType:",
-       "findRecordNames:ofType:matchType:",
-       "findRecordNamesOfTypes:withAttribute:value:matchType:",
-       "findRecordTypes",
-       "findRecordsInServer:withNode:withServer:withCounter:",
-       "findRecordsOfTypes:withAttribute:value:matchType:",
-       "findRecordsOfTypes:withAttribute:value:matchType:retrieveAttributes:",
-       "findSelection:",
+       "findPanel:",
        "findSidebarNodeForNode:",
+       "findSoundFor:",
        "findString",
-       "findString:",
-       "findString:inBook:",
        "findString:selectedRange:options:",
        "findString:selectedRange:options:wrap:",
-       "findType:",
-       "findUser:",
        "findVoiceByIdentifier:returningCreator:returningID:",
-       "finderPath",
+       "fini",
        "finish",
        "finishDataLoad",
        "finishDecoding",
+       "finishDownloadDecoding",
        "finishEncoding",
        "finishEncoding:",
        "finishJobAndHandle",
        "finishLaunching",
        "finishProgressiveLoad:",
-       "finishTextFieldSetup",
+       "finishProvideNewSubviewSetup",
+       "finishUnarchiving",
        "finishUsingMenuRepresentation",
-       "finished",
        "finishedLoadingWithData:",
        "finishedLoadingWithDataSource:",
-       "fire",
        "fireDate",
        "firstChild",
-       "firstGlyphIndexOfCurrentLineFragment",
+       "firstComponent:",
        "firstIndentMarkerWithRulerView:location:",
        "firstIndex",
-       "firstLastSortingNamePart1:part2:",
        "firstLineHeadIndent",
-       "firstLineParagraphStyle",
-       "firstName",
        "firstObjectCommonWithArray:",
+       "firstPresentableName",
+       "firstRange",
        "firstRectForCharacterRange:",
-       "firstRepProperty:",
+       "firstRectForDOMRange:",
        "firstResponder",
-       "firstStringValueOfProperty:",
        "firstTextView",
        "firstTextViewForTextStorage:",
        "firstUnlaidCharacterIndex",
        "firstUnlaidGlyphIndex",
        "firstVisibleColumn",
-       "fixAddressRulersInRange:",
        "fixAttachmentAttributeInRange:",
        "fixAttributesInRange:",
        "fixFontAttributeInRange:",
        "fixGlyphInfoAttributeInRange:",
        "fixInvalidatedFocusForFocusView",
-       "fixNotesRulersInRange:",
        "fixParagraphStyleAttributeInRange:",
        "fixedFontFamily",
        "fixesAttributesLazily",
        "fixupDirInfo:",
+       "fk",
+       "flags",
        "flagsChanged:",
        "flatness",
-       "flippedView",
+       "flattenIntoPath:",
+       "floatCocoaVersion",
        "floatForKey:",
-       "floatForKey:inTable:",
+       "floatParameterValue:forResolution:",
        "floatValue",
-       "floatValueOfProperty:",
-       "floatWidthForCharacters:stringLength:characterPosition:",
-       "floatWidthForCharacters:stringLength:fromCharacterPosition:numberOfCharacters:",
-       "floatWidthForCharacters:stringLength:fromCharacterPosition:numberOfCharacters:withPadding:applyRounding:attemptFontSubstitution:widths:letterSpacing:wordSpacing:smallCaps:fontFamilies:",
+       "floatWidthForRun:style:widths:",
        "flush",
+       "flushAllCachedChildren",
+       "flushAllCaches",
        "flushAllKeyBindings",
-       "flushAttributeCache",
-       "flushBuffer",
        "flushBufferedKeyEvents",
+       "flushCachedChildren",
+       "flushCachedChildrenForNode:",
        "flushCachedData",
+       "flushCaches",
        "flushClassKeyBindings",
+       "flushDataForTriplet:littleEndian:",
        "flushGraphics",
        "flushHostCache",
        "flushKeyBindings",
-       "flushLocalCopiesOfSharedRulebooks",
+       "flushRasterCache",
        "flushTextForClient:",
        "flushWindow",
-       "flushWindowIfNeeded",
-       "focusRingImageForState:",
-       "focusRingImageSize",
+       "focusChanged:",
        "focusRingType",
        "focusStack",
        "focusView",
@@ -8280,151 +9542,163 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "focusWindow",
        "focusedSwatchRect",
        "focusedView",
-       "followsItalicAngle",
+       "folderPath",
        "font",
+       "fontAttributes",
+       "fontAttributesForSelectionStart",
        "fontAttributesInRange:",
        "fontDescriptor",
+       "fontDescriptorByAddingAttributes:",
+       "fontDescriptorWithFamily:",
        "fontDescriptorWithFontAttributes:",
+       "fontDescriptorWithMatrix:",
+       "fontDescriptorWithName:matrix:",
        "fontDescriptorWithName:size:",
-       "fontDescriptorsInCollection:",
+       "fontDescriptorWithSize:",
+       "fontForSelection:",
+       "fontInstanceForFontDescriptor:size:affineTransform:renderingMode:",
+       "fontInstanceForRenderingMode:",
+       "fontInvalidationCapableObjectForObject:",
        "fontMenu:",
        "fontName",
        "fontNameWithFamily:traits:weight:",
-       "fontNamed:hasTraits:",
        "fontPanel:",
+       "fontPanelDidChooseCollection:",
+       "fontPanelDidChooseFace:",
+       "fontPanelDidChooseFamily:",
+       "fontPanelDidChooseSize:",
        "fontSize",
+       "fontWithDescriptor:size:",
+       "fontWithDescriptor:textTransform:",
        "fontWithFamilies:traits:size:",
        "fontWithFamily:traits:size:",
        "fontWithFamily:traits:weight:size:",
        "fontWithName:matrix:",
        "fontWithName:size:",
-       "forceLayout",
-       "forceLayoutForPageWidth:",
+       "forceLayoutAdjustingViewSize:",
+       "forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:",
+       "forcePromise:",
        "forceRedraw",
-       "forceSet",
        "forceSetMode:",
-       "foregroundColor",
+       "foreignEntityKey",
+       "foreignEntityKeyColumns",
+       "foreignEntityKeyForSlot:",
+       "foreignKey",
+       "foreignKeyColumnDefinitions",
+       "foreignKeyColumns",
+       "foreignKeyConstraintDefinitions",
+       "foreignKeyForSlot:",
+       "foreignKeys",
+       "forgetAllExternalData",
+       "forgetAllSnapshots",
+       "forgetExternalDataForObjectID:",
+       "forgetSnapshotForGlobalID:",
+       "forgetSnapshotsForGlobalIDs:",
        "forgetWord:",
        "forgetWord:language:",
        "form",
        "formContentType",
        "formData",
        "formForElement:",
-       "formIntersectionWithCharacterSet:",
        "formReferrer",
        "formUnionWithCharacterSet:",
        "formalName",
-       "format",
-       "formatAutosaveName",
-       "formats",
-       "formattedAddressFromDictionary:",
+       "formattedValueInObject:errorEncountered:error:",
        "formatter",
+       "formatterBehavior",
        "formatterOfObject:",
        "forward::",
        "forwardInvocation:",
        "forwardItem",
        "forwardListCount",
-       "forwardListWithLimit:",
-       "foundCardsForName:label:inRecord:",
-       "foundError:",
        "fractionOfDistanceThroughGlyphForPoint:inTextContainer:",
        "fragment",
        "frame",
        "frame:resizedFromEdge:withDelta:",
        "frame:sourceFrame:willSubmitForm:withValues:submissionListener:",
        "frameAutosaveName",
-       "frameBorderStyle",
-       "frameChanged:",
-       "frameColor",
        "frameCount",
        "frameDetached",
-       "frameDuration",
-       "frameHighlightColor",
+       "frameDidChange:",
+       "frameElement",
        "frameLength",
        "frameLoadDelegate",
        "frameName",
-       "frameNeedsDisplay",
        "frameOfCellAtColumn:row:",
        "frameOfColumn:",
        "frameOfInsideOfColumn:",
+       "frameRate",
        "frameRectForContentRect:",
        "frameRectForContentRect:styleMask:",
-       "frameRequiredForMIMEType:",
-       "frameRotation",
-       "frameShadowColor",
+       "frameRequiredForMIMEType:URL:",
        "frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:",
-       "frameStateChanged:",
        "frameView",
        "frameViewClassForStyleMask:",
        "free",
-       "freeAttributes",
+       "freeAttributeKeysAndValues",
        "freeBitsAndReleaseDataIfNecessary",
-       "freeObjects",
        "freeSerialized:length:",
        "freeSpace",
-       "frontWindow",
+       "from:subtract:",
+       "fulfillAggregateFaultForObject:andRelationship:withContext:",
+       "fulfillFault:withContext:",
        "fullJustifyLineAtGlyphIndex:",
+       "fullMetadata",
        "fullPathForApplication:",
        "gState",
+       "gamma",
        "garbageCollect",
-       "garbageCollectJavaScriptObjects",
+       "gaussianBlur",
        "generalPasteboard",
        "generateFrameName",
        "generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:",
        "generateGlyphsForLayoutManager:range:desiredNumberOfCharacters:startingAtGlyphIndex:completedRange:nextGlyphIndex:",
-       "genericLabel",
-       "getAllAttributes",
-       "getAllAttributesAndValues",
+       "generatePropertyName:",
+       "generateTableName:",
+       "generatesCalendarDates",
+       "generatesDecimalNumbers",
+       "generatorClass",
+       "genericCMYKColorSpace",
+       "genericColorSpace",
+       "genericGrayColorSpace",
+       "genericRGBColorSpace",
+       "getAdvancements:forGlyphs:count:",
+       "getAdvancements:forPackedGlyphs:length:",
+       "getAppletInView:",
        "getArgument:atIndex:",
        "getArgumentTypeAtIndex:",
-       "getAttrValuePtrForTypeNode:value:",
        "getAttribute:",
-       "getAttribute:index:",
-       "getAttribute:range:",
-       "getAttributeFirstValue:",
-       "getAttributeNS::",
-       "getAttributeNode:",
-       "getAttributeNodeNS::",
-       "getAttributeValueCount:",
-       "getAttributesAndValuesForPlugin:",
-       "getAttributesAndValuesInNode:fromBuffer:listReference:count:",
        "getAttributesForCharacterIndex:",
-       "getAttributesInNode:fromBuffer:listReference:count:",
        "getBitmapDataPlanes:",
-       "getBuffer:length:",
-       "getBufferSize",
        "getByte",
        "getBytes:",
        "getBytes:length:",
        "getBytes:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:",
+       "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:",
        "getBytes:range:",
        "getCFRunLoop",
        "getCString:",
-       "getCString:maxLength:",
+       "getCString:maxLength:encoding:",
        "getCString:maxLength:range:remainingRange:",
        "getCarbonEvent:",
        "getCarbonEvent:withEvent:",
        "getCharacters:",
        "getCharacters:range:",
+       "getClasses",
+       "getClassesFromResourceLocator:",
+       "getComponents:",
        "getCompression:factor:",
-       "getCount",
+       "getComputedStyle::",
        "getCursorPositionAsIndex:inParagraph:",
+       "getCustomAdvance:forIndex:",
        "getCyan:magenta:yellow:black:alpha:",
-       "getDataLength",
        "getDirInfo:",
        "getDocument:docInfo:",
-       "getElementById:",
-       "getElementsByTagName:",
-       "getElementsByTagNameNS::",
-       "getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:",
        "getFileSystemRepresentation:maxLength:",
        "getFileSystemRepresentation:maxLength:withPath:",
        "getFilenamesAndDropLocation",
        "getFirstUnlaidCharacterIndex:glyphIndex:",
-       "getGid",
-       "getGlobalWindowNum:frame:",
-       "getGlyphs:range:",
-       "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:",
+       "getFloatValue:",
        "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:",
        "getHIViewForNSView:",
        "getHue:saturation:brightness:alpha:",
@@ -8432,61 +9706,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "getHyphenLocations:inString:wordAtIndex:",
        "getImage:rect:",
        "getIndexes:maxCount:inIndexRange:",
-       "getInfoForFile:application:type:",
-       "getKeys:",
+       "getInfoButtonCell",
        "getLELong",
        "getLEWord",
-       "getLineDash:count:phase:",
        "getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:",
+       "getLineFragmentRect:usedRect:remainingRect:forStartingGlyphAtIndex:proposedRect:lineSpacing:paragraphSpacingBefore:paragraphSpacingAfter:",
        "getLineStart:end:contentsEnd:forRange:",
        "getLocal:",
+       "getLocalizedFormattedDisplayLabels:andLocalizedFormattedDisplayValues:",
+       "getLocalizedLabels:andLocalizedValues:",
        "getMarkedText:selectedRange:",
+       "getMaximumAscender:minimumDescender:",
        "getMoreInput",
-       "getName",
-       "getNamedItem:",
-       "getNamedItemNS::",
+       "getNewIDForObject:",
+       "getNodeAsContainerNodeForBrowsing:",
+       "getNodeAsDeepResolvedNode:",
+       "getNodeAsInfoNode:",
+       "getNodeAsResolvedNode:",
        "getNumberOfRows:columns:",
-       "getObject:atIndex:",
        "getObjectCacheSize",
        "getObjectValue:forString:errorDescription:",
+       "getObjectValue:forString:range:error:",
        "getObjects:",
        "getObjects:andKeys:",
        "getObjects:range:",
        "getParagraphStart:end:contentsEnd:forRange:",
+       "getPath",
        "getPeriodicDelay:interval:",
        "getPluginInfoFromBundleAndMIMEDictionary:",
        "getPluginInfoFromPLists",
        "getPluginInfoFromResources",
-       "getPluginList",
+       "getProperties",
+       "getProperty::",
+       "getPropertyCSSValue:",
+       "getPropertyValue:",
+       "getRGBColorValue",
        "getRects:count:",
        "getRectsBeingDrawn:count:",
+       "getRectsExposedDuringLiveResize:count:",
        "getRed:green:blue:alpha:",
-       "getRef:forObjectName:",
        "getReleasedProxies:length:",
        "getRemote:",
+       "getResourceLocator",
        "getReturnValue:",
        "getRotationAngle",
-       "getRow",
        "getRow:column:forPoint:",
        "getRow:column:ofCell:",
+       "getRulebookData:makeSharable:littleEndian:",
        "getSavedNumVisibleRows:",
        "getSnapToWidthList:snapRadiusList:count:",
        "getState:",
-       "getStreamsToHost:port:inputStream:outputStream:",
-       "getTIFFCompressionTypes:count:",
-       "getType",
+       "getStringValue",
+       "getTypographicLineHeight:baselineOffset:leading:",
        "getURL:target:",
        "getURLNotify:target:notifyData:",
-       "getUid",
        "getValue:",
        "getValueFromObject:",
-       "getValues:forAttribute:forVirtualScreen:",
-       "getValues:forParameter:",
+       "getVariable:value:",
        "getWhite:alpha:",
        "globallyUniqueString",
        "glyphAtIndex:",
        "glyphAtIndex:isValidIndex:",
        "glyphBufferForFont:andColor:",
+       "glyphGenerator",
        "glyphGeneratorForEncoding:language:font:",
        "glyphGeneratorForEncoding:language:font:makeSharable:",
        "glyphGeneratorForTriplet:makeSharable:",
@@ -8501,6 +9783,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "glyphIsEncoded:",
        "glyphName",
        "glyphPacking",
+       "glyphRange",
        "glyphRangeForBoundingRect:inTextContainer:",
        "glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:",
        "glyphRangeForCharacterRange:actualCharacterRange:",
@@ -8509,169 +9792,144 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "goBack",
        "goBack:",
        "goBackOrForward:",
+       "goBackwardInHistoryIfPossible",
        "goForward",
        "goForward:",
+       "goForwardInHistoryIfPossible",
        "goToBackForwardItem:",
        "goToItem:",
+       "goUpDirectory",
        "gotString",
-       "gotoBeginning:",
-       "gotoEnd:",
-       "gotoPosterFrame:",
+       "gotoSheetDidEnd:returnCode:contextInfo:",
        "grabberImage",
-       "gradientType",
+       "gradientROI:forRect:",
        "graphicsContextWithAttributes:",
-       "graphicsContextWithWindow:",
        "graphicsPort",
        "graphiteControlTintColor",
        "grayColor",
+       "green",
        "greenColor",
        "greenComponent",
+       "gregorianCalendar",
        "greySliderFrameChangedNotification:",
        "gridColor",
        "gridStyleMask",
-       "groupAtIndex:",
-       "groupDoubleAction",
        "groupIdentifier",
        "groupName",
-       "grouping",
-       "groupingLevel",
-       "groups",
+       "groupingSeparator",
        "groupsByEvent",
-       "groupsChanged:",
-       "groupsController",
-       "groupsPane",
-       "groupsSelectionChanged:",
-       "grow:",
        "growBoxWithParent:",
        "growBuffer:current:end:factor:",
        "growGlyphCaches:fillGlyphInfo:",
        "guessDockTitle:",
        "guessesForWord:",
-       "halt",
        "handleAppTermination:",
        "handleAutoscrollForMouseDragged:",
        "handleCarbonBoundsChange",
        "handleCloseScriptCommand:",
        "handleCommandEvent:withReplyEvent:",
-       "handleCommentWithCode:",
-       "handleDataSourceChangedCurrentDirectory",
-       "handleDataSourceChangedSelection",
-       "handleDataSourceClickedFauxDisabledNode:",
-       "handleDataSourceConfirmedSelection",
+       "handleCurrentDirectoryNodeChanged",
+       "handleDelayedUpdate:",
        "handleDelegateChangedCurrentDirectory",
        "handleDelegateChangedSelection",
        "handleDelegateClickedFauxDisabledNode:",
        "handleDelegateConfirmedSelection",
        "handleDelegateMovedDiplayedProperty:toIndex:",
-       "handleDelegatePickedNewRootNode:",
+       "handleDroppedConnection",
        "handleEndEncountered",
        "handleFailureInFunction:file:lineNumber:description:",
        "handleFailureInMethod:object:file:lineNumber:description:",
-       "handleFontName",
+       "handleFetchRequest:",
+       "handleFileListModeChanged",
        "handleGetAETEEvent:withReplyEvent:",
        "handleHasBytesAvailable",
-       "handleHeaderOp",
+       "handleKeyboardShortcutWithEvent:",
+       "handleMachMessage:",
+       "handleMetadataCallback",
        "handleMouseDownEvent:at:inPart:withMods:",
-       "handleMouseDragged:",
        "handleMouseEvent:",
-       "handleOpenScriptCommand:",
-       "handlePicVersion",
+       "handleNodePropertyChanged",
+       "handleObservingRefresh:",
        "handlePortCoder:",
        "handlePortMessage:",
+       "handlePreviewTextChange",
+       "handlePreviewTextUpdate",
        "handlePrintScriptCommand:",
        "handleQueryWithUnboundKey:",
-       "handleQuickTimeWithCode:",
-       "handleQuitScriptCommand:",
        "handleReadStreamEvent:event:",
        "handleReleasedProxies:length:",
        "handleRequest:sequence:",
-       "handleRollOverAtPoint:",
-       "handleRollOverSelection:",
        "handleRootNodeChanged",
        "handleSaveScriptCommand:",
        "handleSetFrameCommonRedisplay",
-       "handleShadowHilite",
-       "handleSwitchToCardAndColumnsFrom:animate:",
-       "handleSwitchToCardOnlyFrom:animate:",
-       "handleSwitchToColumnsOnlyFrom:animate:",
-       "handleSwitchToDirectoriesFrom:animate:",
        "handleTakeValue:forUnboundKey:",
+       "handleUserGoUpDirectory",
+       "handleValidationError:description:inEditor:errorUserInterfaceHandled:",
+       "handlesContentAsCompoundValue",
+       "handlesObject:",
+       "handlesRequest:",
        "hasAdditionalClip",
        "hasAlpha",
-       "hasAttribute:",
-       "hasAttributeNS::",
-       "hasAttributes",
+       "hasAttachmentMenu",
        "hasBackingStore",
-       "hasBytesAvailable",
-       "hasCardWithEmail:",
-       "hasChanged",
+       "hasChanges",
        "hasChangesPending",
        "hasChildNodes",
-       "hasChildren",
        "hasCloseBox",
        "hasCredentials",
-       "hasCustomImage",
+       "hasDirectoryNode",
        "hasDynamicDepthLimit",
        "hasEditedDocuments",
        "hasEditor",
-       "hasFeature::",
-       "hasFullInfo",
+       "hasElasticRange",
        "hasHorizontalRuler",
        "hasHorizontalScroller",
        "hasImageWithAlpha",
-       "hasImportErrors",
        "hasItemsToDisplayInPopUp",
        "hasMarkedText",
-       "hasMemberInPlane:",
+       "hasMetadataTable",
+       "hasNodeLabel",
+       "hasOpenTransaction",
        "hasPageCache",
        "hasPassword",
        "hasPrefix:",
-       "hasRecordsOfType:",
        "hasRunLoop:",
        "hasSelectedColor",
-       "hasSelection",
        "hasShadow",
-       "hasSpaceAvailable",
+       "hasSubentities",
        "hasSubmenu",
        "hasSuffix:",
-       "hasTag:",
        "hasThousandSeparators",
-       "hasTitleBar",
        "hasUndoManager",
-       "hasUnsavedChanges",
-       "hasValidObjectValue",
        "hasVerticalRuler",
        "hasVerticalScroller",
        "hash",
+       "hashForID:",
+       "haveCompleteImage",
        "haveCredentialForURL:",
        "headIndent",
        "headerCell",
        "headerColor",
+       "headerLevel",
        "headerRectOfColumn:",
        "headerTextColor",
        "headerView",
        "heartBeat:",
-       "heartBeatCycle",
+       "hebrewCalendar",
        "heightAdjustLimit",
        "heightForNumberOfVisibleRows:",
-       "heightString",
        "heightTracksTextView",
-       "help:",
        "helpAnchor",
-       "helpCursorShown",
        "helpRequested:",
+       "helpText",
+       "hexString",
        "hiddenState",
        "hiddenStateAtIndex:",
+       "hiddenStateAtIndexPath:",
        "hide",
        "hide:",
-       "hideAddPeopleButton",
-       "hideExtension",
-       "hideExtensionButtonClick:",
-       "hideOtherApplications",
        "hideOtherApplications:",
-       "hideRecentsPopUp",
-       "hideShowLastImport:",
-       "hideShowLastImportGroup:",
+       "hideRolloverWindow",
        "hideToolbar:",
        "hidesOnDeactivate",
        "highlight:",
@@ -8682,220 +9940,180 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "highlightColorInView:",
        "highlightColorWithFrame:inView:",
        "highlightMode",
+       "highlightROI:forRect:",
        "highlightSelectionInClipRect:",
        "highlightWithLevel:",
        "highlightedBranchImage",
        "highlightedItemIndex",
-       "highlightedMenuColor",
-       "highlightedMenuTextColor",
        "highlightedTableColumn",
        "highlightsBy",
        "hintCapacity",
+       "historyAgeInDaysLimit",
+       "historyItemLimit",
        "historyLength",
        "historyProvider",
        "hitPart",
        "hitTest:",
-       "homePageFieldPresent",
        "horizontalEdgePadding",
        "horizontalLineScroll",
-       "horizontalPageScroll",
        "horizontalPagination",
        "horizontalRulerView",
        "horizontalScroller",
+       "horizontalScrollingMode",
        "host",
-       "hostName",
        "hostNameResolved:",
        "hostWindow",
-       "hostWithAddress:",
        "hostWithName:",
-       "hostname",
        "hotSpot",
        "hourOfDay",
+       "href",
        "hueComponent",
        "hyphenCharacterForGlyphAtIndex:",
        "hyphenGlyph",
-       "hyphenGlyphForFont:language:",
-       "hyphenGlyphForLanguage:",
+       "hyphenGlyphForLocale:",
        "hyphenationFactor",
-       "iDiskMount",
-       "iDiskName",
-       "iDiskRegister",
-       "iDiskType",
-       "iDiskUserName",
-       "iDiskVolumeRefNum",
+       "hyphenationFactorForGlyphAtIndex:",
+       "iDiskNode",
        "icon",
+       "iconAsAttributedString",
        "iconForFile:",
        "iconForFileType:",
-       "iconForFiles:",
+       "iconForSize:",
+       "iconForSpecifier:size:",
        "iconForURL:withSize:",
        "iconForURL:withSize:cache:",
-       "iconPopUp",
        "iconRect",
-       "iconRef:label:",
-       "iconRef:label:forObjectName:",
        "iconSize",
-       "iconsAreSaved",
        "identifier",
-       "identifierAtIndex:",
        "identity",
        "ignore",
        "ignoreModifierKeysWhileDragging",
        "ignoreSpelling:",
        "ignoreWord:inSpellDocumentWithTag:",
-       "ignoredWordsInSpellDocumentWithTag:",
        "ignoresAlpha",
-       "ignoresAntialiasThreshold",
        "ignoresMouseEvents",
-       "ignoresMultiClick",
        "illegalCharacterSet",
        "image",
+       "image:didLoadPartOfRepresentation:withValidRows:",
+       "image:didLoadRepresentation:withStatus:",
+       "image:didLoadRepresentationHeader:",
        "image:focus:",
+       "image:willLoadRepresentation:",
        "imageAlignment",
        "imageAndTitleOffset",
        "imageAndTitleWidth",
-       "imageData",
-       "imageDimsWhenDisabled",
+       "imageAtIndex:",
+       "imageBounds",
+       "imageByApplyingTransform:",
+       "imageDidNotDraw:inRect:",
        "imageFileTypes",
-       "imageForControlTint:",
        "imageForPreferenceNamed:",
        "imageForSegment:",
        "imageForState:",
        "imageFrameStyle",
        "imageInterpolation",
        "imageNamed:",
-       "imageNamed:ofType:inBundle:",
-       "imageOfSelectedItem",
-       "imageOffset",
-       "imageOrigin",
        "imagePasteboardTypes",
-       "imagePicker:selectedImage:",
        "imagePosition",
        "imageRectForBounds:",
-       "imageRectForPaper:",
        "imageRectInRuler",
+       "imageRef",
        "imageRenderer",
        "imageRendererWithBytes:length:",
        "imageRendererWithBytes:length:MIMEType:",
+       "imageRendererWithData:MIMEType:",
        "imageRendererWithMIMEType:",
        "imageRendererWithName:",
        "imageRendererWithSize:",
-       "imageRep",
        "imageRepClassForData:",
        "imageRepClassForFileType:",
        "imageRepClassForPasteboardType:",
        "imageRepWithContentsOfFile:",
        "imageRepWithContentsOfURL:",
        "imageRepWithData:",
-       "imageRepWithPasteboard:",
        "imageRepsWithContentsOfFile:",
        "imageRepsWithContentsOfURL:",
        "imageRepsWithData:",
-       "imageRepsWithPasteboard:",
        "imageScaling",
        "imageSize",
        "imageUnfilteredFileTypes",
        "imageUnfilteredPasteboardTypes",
        "imageWidth",
-       "imageWithoutAlpha",
-       "imageablePageBounds",
-       "impl",
-       "implementation",
-       "implementionatWithImpl:",
+       "imageWithCGImage:",
+       "imageWithCGImage:options:",
+       "imageWithCVImageBuffer:options:",
+       "imageWithContentsOfURL:options:",
+       "imageWithData:bytesPerRow:size:format:colorSpace:",
+       "imageWithPDF:atSize:center:withOffset:intoRect:fillWith:red:green:blue:",
+       "imageWithPath:",
+       "imageWithPathInner:",
+       "immutableCopy",
        "implementorAtIndex:",
        "implementsSelector:",
-       "importBegan:",
-       "importContinued:",
-       "importFinished",
-       "importLock",
-       "importNode::",
        "importObject:",
-       "importPeople:intoGroup:",
-       "importPromisedFiles:intoGroup:",
-       "importPumaAddressBook:",
-       "importPumaLDAPServers",
-       "importToPerson:",
-       "importUnlock",
-       "importVCardData:intoGroup:",
-       "importVCardFiles:intoGroup:",
-       "importVCards",
        "importedObjects",
        "importsGraphics",
        "inLiveResize",
-       "includeNotesInVCards",
+       "inNextKeyViewOutsideWebFrameViews",
+       "inPalette",
+       "incObservationCount",
        "incomingReferrer",
        "increaseLengthBy:",
+       "increaseSizesToFit:",
+       "increaseUseCount",
        "increment",
        "incrementButtonWithParent:",
-       "incrementBy:",
-       "incrementOriginLoadCount",
+       "incrementRefCount",
+       "incrementRefCountForObjectID:",
+       "incrementSnapshotCountForGlobalID:",
        "incrementalImageReaderForRep:",
-       "incrementalLoadFromData:complete:",
        "incrementalLoadWithBytes:length:complete:",
        "increments",
        "indentationLevel",
-       "indentationMarkerFollowsCell",
        "indentationPerLevel",
-       "independentConversationQueueing",
        "index",
-       "indexEnumerator",
+       "indexAtPosition:",
        "indexFollowing:",
-       "indexForIdentifier:",
        "indexForKey:",
        "indexGreaterThanIndex:",
        "indexGreaterThanOrEqualToIndex:",
        "indexLessThanIndex:",
-       "indexLessThanOrEqualToIndex:",
-       "indexOf:",
-       "indexOf:::",
-       "indexOfAllGroup",
-       "indexOfAttributeBySelector:equalToObject:",
-       "indexOfCellWithTag:",
+       "indexOfBestMatchForDisplayNamePrefix:inCachedChildrenForNode:",
        "indexOfCrayon:",
-       "indexOfDirectoriesGroup",
-       "indexOfDirectory:",
-       "indexOfDirectoryResult:",
-       "indexOfGroup:",
-       "indexOfIdentifier:",
+       "indexOfFirstRangeContainingOrFollowing:",
        "indexOfItem:",
        "indexOfItemAtPoint:",
        "indexOfItemWithObjectValue:",
+       "indexOfItemWithRepresentedNavNode:",
        "indexOfItemWithRepresentedObject:",
        "indexOfItemWithSubmenu:",
        "indexOfItemWithTag:",
        "indexOfItemWithTarget:andAction:",
        "indexOfItemWithTitle:",
-       "indexOfLastImportGroup",
-       "indexOfLastSpecialGroup",
-       "indexOfMember:",
-       "indexOfMember:inSortedMembers:",
        "indexOfNode:inCachedChildrenForNode:",
        "indexOfObject:",
-       "indexOfObject:inRange:",
        "indexOfObject:range:identical:",
        "indexOfObjectIdenticalTo:",
        "indexOfObjectIdenticalTo:inRange:",
-       "indexOfRecord:",
        "indexOfSelectedItem",
        "indexOfTabViewItem:",
        "indexOfTabViewItemWithIdentifier:",
        "indexOfTickMarkAtPoint:",
        "indexPath",
-       "indexPreceding:",
+       "indexPathByAddingIndex:",
+       "indexPathByRemovingLastIndex",
+       "indexPathForOutlineView:row:",
+       "indexPathWithIndex:",
+       "indexReferenceModelObjectArray",
        "indexSet",
        "indexSetWithIndex:",
        "indexSetWithIndexesInRange:",
-       "indicatorImageInTableColumn:",
+       "indicesOfObjectsByEvaluatingObjectSpecifier:",
        "indicesOfObjectsByEvaluatingWithContainer:count:",
-       "info",
        "infoDictionary",
-       "infoForPerson:",
-       "informativeText",
+       "infoForBinding:",
        "init",
        "initAndTestWithTests:",
-       "initAsPeoplePicker:mainSplit:searchLabel:searchField:",
-       "initAsRegistered:",
-       "initAsTearOff",
-       "initAtPoint:inWindow:",
        "initAtPoint:withSize:callbackInfo:",
        "initByReferencingFile:",
        "initByReferencingURL:",
@@ -8904,41 +10122,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initDirectoryWithFileWrappers:",
        "initEPSOperationWithView:insideRect:toData:printInfo:",
        "initFileURLWithPath:",
+       "initForActionType:",
        "initForDeserializerStream:",
        "initForDirectImageRep:",
-       "initForIncrementalLoad",
+       "initForExpression:usingIteratorExpression:predicate:",
+       "initForExpression:usingIteratorVariable:predicate:",
+       "initForKeyBackPointer:",
+       "initForKeys:",
+       "initForKeys:count:",
+       "initForMetal:",
        "initForReadingWithData:",
        "initForSerializerStream:",
        "initForToolbar:withWidth:",
+       "initForURL:withContentsOfURL:ofType:error:",
        "initForWritingWithMutableData:",
        "initFromDictionaryRepresentation:",
        "initFromDocument:",
-       "initFromElement:ofDocument:",
        "initFromImage:rect:",
-       "initFromInfo:",
        "initFromMemoryNoCopy:length:freeWhenDone:",
-       "initFromName:device:inode:",
-       "initFromPList:target:andIdentifier:",
-       "initFromPath:",
-       "initFromSerialized:",
        "initFromSerializerStream:length:",
+       "initGlyphStack:",
        "initImageCell:",
-       "initInNode:name:",
-       "initInNode:recordRef:",
-       "initInNode:recordRef:type:",
-       "initInNode:type:name:",
-       "initInNode:type:name:create:",
-       "initIndexForClass:",
-       "initIsCocoa",
        "initListDescriptor",
        "initNotTestWithTest:",
-       "initOffscreen:withDepth:",
        "initOrTestWithTests:",
        "initPopUpWindow",
+       "initPriv",
        "initRecordDescriptor",
        "initRegularFileWithContents:",
        "initRemoteWithProtocolFamily:socketType:protocol:address:",
-       "initRemoteWithTCPPort:host:",
        "initSymbolicLinkWithDestination:",
        "initTextCell:",
        "initTextCell:pullsDown:",
@@ -8948,80 +10160,105 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initToBuffer:capacity:",
        "initToFileAtPath:append:",
        "initToMemory",
-       "initUnixFile:",
-       "initValues",
+       "initWith::::",
+       "initWith:options:",
        "initWithAEDescNoCopy:",
        "initWithAction:",
+       "initWithAdapter:",
+       "initWithAdapterOperator:correlation:",
+       "initWithAdapterOperator:row:",
        "initWithAffectedRange:layoutManager:undoManager:",
        "initWithAffectedRange:layoutManager:undoManager:replacementRange:",
+       "initWithAppleEventCode:",
+       "initWithAppleEventCode:presentableDescription:name:",
+       "initWithAppleEventCode:presentableDescription:name:value:",
        "initWithArray:",
        "initWithArray:copyItems:",
+       "initWithArray:forTarget:andRange:andCopyItems:",
+       "initWithAssignmentExpression:expression:",
+       "initWithAssignmentVariable:expression:",
        "initWithAttributeDictionary:",
        "initWithAttributedString:",
        "initWithAttributes:",
        "initWithAttributes:range:",
-       "initWithAuthentication:forUser:andPass:",
        "initWithAuthenticationChallenge:sender:",
        "initWithBaseString:",
        "initWithBestLocationRep:",
        "initWithBinder:object:",
+       "initWithBitmap:rowBytes:bounds:format:",
+       "initWithBitmap:rowBytes:bounds:format:options:",
+       "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:",
+       "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:size:",
        "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:",
-       "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:size:",
        "initWithBitmapRepresentation:",
        "initWithBool:",
-       "initWithBridge:",
-       "initWithButton:",
+       "initWithBridge:delegate:",
        "initWithButtonID:",
        "initWithBytes:length:",
        "initWithBytes:length:copy:freeWhenDone:bytesAreVM:",
        "initWithBytes:length:encoding:",
-       "initWithBytes:objCType:",
        "initWithBytesNoCopy:length:",
+       "initWithBytesNoCopy:length:encoding:freeWhenDone:",
        "initWithBytesNoCopy:length:freeWhenDone:",
        "initWithCFNetService:",
+       "initWithCGColor:",
+       "initWithCGColorSpace:",
+       "initWithCGContext:",
+       "initWithCGContext:options:",
        "initWithCGImage:",
+       "initWithCGImage:options:",
+       "initWithCGLContext:pixelFormat:",
+       "initWithCGLContext:pixelFormat:options:",
+       "initWithCGLSContext:pixelFormat:",
+       "initWithCGLSContext:pixelFormat:options:",
        "initWithCGSContext:",
+       "initWithCGSRegion:",
        "initWithCGSRegionObj:",
+       "initWithCIImage:",
        "initWithCString:",
        "initWithCString:length:",
-       "initWithCStringNoCopy:length:",
+       "initWithCString:noCopy:",
        "initWithCStringNoCopy:length:freeWhenDone:",
+       "initWithCVImageBuffer:options:",
        "initWithCachedResponse:request:key:",
        "initWithCallback:selector:",
-       "initWithCallbacks:",
        "initWithCapacity:",
        "initWithCapacity:compareSelector:",
-       "initWithCapacity:origin:image:",
+       "initWithCapacity:origin:image:yOffset:",
        "initWithCarbonWindowRef:takingOwnership:",
        "initWithCarbonWindowRef:takingOwnership:disableOrdering:",
        "initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:",
-       "initWithCards:duplicates:group:selectGroup:uiController:",
        "initWithCatalogName:colorName:genericColor:",
        "initWithCell:",
        "initWithChar:",
        "initWithCharacterIdentifier:collection:baseString:",
        "initWithCharacterRange:isSoft:",
+       "initWithCharacterRange:parent:",
        "initWithCharacterSet:",
        "initWithCharacters:length:",
        "initWithCharactersInString:",
-       "initWithCharactersNoCopy:length:",
        "initWithCharactersNoCopy:length:freeWhenDone:",
+       "initWithClass:",
+       "initWithClassDescription:",
+       "initWithClassPath:",
        "initWithClient:",
        "initWithCode:key:object:",
        "initWithCoder:",
+       "initWithCoercer:selector:",
+       "initWithCollection:",
+       "initWithColorProfile:",
+       "initWithColorSpace:components:count:",
+       "initWithColorSyncInfo:",
+       "initWithColorSyncProfile:",
+       "initWithColumnName:sqlType:",
        "initWithCommandDescription:",
        "initWithCompareSelector:",
-       "initWithCondition:",
-       "initWithConjunctionOperator:children:",
        "initWithConnection:components:",
-       "initWithContainerClass:key:",
-       "initWithContainerClass:key:baseGetter:baseSetter:",
-       "initWithContainerClass:key:baseGetter:mutatingMethods:",
-       "initWithContainerClass:key:getMethod:",
-       "initWithContainerClass:key:ivar:",
-       "initWithContainerClass:key:methods:",
-       "initWithContainerClass:key:nonmutatingMethods:mutatingMethods:",
-       "initWithContainerClass:key:setMethod:",
+       "initWithContainer:key:mutableSet:",
+       "initWithContainer:key:mutableSet:mutationMethods:",
+       "initWithContainerClass:keyPath:",
+       "initWithContainerClass:keyPath:firstDotIndex:",
+       "initWithContainerClassDescription:",
        "initWithContainerClassDescription:containerSpecifier:key:",
        "initWithContainerClassDescription:containerSpecifier:key:index:",
        "initWithContainerClassDescription:containerSpecifier:key:name:",
@@ -9029,9 +10266,22 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithContainerClassDescription:containerSpecifier:key:startSpecifier:endSpecifier:",
        "initWithContainerClassDescription:containerSpecifier:key:test:",
        "initWithContainerClassDescription:containerSpecifier:key:uniqueID:",
+       "initWithContainerClassID:key:baseGetter:baseSetter:containerIsa:proxyClass:",
+       "initWithContainerClassID:key:baseGetter:mutatingMethods:proxyClass:",
+       "initWithContainerClassID:key:containerIsa:",
+       "initWithContainerClassID:key:containerIsa:ivar:",
+       "initWithContainerClassID:key:containerIsa:ivar:proxyClass:",
+       "initWithContainerClassID:key:implementation:selector:extraArguments:count:",
+       "initWithContainerClassID:key:ivar:",
+       "initWithContainerClassID:key:method:",
+       "initWithContainerClassID:key:methods:proxyClass:",
+       "initWithContainerClassID:key:mutableCollectionGetter:proxyClass:",
+       "initWithContainerClassID:key:nonmutatingMethods:mutatingMethods:proxyClass:",
+       "initWithContainerClassID:key:proxyClass:",
        "initWithContainerSize:",
        "initWithContainerSpecifier:key:",
        "initWithContent:",
+       "initWithContentKind:occurrence:",
        "initWithContentRect:",
        "initWithContentRect:comboBoxCell:",
        "initWithContentRect:styleMask:backing:defer:",
@@ -9039,91 +10289,109 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithContentRect:styleMask:backing:defer:screen:",
        "initWithContentSize:preferredEdge:",
        "initWithContentsOfFile:",
-       "initWithContentsOfFile:byReference:",
+       "initWithContentsOfFile:encoding:error:",
+       "initWithContentsOfFile:error:",
        "initWithContentsOfFile:ofType:",
+       "initWithContentsOfFile:options:error:",
+       "initWithContentsOfFile:usedEncoding:error:",
        "initWithContentsOfMappedFile:",
        "initWithContentsOfMappedFile:withFileAttributes:",
        "initWithContentsOfURL:",
        "initWithContentsOfURL:byReference:",
-       "initWithContentsOfURL:error:",
+       "initWithContentsOfURL:encoding:error:",
        "initWithContentsOfURL:ofType:",
+       "initWithContentsOfURL:ofType:error:",
+       "initWithContentsOfURL:options:",
+       "initWithContentsOfURL:options:error:",
+       "initWithContentsOfURL:usedEncoding:error:",
        "initWithController:",
-       "initWithController:key:valueTransformer:binding:",
-       "initWithController:key:valueTransformerName:binding:",
-       "initWithCountryCode:identifier:label:insertPopups:andInputController:",
+       "initWithController:keyPath:",
+       "initWithController:retainController:key:valueTransformer:binding:",
+       "initWithCurrentBrowsingNodePath:fileListMode:",
        "initWithCurrentQDPort",
+       "initWithCustomSelector:modifier:",
        "initWithCyan:magenta:yellow:black:alpha:",
+       "initWithDOMRange:",
        "initWithData:",
        "initWithData:DIBFormat:",
        "initWithData:MIMEType:",
+       "initWithData:URL:MIMEType:textEncodingName:frameName:",
+       "initWithData:bytesPerRow:size:format:colorSpace:",
+       "initWithData:bytesPerRow:size:format:options:",
+       "initWithData:documentClass:isSingleDTDNode:options:error:",
+       "initWithData:documentClass:options:error:",
        "initWithData:encoding:",
        "initWithData:hfsTypeCode:",
+       "initWithData:isSingleDTDNode:options:error:",
+       "initWithData:options:",
+       "initWithData:options:documentAttributes:error:",
+       "initWithData:options:error:",
        "initWithData:range:",
-       "initWithDataFile:lockMode:cardClass:snoop:",
-       "initWithDataList:",
-       "initWithDataNoCopy:freeWhenDone:",
+       "initWithDataNoCopy:",
        "initWithDataRepresentation:",
        "initWithDataSource:",
        "initWithDataSource:ascending:",
-       "initWithDate:",
        "initWithDateFormat:allowNaturalLanguage:",
        "initWithDecimal:",
        "initWithDefaultAttributes:",
        "initWithDefaults:initialValues:",
        "initWithDelegate:",
        "initWithDelegate:name:",
+       "initWithDescription:kernelFile:filterBundle:",
        "initWithDescriptorType:bytes:length:",
        "initWithDescriptorType:data:",
        "initWithDictionary:",
        "initWithDictionary:copyItems:",
-       "initWithDir:",
-       "initWithDir:bufferSize:",
-       "initWithDir:bufferSize:dataLength:data:",
-       "initWithDir:cString:",
-       "initWithDir:cStrings:",
-       "initWithDir:copyOfDsDataNode:",
-       "initWithDir:dsDataList:",
-       "initWithDir:dsDataNode:",
-       "initWithDir:nodeRef:nodeName:",
-       "initWithDir:separator:pattern:",
-       "initWithDir:string:",
-       "initWithDir:strings:",
-       "initWithDocFormat:documentAttributes:",
-       "initWithDocument:URL:windowProperties:locationProperties:",
+       "initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:",
+       "initWithDocument:forStore:",
+       "initWithDocumentView:",
        "initWithDomain:code:userInfo:",
        "initWithDomain:type:name:",
        "initWithDomain:type:name:port:",
        "initWithDomainName:key:title:image:",
        "initWithDouble:",
-       "initWithDownload:",
-       "initWithDragInfo:tableView:completion:andRow:",
-       "initWithDrawSelector:delegate:",
+       "initWithDrawingView:rects:",
+       "initWithDuration:animationCurve:",
        "initWithDynamicMenuItemDictionary:",
+       "initWithEditCommand:",
        "initWithElement:fauxParent:",
-       "initWithElementName:",
+       "initWithElement:frame:stringValue:",
        "initWithElementSize:capacity:",
+       "initWithElementTypeDescription:",
+       "initWithEntity:",
+       "initWithEntity:foreignKey:",
+       "initWithEntity:insertIntoManagedObjectContext:",
+       "initWithEntity:inverseToMany:",
+       "initWithEntity:propertyDescription:",
+       "initWithEntity:propertyDescription:virtualForToMany:",
+       "initWithEntity:sqlString:",
+       "initWithEntity:toOneRelationship:",
        "initWithEvent:replyEvent:",
        "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:",
        "initWithExactName:data:",
+       "initWithExpressionType:",
+       "initWithExpressionType:operand:selector:argumentArray:",
+       "initWithExtent:format:",
+       "initWithExternalName:",
        "initWithFBENode:",
-       "initWithFD:expiry:",
-       "initWithFZService:named:",
+       "initWithFactory:",
        "initWithFile:",
        "initWithFileAtPath:",
        "initWithFileAttributes:",
-       "initWithFileDescriptor:",
        "initWithFileDescriptor:closeOnDealloc:",
        "initWithFileName:markerName:",
        "initWithFileProperty:dataSource:ascending:",
-       "initWithFileSpecifier:",
        "initWithFileWrapper:",
+       "initWithFilter:closure:",
+       "initWithFilter:connectionID:",
+       "initWithFilter:options::",
        "initWithFireDate:interval:target:selector:userInfo:repeats:",
        "initWithFloat:",
        "initWithFocusedViewRect:",
-       "initWithFolderType:createFolder:",
        "initWithFont:color:",
        "initWithFont:usingPrinterFont:",
        "initWithFontAttributes:",
+       "initWithFontDescriptor:",
        "initWithForm:values:sourceFrame:",
        "initWithFormat:",
        "initWithFormat:arguments:",
@@ -9135,93 +10403,108 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithFrame:error:",
        "initWithFrame:frameName:groupName:",
        "initWithFrame:inStatusBar:",
-       "initWithFrame:inWindow:",
        "initWithFrame:menuView:",
        "initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:",
        "initWithFrame:mode:prototype:numberOfRows:numberOfColumns:",
        "initWithFrame:node:",
-       "initWithFrame:pixelFormat:",
        "initWithFrame:plugin:URL:baseURL:MIMEType:attributeKeys:attributeValues:",
        "initWithFrame:prototypeRulerMarker:",
        "initWithFrame:pullsDown:",
        "initWithFrame:styleMask:owner:",
-       "initWithFrame:text:alignment:",
        "initWithFrame:textContainer:",
-       "initWithFrame:view:",
        "initWithFunc:forImp:selector:",
        "initWithFunc:ivarOffset:",
+       "initWithGLContext:pixelFormat:vtable:options:",
        "initWithGlyph:forFont:baseString:",
        "initWithGlyphIndex:characterRange:",
        "initWithGlyphName:glyph:forFont:baseString:",
        "initWithGrammar:",
+       "initWithGraph:",
        "initWithGraphicsContext:",
-       "initWithGroup:",
-       "initWithGroup:members:",
-       "initWithGroup:members:showAs:",
-       "initWithGroup:newMe:",
-       "initWithGroup:newName:",
-       "initWithGroup:originalPeople:",
-       "initWithGroup:person:properties:",
-       "initWithGroup:records:",
-       "initWithGroups:",
-       "initWithHTML:baseURL:documentAttributes:",
        "initWithHTML:documentAttributes:",
        "initWithHTML:options:documentAttributes:",
        "initWithHTMLView:",
        "initWithHistory:",
        "initWithHost:port:protocol:realm:authenticationMethod:",
-       "initWithHost:user:password:",
-       "initWithHostName:serverName:textProc:errorProc:timeout:secure:encapsulated:",
        "initWithHue:saturation:brightness:alpha:",
+       "initWithICCProfileData:",
        "initWithIdentifier:",
        "initWithIdentifier:forColorPanel:",
        "initWithImage:",
        "initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:",
        "initWithImage:hotSpot:",
-       "initWithImpl:",
+       "initWithImage:keysAndValues:",
+       "initWithImage:options:",
+       "initWithImageProvider:size::format:colorSpace:options:",
+       "initWithImageProvider:userInfo:size:format:flipped:colorSpace:",
        "initWithIncrements:parent:",
        "initWithIndex:",
        "initWithIndex:parent:",
        "initWithIndexSet:",
+       "initWithIndexes:",
+       "initWithIndexes:length:",
        "initWithIndexesInRange:",
-       "initWithInfo:",
-       "initWithInputController:",
-       "initWithInputController:andField:",
+       "initWithInstanceInfo:renderingMode:",
        "initWithInt:",
        "initWithInvocation:conversation:sequence:importedObjects:connection:",
        "initWithItem:",
        "initWithItem:forToolbarView:",
        "initWithItemIdentifier:",
+       "initWithJPEGFile:",
+       "initWithJPEGFile:options:",
+       "initWithJob:",
        "initWithKWQFileButton:",
+       "initWithKey:appleEventCode:type:isOptional:presentableDescription:name:",
+       "initWithKey:appleEventCode:type:isOptional:presentableDescription:nameOrNames:",
+       "initWithKey:appleEventCode:type:presentableDescription:name:",
+       "initWithKey:appleEventCode:typeDescription:presentableDescription:name:",
        "initWithKey:ascending:",
        "initWithKey:ascending:selector:",
        "initWithKey:isStored:",
        "initWithKey:mask:binding:",
+       "initWithKey:type:access:",
+       "initWithKey:type:access:appleEventCode:presentableDescription:name:",
+       "initWithKey:type:isReadOnly:appleEventCode:isLocationRequiredToCreate:",
+       "initWithKey:type:isReadOnly:appleEventCode:presentableDescription:nameOrNames:",
        "initWithKey:value:",
+       "initWithKeyPath:",
        "initWithKeychainItem:",
        "initWithKeys:",
-       "initWithLDAPManager:forServer:queryString:sessionUID:",
-       "initWithLDAPManager:forServer:sessionUID:",
+       "initWithKind:",
+       "initWithKind:name:stringValue:",
+       "initWithKind:name:stringValue:URI:",
+       "initWithKind:options:",
+       "initWithLeftExpression:rightExpression:customSelector:",
+       "initWithLeftExpression:rightExpression:modifier:type:options:",
        "initWithLength:",
-       "initWithListBox:items:",
+       "initWithListBox:",
        "initWithLoader:dataSource:",
-       "initWithLoader:job:",
-       "initWithLocal",
        "initWithLocal:connection:",
+       "initWithLocalName:URI:",
+       "initWithLocaleIdentifier:",
        "initWithLong:",
        "initWithLongLong:",
        "initWithMIMEType:",
        "initWithMKKDInitializer:index:",
-       "initWithMachMessage:",
        "initWithMachPort:",
+       "initWithMainResource:subresources:subframeArchives:",
+       "initWithManagedObjectModel:",
+       "initWithManagedObjectModel:configurationName:",
        "initWithMantissa:exponent:isNegative:",
+       "initWithManyToMany:fk:invfk:",
+       "initWithMarkerFormat:options:",
        "initWithMemoryCapacity:diskCapacity:diskPath:",
        "initWithMethodSignature:",
+       "initWithModel:entityDescription:",
+       "initWithModelObserver:availableModelAndProxyKeys:",
        "initWithMovie:",
        "initWithMovieView:selector:operation:",
        "initWithMutableAttributedString:",
-       "initWithMutableData:forDebugging:languageEncoding:nameEncoding:textProc:errorProc:",
        "initWithName:",
+       "initWithName:appleEventCode:enumeratorDescriptions:",
+       "initWithName:appleEventCode:fieldDescriptions:presentableDescription:",
+       "initWithName:appleEventCode:objcClassName:",
+       "initWithName:attributes:",
        "initWithName:color:image:",
        "initWithName:data:",
        "initWithName:element:",
@@ -9229,30 +10512,48 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithName:fromFile:",
        "initWithName:host:",
        "initWithName:object:userInfo:",
-       "initWithName:parent:resolve:",
        "initWithName:position:rect:view:children:",
        "initWithName:reason:userInfo:",
+       "initWithName:stringValue:",
        "initWithName:value:source:children:",
        "initWithName:webFrameView:webView:",
+       "initWithNamespaces:",
        "initWithNavView:",
-       "initWithNewPerson:selectedGroup:",
+       "initWithNestedDictionary:",
        "initWithNibNamed:bundle:",
-       "initWithNode:",
+       "initWithNode:delegate:",
        "initWithNotificationCenter:",
        "initWithNotificationObject:",
        "initWithObjCType:count:at:",
        "initWithObject:",
+       "initWithObject:entity:",
+       "initWithObjectID:",
        "initWithObjectSpecifier:comparisonOperator:testObject:",
+       "initWithObjectStore:andClass:forEntity:withType:",
        "initWithObjects:",
        "initWithObjects:count:",
        "initWithObjects:count:target:reverse:freeWhenDone:",
        "initWithObjects:forKeys:",
        "initWithObjects:forKeys:count:",
        "initWithObjectsAndKeys:",
+       "initWithObjects_ex:count:",
+       "initWithObjects_ex:forKeys:count:",
+       "initWithObservedNode:",
        "initWithObserver:name:object:",
+       "initWithObserver:relationshipKey:keyPathFromRelatedObject:options:context:",
        "initWithOffset:",
-       "initWithOriginalImage:",
-       "initWithOriginalImage:crop:smallIcon:",
+       "initWithOperand:andKeyPath:",
+       "initWithOperatorType:",
+       "initWithOperatorType:modifier:",
+       "initWithOperatorType:modifier:negate:",
+       "initWithOperatorType:modifier:options:",
+       "initWithOperatorType:modifier:variant:",
+       "initWithOperatorType:modifier:variant:position:",
+       "initWithOptions:",
+       "initWithOriginalClass:",
+       "initWithOriginalString:range:",
+       "initWithPNGFile:",
+       "initWithPNGFile:options:",
        "initWithPanel:",
        "initWithPartCode:parent:",
        "initWithPasteboard:",
@@ -9260,71 +10561,82 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithPath:",
        "initWithPath:documentAttributes:",
        "initWithPath:flags:createMode:",
-       "initWithPeople:",
-       "initWithPerson:imageData:",
-       "initWithPerson:model:",
+       "initWithPath:logonOK:",
+       "initWithPath:traverseLink:",
+       "initWithPersistenceStore:",
        "initWithPickerMask:colorPanel:",
        "initWithPosition:objectSpecifier:",
+       "initWithPredicate:",
+       "initWithPredicateOperator:leftExpression:rightExpression:",
+       "initWithPredicateOperator:leftKeyPath:rightKeyPath:",
+       "initWithPredicateOperator:leftKeyPath:rightValue:",
        "initWithPrintInfo:",
        "initWithPrompt:text:",
        "initWithProperties:",
-       "initWithProperty:label:key:value:searchPeople:comparison:",
-       "initWithProperty:withPopup:",
+       "initWithProperties:suiteName:usesUnnamedArguments:classSynonymDescriptions:",
+       "initWithProperty:",
        "initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:",
        "initWithProtocol:httpRequest:challenge:callback:context:",
        "initWithProtocolFamily:socketType:protocol:address:",
-       "initWithProtocolFamily:socketType:protocol:socket:",
        "initWithProxyHost:port:type:realm:authenticationMethod:",
        "initWithQButton:",
        "initWithQComboBox:",
        "initWithQLineEdit:",
        "initWithQObject:timerId:",
        "initWithQScrollBar:",
+       "initWithQSlider:",
        "initWithQTextEdit:",
        "initWithRTF:",
        "initWithRTF:documentAttributes:",
        "initWithRTFD:",
        "initWithRTFD:documentAttributes:",
        "initWithRTFDFileWrapper:",
-       "initWithRTFDFileWrapper:documentAttributes:",
        "initWithRange:",
-       "initWithRawCatalogInfo:name:parentRef:ref:hfsName:hidden:",
+       "initWithRanges:count:",
        "initWithRealClient:",
        "initWithRealTextStorage:",
        "initWithReceivePort:sendPort:",
        "initWithReceivePort:sendPort:components:",
        "initWithRect:",
+       "initWithRect:clip:type:",
        "initWithRect:color:ofView:",
        "initWithRects:count:",
        "initWithRed:green:blue:alpha:",
        "initWithRef:",
-       "initWithRef:containerType:",
-       "initWithRef:hidden:iDisk:",
        "initWithRefCountedRunArray:",
-       "initWithRefNoCopy:",
        "initWithRegistryClass:andObjectClass:",
        "initWithRegistryString:andObjectClass:",
        "initWithRemoteName:",
+       "initWithRenderer:",
        "initWithRequest:",
        "initWithRequest:cachedResponse:client:",
        "initWithRequest:delegate:",
-       "initWithRequest:frameName:notifyData:",
-       "initWithRequest:monitor:",
-       "initWithRequest:pluginPointer:notifyData:",
-       "initWithResponse:data:",
+       "initWithRequest:delegate:priority:",
+       "initWithRequest:frameName:notifyData:sendNotification:",
+       "initWithRequest:pluginPointer:notifyData:sendNotification:",
+       "initWithRequestURL:pluginPointer:notifyData:sendNotification:",
        "initWithResponse:data:userInfo:storagePolicy:",
+       "initWithResumeInformation:",
        "initWithRole:parent:",
+       "initWithRole:subrole:parent:",
+       "initWithRootElement:",
+       "initWithRootStore:configurationName:readOnly:url:",
        "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:",
        "initWithRow:column:tableView:",
        "initWithRow:ofTableView:",
        "initWithRow:tableColumn:",
-       "initWithRulebookSet:",
+       "initWithRulerMarker:parent:",
+       "initWithRulerView:",
        "initWithRulerView:markerLocation:image:imageOrigin:",
        "initWithRunStorage:",
-       "initWithScheme:host:path:",
+       "initWithRuns:glyphOrigin:lineFragmentWidth:",
+       "initWithSQLCore:",
+       "initWithSQLEntity:objectID:",
+       "initWithSavedQueryNode:",
        "initWithScrollView:orientation:",
-       "initWithSelectedGroup:addedToGroup:updatedPeople:updatedPeopleProperties:addedPeople:",
+       "initWithSearchStrategy:",
        "initWithSelector:",
+       "initWithSelector:argumentArray:",
        "initWithSendPort:receivePort:components:",
        "initWithSerializedRepresentation:",
        "initWithSet:",
@@ -9332,14 +10644,22 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithSetFunc:forImp:selector:",
        "initWithSetFunc:ivarOffset:",
        "initWithSetHeader:",
+       "initWithSettings:showPrintPanel:sender:delegate:didPrintSelector:contextInfo:",
        "initWithShadow:",
        "initWithShort:",
+       "initWithSimpleQueryString:",
        "initWithSize:",
        "initWithSize:depth:separate:alpha:",
        "initWithSize:forSpaceItem:",
        "initWithSource:",
-       "initWithSource:destination:delegate:",
+       "initWithSource::dest::",
+       "initWithSource:forRelationship:asFault:",
+       "initWithSourceAttributeName:destinationAttributeName:",
        "initWithSparseArray:",
+       "initWithSpecifier:",
+       "initWithStatement:",
+       "initWithStore:",
+       "initWithStore:fromPath:",
        "initWithStream:",
        "initWithStream:view:",
        "initWithString:",
@@ -9347,12 +10667,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithString:calendarFormat:",
        "initWithString:calendarFormat:locale:",
        "initWithString:locale:",
-       "initWithString:nodeType:",
        "initWithString:relativeToURL:",
-       "initWithSuiteName:bundle:",
+       "initWithStringValue:",
        "initWithSuiteName:className:dictionary:",
        "initWithSuiteName:commandName:dictionary:",
        "initWithTCPPort:",
+       "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:",
+       "initWithTableView:",
+       "initWithTableView:clipRect:",
        "initWithTarget:",
        "initWithTarget:action:",
        "initWithTarget:connection:",
@@ -9361,38 +10683,47 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithTarget:protocol:",
        "initWithTarget:selector:object:",
        "initWithTextAlignment:location:options:",
+       "initWithTextBlock:charIndex:layoutManager:containerWidth:",
+       "initWithTextBlock:charRange:glyphRange:layoutRect:boundsRect:layoutManager:containerWidth:",
+       "initWithTextBlock:charRange:layoutManager:containerWidth:",
        "initWithTextControl:colorPanel:delegate:",
+       "initWithTextField:QLineEdit:",
        "initWithTextStorage:",
        "initWithTextStorage:range:",
-       "initWithTimeInterval:sinceDate:",
-       "initWithTimeIntervalSince1970:",
+       "initWithTextTable:charIndex:layoutManager:containerWidth:",
+       "initWithTexture:size:flipped:colorSpace:",
+       "initWithTexture:size:options:",
+       "initWithTidyNode:",
        "initWithTimeIntervalSinceNow:",
        "initWithTimeIntervalSinceReferenceDate:",
        "initWithTitle:",
        "initWithTitle:action:keyEquivalent:",
-       "initWithTitle:inputController:",
+       "initWithTitle:action:keyEquivalent:representedNavNode:",
        "initWithTransform:",
+       "initWithTranslator:selector:",
+       "initWithTreeController:",
+       "initWithTreeController:keyPath:",
        "initWithType:",
        "initWithType:arg:",
-       "initWithType:itemIdentifier:",
+       "initWithType:error:",
        "initWithType:location:",
-       "initWithUIController:",
-       "initWithUIController:group:",
-       "initWithUID:",
-       "initWithUID:dataFile:",
+       "initWithType:subpredicates:",
+       "initWithTypefaceInfo:key:",
+       "initWithTypesetter:",
        "initWithURL:",
        "initWithURL:MIMEType:expectedContentLength:textEncodingName:",
+       "initWithURL:allowNonExecutable:",
        "initWithURL:byReference:",
        "initWithURL:cachePolicy:timeoutInterval:",
        "initWithURL:cached:",
        "initWithURL:documentAttributes:",
-       "initWithURL:httpStream:readStreamToProxy:writeStreamToProxy:",
+       "initWithURL:options:documentAttributes:error:",
        "initWithURL:target:parent:title:",
        "initWithURL:title:",
+       "initWithURL:traverseLink:",
        "initWithURLString:title:lastVisitedTimeInterval:",
        "initWithUTF8String:",
-       "initWithUndoManager:",
-       "initWithUniqueId:",
+       "initWithUnavoidableSpecifier:path:url:isSymbolicLink:",
        "initWithUnsignedChar:",
        "initWithUnsignedInt:",
        "initWithUnsignedLong:",
@@ -9400,38 +10731,43 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "initWithUnsignedShort:",
        "initWithUser:",
        "initWithUser:password:persistence:",
-       "initWithUser:password:url:",
-       "initWithVCardRepresentation:",
-       "initWithValue:label:property:",
+       "initWithValue:sqlType:",
+       "initWithValues:count:",
+       "initWithValues:objectID:",
        "initWithView:",
        "initWithView:className:",
+       "initWithView:context:",
+       "initWithView:height:fill:isHorizontal:",
        "initWithView:layoutManager:characterIndex:attachmentCell:",
        "initWithView:printInfo:",
        "initWithVoice:",
        "initWithWebFrame:",
        "initWithWebFrameView:",
        "initWithWhite:alpha:",
-       "initWithWidget:",
        "initWithWindow:",
        "initWithWindow:rect:",
        "initWithWindowNibName:",
        "initWithWindowNibName:owner:",
-       "initWithWindowNibPath:owner:",
-       "initWithWindowRef:",
+       "initWithX:",
+       "initWithX:Y:",
+       "initWithX:Y:Z:",
+       "initWithX:Y:Z:W:",
+       "initWithXMLNode:objectID:",
+       "initWithXMLString:",
        "initWithYear:month:day:hour:minute:second:timeZone:",
-       "initialEvent",
-       "initialFieldsForProperty:",
        "initialFirstResponder",
        "initialPoint",
        "initialRequest",
        "initialValues",
        "initialize",
-       "initializeDataFileInfo:",
+       "initialize:",
+       "initializeButtonStructureAtX:y:forResolution:",
        "initializeFromDefaults",
        "initializeItem:",
+       "initializeRecipe:",
        "initializeSettings:",
-       "initializeUserAndSystemFonts",
        "initializerFromKeyArray:",
+       "inlayROI:forRect:",
        "innerRect",
        "innerTitleRect",
        "inputClientBecomeActive:",
@@ -9439,78 +10775,82 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "inputClientEnabled:",
        "inputClientResignActive:",
        "inputContext",
+       "inputContextForFirstTextView:",
        "inputContextWithClient:",
-       "inputController",
        "inputElementAltText",
        "inputKeyBindingManager",
+       "inputKeys",
+       "inputStreamWithFileAtPath:",
        "insert:",
-       "insert:before:",
        "insertAttributedString:atIndex:",
        "insertBacktab:",
+       "insertChild:atIndex:",
        "insertColor:key:atIndex:",
        "insertColumn:",
        "insertColumn:withCells:",
        "insertCompletion:forPartialWordRange:movement:isFinal:",
-       "insertCustomLabel:",
-       "insertData::",
+       "insertCorrelation:",
        "insertDescriptor:atIndex:",
        "insertElement:atIndex:",
        "insertElement:range:coalesceRuns:",
        "insertElements:count:atIndex:",
+       "insertEntity:intoOrderingArray:withDependencies:processingSet:",
        "insertEntry:atIndex:",
-       "insertFormat:atIndex:",
        "insertGlyph:atGlyphIndex:characterIndex:",
+       "insertGlyphs:",
        "insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:",
-       "insertInAttachments:",
        "insertItem:atDateIndex:",
        "insertItem:atIndex:",
        "insertItem:path:dirInfo:zone:plist:",
        "insertItemViewer:atIndex:",
-       "insertItemWithImage:atIndex:",
        "insertItemWithItemIdentifier:atIndex:",
        "insertItemWithObjectValue:atIndex:",
        "insertItemWithTitle:action:keyEquivalent:atIndex:",
        "insertItemWithTitle:atIndex:",
+       "insertLineBreak",
        "insertNewButtonImage:in:",
        "insertNewline:",
-       "insertNewlineIgnoringFieldEditor:",
+       "insertNode:atSubNodeIndex:",
+       "insertObject:",
        "insertObject:at:",
        "insertObject:atArrangedObjectIndex:",
+       "insertObject:atArrangedObjectIndexPath:",
        "insertObject:atIndex:",
+       "insertObject:inAttributesAtIndex:",
+       "insertObject:inNamespacesAtIndex:",
        "insertObject:range:",
-       "insertObjectIntoMasterArrayRelationship:atIndex:",
+       "insertObjectIntoMasterArrayRelationship:atIndex:selectionMode:",
        "insertObjects:atArrangedObjectIndexes:",
        "insertObjects:atIndexes:",
-       "insertObjectsIntoMasterArrayRelationship:atIndexes:",
-       "insertParagraphSeparator:",
+       "insertObjectsIntoMasterArrayRelationship:atIndexes:selectionMode:",
+       "insertParagraphSeparator",
+       "insertParagraphSeparatorInQuotedContent",
        "insertPopItemWithTitle:andObject:",
        "insertProxy:",
        "insertRow:",
        "insertRow:withCells:",
-       "insertRulers",
-       "insertSpace:atIndex:",
-       "insertSpinningArrows",
+       "insertRows:atIndex:",
+       "insertStatement",
        "insertString:atIndex:",
        "insertTab:",
-       "insertTabIgnoringFieldEditor:",
-       "insertTabViewItem:atIndex:",
+       "insertTable:",
        "insertText:",
        "insertText:client:",
+       "insertText:selectInsertedText:",
        "insertTextContainer:atIndex:",
        "insertValue:atIndex:inPropertyWithKey:",
        "insertValue:inPropertyWithKey:",
-       "insertValue:withLabel:atIndex:",
-       "insertedNullPlaceholder",
+       "insertedObjects",
        "insertionContainer",
        "insertionIndex",
-       "insertionIndexForGroup:",
-       "insertionIndexForMember:inSortedMembers:",
        "insertionKey",
        "insertionPointColor",
        "insertionReplaces",
        "insertsNullPlaceholder",
+       "insetByX:Y:",
        "installInFrame:",
        "installInputManagerMenu:",
+       "installKeyEventHandler",
        "installedPlugins",
        "instanceMethodDescFor:",
        "instanceMethodDescriptionForSelector:",
@@ -9520,158 +10860,155 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "instancesImplementSelector:",
        "instancesRespondTo:",
        "instancesRespondToSelector:",
+       "instantiate::",
        "instantiateNibWithExternalNameTable:",
        "instantiateNibWithOwner:topLevelObjects:",
        "instantiateObject:",
        "instantiateWithObjectInstantiator:",
        "int32Value",
        "intAttribute:forGlyphAtIndex:",
-       "intForKey:inTable:",
+       "intParameterValue:",
        "intValue",
-       "intValueOfProperty:",
        "integerForKey:",
        "intercellSpacing",
        "interceptKeyEvent:toView:",
        "interfaceStyle",
-       "internalName",
+       "internCString:pointer:",
+       "internalNameForEntityName:version:",
+       "internalNameForPropertyName:version:",
        "internalSaveTo:removeBackup:errorHandler:",
        "internalSaveTo:removeBackup:errorHandler:temp:backup:",
-       "internalSubset",
-       "internalWritePath:errorHandler:remapContents:",
+       "internalWritePath:errorHandler:remapContents:hardLinkPath:",
        "interpretEventAsCommand:forClient:",
        "interpretEventAsText:forClient:",
        "interpretKeyEvents:",
        "interpretKeyEvents:forClient:",
        "interpretKeyEvents:sender:",
+       "interpreterBuiltins",
        "interpreterCount",
-       "interrupt",
-       "interruptExecution",
        "interruptForPolicyChangeError",
-       "intersectGroupMembers:withSearchResult:",
        "intersectSet:",
+       "intersectWith:",
        "intersectWithRect:",
-       "intersectsIndexesInRange:",
        "intersectsSet:",
-       "interval",
        "intervalSinceLastActive",
        "invTransform:",
        "invTransformRect:",
        "invalidate",
        "invalidate:",
        "invalidateAttributesInRange:",
+       "invalidateCacheAndStorage",
        "invalidateCachedDrawingImage",
-       "invalidateClassDescriptionCache",
        "invalidateConnectionsAsNecessary:",
        "invalidateCursorRectsForView:",
        "invalidateDisplayForCharacterRange:",
        "invalidateDisplayForGlyphRange:",
-       "invalidateDisplayedMembersList",
        "invalidateFocus:",
        "invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:",
        "invalidateHashMarks",
-       "invalidateInvisible",
        "invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:",
-       "invalidateParagraphStyles",
+       "invalidateObjectValueInObject:",
+       "invalidateObjectsWithGlobalIDs:",
        "invalidateProxy",
        "invalidateRect:",
        "invalidateRegion:",
-       "invalidateResourceCache",
        "invalidateShadow",
        "invalidateTextContainerOrigin",
-       "invalidateWrapper",
+       "inverseColumnName",
        "inverseForRelationshipKey:",
+       "inverseManyToMany",
+       "inverseRelationship",
+       "inverseToOne",
        "invert",
-       "invertedDictionary",
        "invertedSet",
-       "invocation",
+       "invfk",
        "invocationWithMethodSignature:",
        "invoke",
+       "invokeDefaultMethodWithArguments:",
        "invokeSelector:withArguments:forBinding:atIndex:error:",
+       "invokeSelector:withArguments:forBinding:atIndexPath:error:",
        "invokeSelector:withArguments:forBinding:error:",
        "invokeSelector:withArguments:forBinding:object:",
        "invokeServiceIn:msg:pb:userData:error:",
        "invokeServiceIn:msg:pb:userData:menu:remoteServices:",
+       "invokeUndefinedMethodFromWebScript:withArguments:",
        "invokeWithTarget:",
        "invokesSeparatelyWithArrayObjectsWithBinding:",
-       "isAClassOfObject:",
        "isARepeat",
        "isAbsolutePath",
+       "isAbstract",
        "isActive",
-       "isAddressBook",
-       "isAdmin",
        "isAlias",
        "isAlternate",
        "isAncestorOfObject:",
        "isAnimating",
-       "isAnyApplicationSpeaking",
-       "isApplication",
+       "isAnimationFinished",
        "isAtEnd",
        "isAttached",
+       "isAttribute",
        "isAutodisplay",
-       "isAutoscroll",
-       "isAvaliable:",
-       "isBaseFont",
        "isBeginMark",
        "isBeingEdited",
        "isBezeled",
-       "isBidirectionalControlCharacter:",
        "isBindingKeyOptional:",
        "isBindingKeyless:",
        "isBindingReadOnly:",
+       "isBooleanValueBindingForObject:",
        "isBordered",
-       "isBorderedForState:",
        "isButtonBordered",
-       "isBycopy",
        "isByref",
        "isCachedSeparately",
-       "isCanonical",
-       "isCardDisplayed",
-       "isCardPaneVisible",
        "isCaseInsensitiveLike:",
+       "isCharacterSmartReplaceExempt:isPreviousCharacter:",
        "isCoalescing",
-       "isCocoa",
        "isColor",
+       "isColumn",
        "isColumnSelected:",
-       "isCompact",
        "isCompiled",
        "isConnected",
        "isContainer",
+       "isContentEditable",
        "isContextHelpModeActive",
        "isContinuous",
+       "isContinuousGrammarCheckingEnabled",
        "isContinuousSpellCheckingEnabled",
-       "isControllerVisible",
        "isCopyingOperation",
        "isCurrListEditable",
        "isDataRetained",
        "isDaylightSavingTime",
        "isDaylightSavingTimeForDate:",
-       "isDaylightSavingTimeForTimeInterval:",
-       "isDeadKeyProcessingEnabled",
-       "isDeferred",
+       "isDebugEnabled",
        "isDeletableFileAtPath:",
+       "isDeleted",
        "isDescendantOf:",
-       "isDirectoriesPaneVisible",
+       "isDescendantOfNode:",
        "isDirectory",
-       "isDirectoryGroupSelected",
        "isDirectoryNode:",
+       "isDisconnectedMountPoint",
        "isDisplayPostingDisabled",
-       "isDisplayedWhenStopped",
        "isDocumentEdited",
+       "isDone",
        "isDragging",
+       "isDrawingContentAtIndex:",
        "isDrawingToScreen",
+       "isDroppedConnectionException:",
        "isEPSOperation",
        "isEditable",
+       "isEditableIfEnabled",
+       "isEditableQuery",
        "isEditing",
        "isEditingAtIndex:withObject:",
-       "isEditingGroupName",
+       "isEditingAtIndexPath:withObject:",
        "isEditingWithObject:",
+       "isEjectable",
        "isEmpty",
-       "isEmptyPerson",
+       "isEmptyHTMLElement:",
        "isEnabled",
        "isEnabledForSegment:",
-       "isEnabledWithSelection:",
        "isEndMark",
+       "isEnteringProximity",
        "isEntryAcceptable:",
+       "isEnumeration",
        "isEqual:",
        "isEqualTo:",
        "isEqualToArray:",
@@ -9679,7 +11016,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "isEqualToData:",
        "isEqualToDate:",
        "isEqualToDictionary:",
-       "isEqualToHost:",
        "isEqualToIndexSet:",
        "isEqualToNumber:",
        "isEqualToSet:",
@@ -9687,179 +11023,173 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "isEqualToTimeZone:",
        "isEqualToValue:",
        "isErrorStatusCode:",
-       "isEventCoalescingEnabled",
        "isExcludedFromWindowsMenu",
        "isExecutableFileAtPath:",
        "isExpandable:",
+       "isExpandableAtArrangedObjectIndexPath:",
        "isExpanded",
        "isExpandedNode:",
-       "isExpired",
-       "isExplicitlyNonEditable",
        "isExtensionHidden",
        "isFault",
        "isFauxDisabled",
        "isFauxDisabledNode:",
+       "isFetchInProgress",
        "isFieldEditor",
-       "isFieldVisible:",
        "isFileListOrderedAscending",
        "isFileListOrderedCaseSensitive",
        "isFilePackageAtPath:",
        "isFilePropertyDisplayed:",
        "isFileURL",
+       "isFinishedDecoding",
        "isFirstAndKey",
        "isFixedPitch",
        "isFlipped",
        "isFloatingPanel",
        "isFlushDisabled",
        "isFlushWindowDisabled",
-       "isFontAvailable:",
        "isFontFixedPitch:",
        "isFrameSet",
-       "isFrontWindow",
+       "isGatheringResults",
        "isGreaterThan:",
        "isGreaterThanOrEqualTo:",
-       "isGroupsPaneVisible",
        "isHeartBeatThread",
        "isHidden",
        "isHiddenOrHasHiddenAncestor",
        "isHighlighted",
-       "isHitByPath:",
-       "isHitByPoint:",
-       "isHitByRect:",
        "isHorizontal",
        "isHorizontallyCentered",
        "isHorizontallyResizable",
-       "isHostCacheEnabled",
-       "isInFrontWindow",
+       "isInInterfaceBuilder",
        "isInMotion",
-       "isInResponderChain",
        "isIndeterminate",
+       "isInserted",
+       "isInvalidationCapableObject:withSelector:",
        "isItemExpanded:",
+       "isItemSelected",
        "isItemShownInPopupIfSoleEntry:",
        "isJavaEnabled",
+       "isJavaPlugIn",
        "isJavaScriptEnabled",
        "isKey:inTable:",
+       "isKeyExcludedFromWebScript:",
        "isKeyWindow",
        "isKindOf:",
        "isKindOfClass:",
        "isKindOfClassNamed:",
-       "isKindOfGivenName:",
-       "isLastImportGroupVisible",
        "isLeaf",
+       "isLenient",
        "isLessThan:",
        "isLessThanOrEqualTo:",
        "isLike:",
+       "isLinearX0:y0:x1:y1:x2:y2:",
+       "isList",
        "isLoaded",
        "isLoading",
-       "isLocalMount",
+       "isLocationRequiredToCreate",
        "isLocationRequiredToCreateForKey:",
        "isLocking",
-       "isMainInputController",
        "isMainWindow",
-       "isMember:",
+       "isMakeHistoryEnabled",
+       "isManyToMany",
+       "isMaster",
        "isMemberOf:",
        "isMemberOfClass:",
        "isMemberOfClassNamed:",
-       "isMemberOfGivenName:",
-       "isMembersPaneVisible",
-       "isMiniaturizable",
        "isMiniaturized",
-       "isModalPanel",
        "isMovable",
        "isMovableByWindowBackground",
        "isMultiThreaded",
-       "isMultiple",
        "isMutable",
        "isMuted",
        "isNSIDispatchProxy",
        "isNativeType:",
-       "isNewPerson:",
+       "isNegation",
        "isNewWindowEqualToOldWindow",
        "isNotEqualTo:",
        "isNull",
+       "isObjectID:equalTo:",
+       "isObjectTableColumnDataCell:",
        "isObscured",
        "isOneShot",
        "isOneway",
        "isOpaque",
-       "isOpaqueForState:",
        "isOpen",
-       "isOptionalArgumentWithName:",
-       "isOutputStackInReverseOrder",
-       "isOutputTraced",
+       "isOptional",
        "isPackage",
        "isPaged",
-       "isPaneSplitter",
        "isPartialStringValid:newEditingString:errorDescription:",
        "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:",
-       "isPeoplePicker",
        "isPlaceholderForMarkerExplicitlySet:",
        "isPlanar",
        "isPlaying",
+       "isPlugInView:",
        "isPluginViewStarted",
-       "isPoint:inRectangle:",
        "isPreview",
-       "isPrimary",
+       "isPreviewColumn",
+       "isPrimaryKey",
        "isProxy",
-       "isProxyNeededForURL:",
-       "isReachable",
-       "isReadOnlyKey:",
+       "isQuery",
+       "isQuickTimePlugIn",
+       "isReadOnly",
        "isReadableFileAtPath:",
        "isRedoing",
+       "isReflexive",
        "isRegularFile",
+       "isRelationship",
        "isReleasedWhenClosed",
        "isReloading",
-       "isRemovable",
        "isResizable",
        "isRichText",
+       "isRightToLeft",
+       "isRootEntity",
        "isRotatedFromBase",
        "isRotatedOrScaledFromBase",
        "isRowSelected:",
-       "isRowSelected:subRow:",
        "isRulerVisible",
        "isRunning",
        "isScalarProperty",
-       "isScreenFont",
        "isScrollable",
+       "isSearchable",
        "isSecure",
        "isSelectable",
        "isSelected",
        "isSelectedForSegment:",
        "isSelectionByRect",
+       "isSelectionEditable",
+       "isSelectorExcludedFromWebScript:",
        "isSeparatorItem",
        "isSessionOnly",
-       "isSetOnMouseEntered",
-       "isSetOnMouseExited",
        "isSheet",
-       "isShown",
        "isSimpleRectangularTextContainer",
+       "isSingleAttribute:",
+       "isSingleDTDNode",
+       "isSingleTableEntity",
        "isSizeDisplayedForNode:",
        "isSpeaking",
-       "isSpecialGroup",
-       "isSpecialGroupSelected",
+       "isStandalone",
        "isStarted",
        "isStatusBarVisible",
-       "isStrokeHitByPath:",
-       "isStrokeHitByPoint:",
-       "isStrokeHitByRect:",
        "isSubclassOfClass:",
        "isSubsetOfSet:",
        "isSubviewCollapsed:",
        "isSuperclassOfClass:",
-       "isSupersetOfSet:",
-       "isSupported::",
-       "isSupportingCoalescing",
-       "isSuspended",
        "isSymbolicLink",
-       "isSynchronized",
        "isTargetItem",
+       "isTemporary",
+       "isTemporaryID",
+       "isTestingInterface",
        "isTitled",
+       "isToMany",
        "isToManyKey:",
+       "isToOne",
        "isTornOff",
        "isTracking",
+       "isTransient",
        "isTransparent",
        "isTrue",
-       "isUndoRegistrationEnabled",
+       "isTypeNotExclusive:",
        "isUndoing",
+       "isUpdated",
        "isUsableWithObject:",
        "isValid",
        "isValidGlyphIndex:",
@@ -9867,27 +11197,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "isVerticallyCentered",
        "isVerticallyResizable",
        "isViewOfPickerLoaded:",
+       "isVirtual",
        "isVisible",
        "isVolume",
-       "isVolumeEjectable",
-       "isVolumeLocal",
-       "isWaitCursorEnabled",
        "isWellFormed",
        "isWindowInFocusStack:",
        "isWindowLoaded",
        "isWord:inDictionaries:caseSensitive:",
        "isWordInUserDictionaries:caseSensitive:",
-       "isWrapper",
        "isWritableFileAtPath:",
-       "isZoomable",
        "isZoomed",
-       "isiDisk",
-       "issueChangePropertiesCommand",
-       "issueCommand",
-       "issueSetImageCommandWithData:",
-       "italicAngle",
+       "isaForAutonotifying",
+       "islamicCalendar",
+       "islamicCivilCalendar",
+       "issueCopyCommand",
+       "issueCutCommand",
+       "issuePasteCommand",
        "item",
-       "item:",
        "itemAdded:",
        "itemArray",
        "itemAtIndex:",
@@ -9901,32 +11227,28 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "itemMatrix",
        "itemObjectValueAtIndex:",
        "itemRemoved:",
-       "itemRolledOut",
-       "itemRolledOver",
-       "itemSize",
-       "itemSpacing",
        "itemTitleAtIndex:",
        "itemTitles",
-       "itemType",
        "itemWithTag:",
        "itemWithTitle:",
        "items",
+       "ivar",
+       "japaneseCalendar",
        "javaScriptCanOpenWindowsAutomatically",
-       "javaScriptInterpretersCount",
-       "javaScriptNoGCAllowedObjectsCount",
-       "javaScriptObjectsCount",
-       "javaScriptReferencedObjectsCount",
-       "javaScriptRootObjectClasses",
        "jobDisposition",
-       "jobStyleHint",
-       "jobTitleFieldPresent",
        "jobWillBeDeallocated",
+       "joinSemantic",
+       "joinWithSourceAttributeName:destinationAttributeName:",
+       "joins",
+       "joinsForRelationship:",
        "jumpSlider:",
        "jumpToSelection",
        "jumpToSelection:",
+       "justifyWithFactor:",
        "keepBackupFile",
-       "keepWorkLoopAlive",
+       "kernelsWithString:",
        "key",
+       "keyBackPointer",
        "keyBindingManager",
        "keyBindingManagerForClient:",
        "keyBindingState",
@@ -9934,6 +11256,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "keyClassDescription",
        "keyCode",
        "keyDown:",
+       "keyDown:inRect:ofView:",
        "keyEnumerator",
        "keyEquivalent",
        "keyEquivalentAttributedString",
@@ -9943,13 +11266,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "keyEquivalentRectForBounds:",
        "keyEquivalentWidth",
        "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",
-       "keyForBinding:",
        "keyForFileWrapper:",
+       "keyForParameter:",
        "keyMessageForEvent:",
-       "keyNavigationView",
        "keyPath",
+       "keyPathExpressionForString:",
+       "keyPathForBinding:",
+       "keyPathIfAffectedByValueForKey:exactMatch:",
        "keySpecifier",
        "keyUp:",
+       "keyUp:inRect:ofView:",
        "keyValueBindingForKey:typeMask:",
        "keyViewSelectionDirection",
        "keyWindow",
@@ -9957,25 +11283,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "keyWindowFrameShadowColor",
        "keyWithAppleEventCode:",
        "keyboardFocusIndicatorColor",
+       "keyboardUIMode",
        "keys",
-       "keysSortedByValueUsingSelector:",
-       "keysTriggeringChangeNotificationsForDependentKey:",
        "keywordForDescriptorAtIndex:",
        "kind",
        "knobColor",
        "knobProportion",
        "knobRectFlipped:",
        "knobThickness",
-       "knownTimeZoneNames",
+       "knownKeyValuesForObjectID:withContext:",
+       "knownKeyValuesPointer",
        "knowsPageRange:",
        "knowsPagesFirst:last:",
        "label",
-       "labelAtIndex:",
+       "labelColor",
        "labelFontOfSize:",
-       "labelFontSize",
        "labelForSegment:",
+       "labelOnlyMenuDidSendActionNotification:",
+       "labelRectOfRow:",
        "labelSizeForBounds:",
-       "labels",
+       "lanczosTable",
        "language",
        "languageCode",
        "languageContext",
@@ -9986,58 +11313,56 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "languageWithName:",
        "lastChild",
        "lastColumn",
+       "lastComponent:",
        "lastComponentOfFileName",
        "lastConversation",
        "lastCrayon",
-       "lastDirectoriesSearchString",
-       "lastFirstSortingNamePart1:part2:",
-       "lastImportGroup",
        "lastIndex",
        "lastItem",
-       "lastName",
+       "lastModifiedDate",
        "lastObject",
        "lastPathComponent",
+       "lastRange",
+       "lastResortFont",
        "lastSelectedItem",
        "lastVisibleColumn",
-       "lastVisitedTimeInterval",
-       "laterDate:",
        "launch",
        "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:",
        "launchApplication:",
-       "launchApplication:showIcon:autolaunch:",
-       "launchPath",
        "launchRealPlayer",
        "launchWithDictionary:",
        "launchedApplications",
-       "launchedTaskWithDictionary:",
        "launchedTaskWithLaunchPath:arguments:",
        "layout",
-       "layoutChanged:",
        "layoutControlGlyphForLineFragment:",
+       "layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:",
        "layoutGlyphsInHorizontalLineFragment:baseline:",
        "layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:",
        "layoutManager",
        "layoutManager:didCompleteLayoutForTextContainer:atEnd:",
+       "layoutManagerDidInvalidateLayout:",
        "layoutManagerOwnsFirstResponderInWindow:",
        "layoutManagers",
        "layoutOptions",
        "layoutParagraphAtPoint:",
-       "layoutSanityCheck",
-       "layoutStatusbar",
+       "layoutRectForTextBlock:atIndex:effectiveRange:",
        "layoutTab",
        "layoutToFitInIconWidth:",
        "layoutToFitInMinimumIconSize",
        "layoutToFitInViewerFrameHeight:",
-       "layoutToPageWidth:",
-       "layoutType",
+       "layoutToMinimumPageWidth:maximumPageWidth:adjustingViewSize:",
        "lazyBrowserCell",
+       "lazyGetChildrenForNodeWithIdentifier:",
        "lazySync:",
+       "leading",
        "leadingOffset",
+       "leafKeyPath",
        "learnWord:",
        "learnWord:language:",
+       "leftChild",
+       "leftExpression",
        "leftIndentMarkerWithRulerView:location:",
        "leftMargin",
-       "leftMarginMarkerWithRulerView:location:",
        "leftSplitItem",
        "leftTabMarkerWithRulerView:location:",
        "leftView",
@@ -10046,8 +11371,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "level",
        "levelForItem:",
        "levelForRow:",
-       "levelsOfUndo",
+       "libxml2Content",
        "lightGrayColor",
+       "lightweightHandleChildChanged:parent:property:",
+       "like:",
        "limitDateForMode:",
        "lineBreakBeforeIndex:withinRange:",
        "lineBreakByHyphenatingBeforeIndex:withinRange:",
@@ -10057,31 +11384,39 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "lineCapStyle",
        "lineFragmentPadding",
        "lineFragmentRectForGlyphAtIndex:effectiveRange:",
+       "lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
        "lineFragmentRectForProposedRect:remainingRect:",
        "lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:",
        "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:",
-       "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:allowLayout:",
+       "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
+       "lineFragmentWidth",
        "lineHeightMultiple",
        "lineJoinStyle",
        "lineNumber",
        "lineRangeForRange:",
-       "lineScroll",
        "lineSpacing",
        "lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:",
        "lineToPoint:",
        "lineWidth",
+       "lineWidthForType:",
        "linkPath:toPath:handler:",
        "linkTextAttributes",
+       "linkWithCharacterRange:parent:",
        "listDescriptor",
        "listDictionary",
+       "listOptions",
+       "listeners",
        "listensInForegroundOnly",
        "load",
+       "load:",
+       "loadAndRestoreCurrentBrowsingNodePath:selectedNodes:",
+       "loadArchive",
+       "loadArchive:",
        "loadBitmapFileHeader",
        "loadBitmapInfoHeader",
+       "loadClass:",
        "loadColorLists",
        "loadColumnZero",
-       "loadContent",
-       "loadCookies",
        "loadData:MIMEType:textEncodingName:baseURL:",
        "loadDataRepresentation:ofType:",
        "loadDidFinish",
@@ -10093,61 +11428,65 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "loadFindStringToPasteboard",
        "loadFinished",
        "loadFromURL:error:",
-       "loadHTMLString:baseURL:",
        "loadImage:",
-       "loadImage:forImageRep:",
        "loadImageHeader",
        "loadImageWithName:",
        "loadInBackground",
        "loadInForeground",
-       "loadMovieFromFile:",
-       "loadMovieFromURL:",
+       "loadKernel",
+       "loadLibrary:",
        "loadNib",
        "loadNibFile:externalNameTable:withZone:",
        "loadNibNamed:owner:",
        "loadPanelNamed:",
-       "loadPluginIfNeededForMIMEType:",
+       "loadPlugIn",
+       "loadPlugIn:allowNonExecutable:",
        "loadPluginRequest:",
+       "loadRecipeOverrides:",
        "loadRequest:",
-       "loadRequest:inTarget:withNotifyData:",
-       "loadResourceDataNotifyingClient:usingCache:",
-       "loadRoot",
+       "loadRequest:inTarget:withNotifyData:sendNotification:",
        "loadRulebook:",
-       "loadServersFromDefaultsFile",
        "loadSoundWithName:",
        "loadSuiteWithDictionary:fromBundle:",
        "loadSuitesFromBundle:",
+       "loadTidy",
        "loadType",
        "loadUI",
-       "loadURL:referrer:reload:target:triggeringEvent:form:formValues:",
+       "loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:",
        "loadWindow",
        "loadWithRequest:",
+       "loadWithRequestNow:",
        "loadedBundles",
        "loadedCellAtRow:column:",
        "loadsImagesAutomatically",
-       "localDrag",
        "localName",
-       "localNode",
+       "localNameForName:",
        "localObjects",
        "localProxies",
+       "localSnapshotForGlobalID:",
+       "localSnapshotForSourceGlobalID:relationshipName:",
        "localTimeZone",
        "locale",
+       "localeIdentifier",
+       "localizationDictionary",
        "localizations",
+       "localizationsToSearch",
        "localizedCaseInsensitiveCompare:",
-       "localizedCatalogNameComponent",
        "localizedColorNameComponent",
        "localizedCompare:",
-       "localizedDefaults",
        "localizedDescription",
+       "localizedEntityNameForEntity:",
+       "localizedFormattedDisplayLabels",
        "localizedInfoDictionary",
        "localizedInputManagerName",
+       "localizedModelStringForKey:",
+       "localizedName",
        "localizedNameForFamily:face:",
-       "localizedNameForTIFFCompressionType:",
        "localizedNameOfStringEncoding:",
-       "localizedPaperName",
-       "localizedScannerWithString:",
+       "localizedPropertyNameForProperty:",
+       "localizedRecoveryOptions",
+       "localizedRecoverySuggestion",
        "localizedStringForKey:value:table:",
-       "localizedStringForStatusCode:",
        "localizedStringWithFormat:",
        "localizesFormat",
        "location",
@@ -10160,167 +11499,182 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "locationY",
        "locationZ",
        "lock",
-       "lockBeforeDate:",
-       "lockDate",
+       "lockDocument",
        "lockFocus",
        "lockFocusForView:inRect:needsTranslation:",
        "lockFocusIfCanDraw",
+       "lockFocusIfCanDrawInFrame:flipped:clip:",
        "lockFocusOnRepresentation:",
        "lockForReading",
        "lockForReadingWithExceptionHandler:",
        "lockForWriting",
+       "lockObjectStore",
+       "lockParentStore",
        "lockWhenCondition:",
        "lockWhenCondition:beforeDate:",
-       "lockWithPath:",
-       "logIn:",
        "logicalSize",
-       "logs",
+       "loginWindowDidSwitchFromUser:",
+       "loginWindowDidSwitchToUser:",
+       "logonButtonCell",
        "longCharacterIsMember:",
-       "longForKey:",
        "longLongValue",
-       "longMonthNames",
        "longValue",
-       "longWeekdayNames",
        "loopCount",
-       "loopMode",
        "loosenKerning:",
        "lossyCString",
        "lowerBaseline:",
        "lowercaseLetterCharacterSet",
        "lowercaseString",
-       "lowercaseWord:",
-       "lowercasedAttributes",
        "machPort",
        "magentaColor",
        "magentaComponent",
-       "maidenNameFieldPresent",
-       "mailRecentForEmail:",
-       "mailRecents",
-       "mailRecentsMatching:",
        "mainBundle",
        "mainDocumentURL",
        "mainFrame",
        "mainMenu",
+       "mainResource",
        "mainScreen",
-       "mainSplit",
        "mainWindow",
        "mainWindowFrameColor",
        "mainWindowFrameHighlightColor",
        "mainWindowFrameShadowColor",
-       "makeBTAvailable:",
-       "makeBTUnavailable:",
+       "maintainsInactiveSelection",
        "makeCellAtRow:column:",
        "makeCharacterSetCompact",
        "makeCharacterSetFast",
        "makeCurrentContext",
+       "makeDocumentForURL:withContentsOfURL:ofType:error:",
        "makeDocumentWithContentsOfFile:ofType:",
-       "makeDocumentWithContentsOfURL:ofType:",
+       "makeDocumentWithContentsOfURL:ofType:error:",
        "makeFirstResponder:",
        "makeIdentity",
        "makeImmutable",
        "makeKeyAndOrderFront:",
        "makeKeyWindow",
        "makeMainWindow",
-       "makeObjectsPerform:",
-       "makeObjectsPerform:with:",
-       "makeObjectsPerform:withObject:",
+       "makeNewConnection:sender:",
+       "makeNextSegmentKey",
        "makeObjectsPerformSelector:",
        "makeObjectsPerformSelector:withObject:",
-       "makeProperties:verifyWith:",
-       "makeQueries:",
-       "makeSelectedPrimary:",
-       "makeShown:",
+       "makePreviousSegmentKey",
+       "makeRegexFindSafe:",
+       "makeRegexSafe:",
+       "makeStale",
        "makeTextLarger:",
        "makeTextSmaller:",
-       "makeUID",
        "makeUntitledDocumentOfType:",
+       "makeUntitledDocumentOfType:error:",
+       "makeWebViewsPerformSelector:",
        "makeWindowControllers",
        "makeWindowsPerform:inOrder:",
+       "managedObjectClassName",
+       "managedObjectContext",
+       "managedObjectIDFromURIRepresentation:",
+       "managedObjectModel",
+       "manyToMany",
+       "manyToManyDeltas",
+       "manyToManyRelationships",
        "mapConversationToThread:",
+       "mapData",
        "mapForClass:",
+       "mapROI:forRect:",
+       "mapping",
+       "mappingForAttribute:forConfigurationWithName:",
+       "mappingForEntity:forConfigurationWithName:",
+       "mappingForRelationship:forConfigurationWithName:",
+       "mappingsForConfigurationWithName:inModel:",
        "markBegin",
+       "markDOMRange",
        "markEnd",
        "markNumRowsToToggleVisible",
        "markedRange",
        "markedTextAbandoned:",
        "markedTextAttributes",
+       "markedTextDOMRange",
        "markedTextSelectionChanged:client:",
        "marker",
+       "markerForItemNumber:",
+       "markerFormat",
        "markerLocation",
-       "markerName",
+       "markerWithRulerMarker:parent:",
        "markers",
-       "masterTemplateHasChanged:",
+       "markupStringFromNode:nodes:",
+       "markupStringFromRange:nodes:",
        "matchLabels:againstElement:",
        "matchQualityOfColorAtIndex:toColor:filtered:ifBetterThan:",
-       "matchesAppleEventCode:",
-       "matchesLocationBestRepresentedBy:",
+       "matches:",
        "matchesOnMultipleResolution",
-       "matchesPattern:",
        "matchesPattern:caseInsensitive:",
-       "matchesRecord:",
+       "matchesWithoutOperatorComponentsKeyPath:",
+       "matchingFontDescriptorsWithMandatoryKeys:",
        "matrix",
-       "matrixClass",
        "matrixInColumn:",
        "max",
        "maxContentSize",
-       "maxRecents",
-       "maxResults",
+       "maxCount",
+       "maxDate",
+       "maxFormattedDisplayLabelWidth",
        "maxSize",
-       "maxUserData",
        "maxValue",
-       "maxVisibleColumns",
        "maxWidth",
+       "maximizeWindow:",
        "maximum",
-       "maximumAdvancement",
-       "maximumAttributeCacheSize",
        "maximumDecimalNumber",
        "maximumHeight",
        "maximumLength",
        "maximumLineHeight",
-       "maximumRecents",
-       "mayStartDragWithMouseDragged:",
-       "me",
+       "maximumRange",
+       "maximumRecentDocumentCount",
+       "mayDHTMLCopy",
+       "mayDHTMLCut",
+       "mayDHTMLPaste",
+       "mayStartDragAtEventLocation:",
+       "mblurROI:forRect:userInfo:",
        "measurementUnits",
+       "measurements:fromResolutionData:",
        "mediaBox",
+       "mediaStyle",
        "member:",
-       "memberAtIndex:",
-       "members",
-       "members:notFoundMarker:",
-       "membersAndSubgroups",
-       "membersChanged:",
-       "membersController",
-       "membersOfGroup:",
-       "membersSelectionChanged:",
-       "memoryCapacity",
        "menu",
-       "menuBarFontOfSize:",
+       "menu:updateItem:atIndex:shouldCancel:",
        "menuBarHeight",
        "menuBarVisible",
        "menuChanged:",
        "menuChangedMessagesEnabled",
+       "menuClass",
        "menuClassName",
+       "menuDelegateChanged",
        "menuFontOfSize:",
        "menuForEvent:",
        "menuForEvent:inRect:ofView:",
+       "menuForSegment:",
        "menuFormRepresentation",
+       "menuHasKeyEquivalent:forEvent:",
+       "menuHasKeyEquivalent:forEvent:target:action:",
        "menuItem",
        "menuItemCellForItemAtIndex:",
        "menuItemWithTag:",
+       "menuKeyEquivalentAction:forEvent:",
+       "menuKeyEquivalentTarget:forEvent:",
+       "menuLocation",
        "menuNeedsUpdate:",
        "menuRepresentation",
        "menuView",
        "menuZone",
-       "mergeMultiValue:forProperty:",
-       "mergeNote:",
-       "mergeSingleValue:forProperty:",
-       "message",
+       "mergeAttributesInto:",
+       "mergeCells",
+       "mergeFontFeaturesInto:",
+       "mergeFontVariationsInto:",
+       "mergeInVariations:",
+       "mergeStyleInto:",
+       "mergedModelFromBundles:",
        "messageFontOfSize:",
-       "messageImage",
-       "messageText",
-       "messageType",
-       "messageWidthForMessage:",
+       "metadataColumns",
+       "metadataForPersistentStoreWithURL:error:",
+       "metadataQuery:replacementObjectForResultObject:",
+       "metadataQuery:replacementValueForAttribute:value:",
+       "method",
        "methodArgSize:",
-       "methodDescFor:",
        "methodDescriptionForSelector:",
        "methodFor:",
        "methodForSelector:",
@@ -10329,12 +11683,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "methodSignature",
        "methodSignatureForSelector:",
        "methods",
-       "metrics",
-       "microsecondOfSecond",
-       "middleNameFieldPresent",
+       "migratePersistentStore:toURL:withType:error:",
        "minColumnWidth",
        "minContentSize",
        "minContentSizeForMinFrameSize:styleMask:",
+       "minCount",
+       "minDate",
        "minFrameSize",
        "minFrameSizeForMinContentSize:styleMask:",
        "minFrameWidthWithTitle:styleMask:",
@@ -10343,18 +11697,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "minValue",
        "minWidth",
        "miniaturize:",
-       "miniaturizeAll:",
-       "miniaturizedSize",
        "minimizeButton",
+       "minimizeWindow:",
        "minimum",
        "minimumDecimalNumber",
        "minimumFontSize",
        "minimumHeight",
        "minimumLineHeight",
-       "minimumSize",
+       "minimumLogicalFontSize",
        "minimumWidth",
-       "minimunWindowWidth:",
-       "miniwindowImage",
        "miniwindowTitle",
        "minusSet:",
        "minuteOfHour",
@@ -10363,25 +11714,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "mnemonic",
        "mnemonicLocation",
        "modDate",
-       "modalMode",
        "modalWindow",
        "mode",
        "modeButton",
        "model",
+       "modelAndProxyKeysObserved",
+       "modelByMergingModels:",
+       "modifier",
        "modifierFlags",
-       "modifierFlagsChanged:",
        "modifiersForEvent:",
        "modifyFont:",
        "modifyFontTrait:",
        "modifyFontViaPanel:",
-       "modifyOptionsViaPanel:",
+       "moduleCanBeRemoved",
        "moduleWasInstalled",
        "moduleWillBeRemoved",
        "monthOfYear",
        "mostCompatibleStringEncoding",
-       "mountNewRemovableMedia",
-       "mounted:",
-       "mountedLocalVolumePaths",
        "mountedRemovableMedia",
        "mouse:",
        "mouse:inRect:",
@@ -10395,12 +11744,13 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "mouseEnteredToolTip:inWindow:withEvent:",
        "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",
        "mouseExited:",
-       "mouseHit:",
        "mouseLocation",
        "mouseLocationOutsideOfEventStream",
        "mouseMoved:",
        "mouseMovedNotification:",
+       "mouseTracker:constrainPoint:withEvent:",
        "mouseTracker:didStopTrackingWithEvent:",
+       "mouseTracker:handlePeriodicEvent:",
        "mouseTracker:shouldContinueTrackingWithEvent:",
        "mouseTracker:shouldStartTrackingWithEvent:",
        "mouseUp:",
@@ -10410,82 +11760,56 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "moveColumn:toColumn:",
        "moveCurrentPointInDirection:",
        "moveDown:",
-       "moveDownAndModifySelection:",
-       "moveFormatAtIndex:toIndex:",
+       "moveDragCaretToPoint:",
        "moveForward:",
        "moveForwardAndModifySelection:",
+       "moveGlyphsTo:from:",
        "moveInDirection:",
        "moveLeft:",
-       "moveLeftAndModifySelection:",
-       "moveParagraphBackwardAndModifySelection:",
-       "moveParagraphForwardAndModifySelection:",
        "movePath:toPath:handler:",
        "moveRight:",
-       "moveRightAndModifySelection:",
-       "moveRulerlineFromLocation:toLocation:",
-       "moveSelectionLeft",
-       "moveSelectionRight",
-       "moveToBeginningOfDocument:",
-       "moveToBeginningOfDocumentAndModifySelection:",
-       "moveToBeginningOfLine:",
-       "moveToBeginningOfLineAndModifySelection:",
-       "moveToBeginningOfParagraph:",
-       "moveToBeginningOfParagraphAndModifySelection:",
-       "moveToEndOfDocument:",
-       "moveToEndOfDocumentAndModifySelection:",
-       "moveToEndOfLine:",
-       "moveToEndOfLineAndModifySelection:",
-       "moveToEndOfParagraph:",
-       "moveToEndOfParagraphAndModifySelection:",
+       "moveSelectionToDragCaret:smartMove:",
        "moveToPoint:",
        "moveUp:",
-       "moveUpAndModifySelection:",
        "moveWordBackward:",
        "moveWordBackwardAndModifySelection:",
        "moveWordForward:",
        "moveWordForwardAndModifySelection:",
-       "moveWordLeft:",
-       "moveWordLeftAndModifySelection:",
-       "moveWordRight:",
-       "moveWordRightAndModifySelection:",
        "movie",
        "movieController",
        "movieRect",
        "movieUnfilteredFileTypes",
        "movieUnfilteredPasteboardTypes",
-       "msgPrint:ok:",
-       "msgid",
-       "multiValueForProperty:",
        "multipleThreadsEnabled",
-       "mutableArrayValueForBinding:atIndex:resolveMarkersToPlaceholders:",
+       "multiply:by:",
        "mutableArrayValueForBinding:resolveMarkersToPlaceholders:",
        "mutableArrayValueForKey:",
        "mutableArrayValueForKeyPath:",
-       "mutableAttributedString",
        "mutableAttributes",
        "mutableBytes",
+       "mutableCollectionGetter",
        "mutableCopy",
        "mutableCopyWithZone:",
-       "mutableData",
-       "mutableDictionary",
+       "mutableSetValueForBinding:resolveMarkersToPlaceholders:",
+       "mutableSetValueForKey:",
+       "mutableSetValueForKeyPath:",
        "mutableString",
        "mutableSubstringFromRange:",
-       "myStatusChanged:",
+       "mutatingMethods",
        "name",
-       "name:reason:status:",
        "nameAtIndex:filtered:",
-       "nameDoubleAction",
        "nameFieldLabel",
-       "nameForDisplay",
        "nameFromPath:extra:",
-       "nameOfGlyph:",
-       "nameSorting",
-       "namedNodeMapWithImpl:",
        "names",
        "namesOfPromisedFilesDroppedAtDestination:",
-       "namespaceURI",
+       "namespaceForPrefix:",
+       "namespaces",
        "navNodeClass",
+       "navNodeWithSimpleQueryString:",
        "navView",
+       "navView:compareFilename:with::caseSensitive:",
+       "navView:compareFilename:with:caseSensitive:",
+       "navView:shouldShowNode:",
        "needsAction",
        "needsDelegate",
        "needsDisplay",
@@ -10493,13 +11817,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "needsPanelToBecomeKey",
        "needsResyncWithDefaultVoice",
        "needsSizing",
-       "needsToBeUpdatedFromPath:",
        "needsToDrawRect:",
-       "needsUpdateNotifications",
        "negativeFormat",
+       "negativeInfinitySymbol",
        "nestingLevel",
        "netService:didNotPublish:",
        "netService:didNotResolve:",
+       "netService:didUpdateTXTRecordData:",
+       "netServiceBrowser:didFindDomain:moreComing:",
+       "netServiceBrowser:didFindService:moreComing:",
+       "netServiceBrowser:didNotSearch:",
+       "netServiceBrowser:didRemoveDomain:moreComing:",
+       "netServiceBrowser:didRemoveService:moreComing:",
+       "netServiceBrowserDidStopSearch:",
+       "netServiceBrowserWillSearch:",
+       "netServiceDidResolveAddress:",
        "netServiceDidStop:",
        "netServiceWillPublish:",
        "netServiceWillResolve:",
@@ -10511,264 +11843,148 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "newColorName:",
        "newConversation",
        "newCount:",
+       "newCreateTableStatementForEntity:",
+       "newCreateTableStatementForManyToMany:",
        "newDataAvailable",
-       "newDictionaryFromDictionary:subsetMapping:zone:",
+       "newDeleteStatementWithCorrelation:",
+       "newDeleteStatementWithRow:",
        "newDistantObjectWithCoder:",
        "newDocument:",
+       "newFetchedArray",
+       "newFetchedRow",
+       "newFetchedRowForObjectID:",
+       "newFetchedRowsForObjectID:forManyToMany:",
+       "newFetchedRowsForObjectID:forToMany:",
        "newFileButton",
        "newFlipped:",
-       "newFolder:",
-       "newGroup",
-       "newGroup:",
-       "newGroupFromSelection:",
+       "newForeignEntityKeyNumberForSlot:",
+       "newForeignKeyID:entity:",
+       "newForeignKeyNumberForSlot:",
+       "newGeneratorWithStatement:",
+       "newInsertStatementWithCorrelation:",
+       "newInsertStatementWithRow:",
+       "newInsertedObject",
        "newInstanceWithKeyCount:sourceDescription:destinationDescription:zone:",
        "newInvocationWithCoder:",
        "newInvocationWithMethodSignature:",
        "newLegalColorSwatchHeightFromHeight:",
-       "newList:",
        "newListName:",
        "newMiniaturizeButton",
        "newNode",
+       "newNodeWithIndex:belowIndexPath:firstChild:sibling:",
        "newObject",
-       "newRecord:ofType:",
-       "newSeparatorItem",
+       "newObjectIDForEntity:",
+       "newObjectIDForEntity:pk:",
+       "newPrimaryKey64",
+       "newPrimaryKeyForEntity:",
+       "newRowsForFetchRequest:",
+       "newSelectStatementWithFetchRequest:",
+       "newSiblingNodeAtIndex:",
        "newStandardItemWithItemIdentifier:",
+       "newStatementWithEntity:",
+       "newStatementWithSQLString:",
+       "newStatementWithoutEntity",
        "newStream:target:stream:",
+       "newTempNotificationWithName:object:userInfo:",
        "newToolbarButton",
        "newType:data:firstIndirectType:",
+       "newUpdateStatementWithRow:",
        "newViewForToolbar:inWindow:attachedToEdge:",
        "newWithCoder:zone:",
+       "newWithColorSpace:components:count:",
        "newWithDictionary:",
        "newWithInitializer:",
-       "newWithInitializer:objects:zone:",
        "newWithInitializer:zone:",
        "newWithKey:object:",
        "newWithKeyArray:",
        "newWithKeyArray:zone:",
        "newWithPath:prepend:attributes:cross:",
        "newZoomButton",
-       "nextArraySeperatedByToken:stoppingAt:inEncoding:",
-       "nextBase64Data",
-       "nextBase64Line:",
-       "nextCard:",
-       "nextData",
-       "nextEscapedCharacter",
        "nextEventForWindow:",
        "nextEventMatchingMask:",
        "nextEventMatchingMask:untilDate:inMode:dequeue:",
-       "nextFrame:",
-       "nextKeySegment",
        "nextKeyView",
        "nextKeyViewInsideWebFrameViews",
        "nextKeyViewOutsideWebFrameViews",
        "nextObject",
-       "nextPersonWithLength:",
-       "nextPreviousCard:",
-       "nextQuotedPrintableData",
+       "nextPK64",
        "nextResponder",
        "nextSibling",
-       "nextSingleByteBase64Line:",
-       "nextSingleByteStringInEncoding:quotedPrintable:stopTokens:trim:",
        "nextState",
-       "nextStringInEncoding:quotedPrintable:stopTokens:trim:",
-       "nextText",
        "nextToken",
-       "nextTokenPeak:",
-       "nextTokenPeakSingle:length:",
-       "nextTokenPeakUnicode:length:",
-       "nextUnicodeBase64Line:",
-       "nextUnicodeStringStopTokens:quotedPrintable:trim:",
        "nextValidKeyView",
        "nextWordFromIndex:forward:",
        "nextWordInString:fromIndex:useBook:forward:",
        "nibInstantiate",
-       "nibInstantiateWithOwner:",
        "nibInstantiateWithOwner:topLevelObjects:",
-       "nibName",
-       "nickNameFieldPresent",
-       "noCurrentPicture",
+       "nilSymbol",
        "noGCAllowedObjectCount",
        "noResponderFor:",
        "node",
-       "nodeCount",
-       "nodeListWithImpl:",
-       "nodeName",
+       "nodeAtIndexPath:",
+       "nodeFromManagedObject:objectIDMap:",
        "nodeType",
-       "nodeValue",
        "nodeWithFBENode:",
-       "nodeWithImpl:",
        "nodeWithName:position:rect:view:children:",
        "nodeWithName:value:source:children:",
        "nodeWithPath:",
-       "nonAllowableCharacters",
+       "nodesForXPath:error:",
+       "nodesFromList:",
+       "noiseImage",
        "nonBaseCharacterSet",
-       "nonThreadedSave",
+       "nonmutatingMethods",
        "nonretainedObjectValue",
-       "nonspacingMarkPriority:",
        "normalSpeakingRate",
-       "normalize",
+       "normalizeAdjacentTextNodesPreservingCDATA:",
+       "normalizeWhitespace:",
+       "normalizedFontDescriptor",
        "normalizedRect:",
        "notANumber",
+       "notANumberSymbol",
        "notActiveWindowFrameColor",
        "notActiveWindowFrameHighlightColor",
        "notActiveWindowFrameShadowColor",
-       "notActiveWindowTitlebarTextColor",
-       "notImplemented:",
+       "notPredicateOperator",
        "notShownAttributeForGlyphAtIndex:",
-       "notations",
-       "note",
-       "noteDirectoriesListChanged",
-       "noteDirectoriesSelectionChanged",
-       "noteDirectoryResultsChanged",
-       "noteDirectoryResultsSelectionChanged",
-       "noteFileSystemChanged",
+       "notationName",
+       "noteContentValueHasChanged",
        "noteFileSystemChanged:",
-       "noteFirstLineParagraphStyle",
        "noteFontCollectionsChanged",
-       "noteFontFavoritesChanged",
-       "noteGroupsListChanged",
-       "noteGroupsSelectionChanged",
-       "noteMembersListChanged",
-       "noteMembersSelectionChanged:",
+       "noteHeightOfRowsWithIndexesChanged:",
        "noteNewRecentDocument:",
        "noteNewRecentDocumentURL:",
        "noteNumberOfItemsChanged",
        "noteNumberOfRowsChanged",
-       "noteRollOverPath:",
-       "noteSecondLineParagraphStyle",
-       "noteUserDefaultsChanged",
+       "noteQueryAttributesChanged",
        "notificationCenter",
        "notificationCenterForType:",
        "notificationWithName:object:",
        "notificationWithName:object:userInfo:",
        "notifyData",
-       "notifyDataIsReady",
-       "notifyObjectWhenFinishedExecuting:",
-       "notifyOnSelectionChanged",
-       "nsipArrayByApplyingSelector:",
-       "nsipArrayByApplyingSelector:withObject:",
-       "nsipContainsObjectIdenticalTo:",
-       "nsipDrawNicelyScaledInRect:inView:operation:fraction:",
-       "nsipDrawNicelyScaledInRect:operation:fraction:",
-       "nsipFrame:constrainedToScreen:",
-       "nsipImageWithMaxSize:",
-       "nsipImageWithMaxSize:withLeftPad:",
-       "nsipJPEGDataWithMaxSize:compression:",
-       "nsipLargestRepSize",
-       "nsipMakeDirectoriesInPath:mode:",
-       "nsipMenuWindowBackgroundColor",
-       "nsipSetFrame:constrainedToScreen:",
-       "nsipSetFrame:constrainedToScreen:display:animate:",
-       "nts_AddPropertiesAndTypes:toTable:needsReadWriteMode:registerDataTypes:",
-       "nts_AddRecord:",
-       "nts_AddTable:withPropertiesAndTypes:needsReadWriteMode:",
-       "nts_AddTable:withPropertiesAndTypes:needsReadWriteMode:registerDataTypes:",
-       "nts_AddToCache",
-       "nts_AddToModifiedRecordsList:",
-       "nts_AlternateName",
-       "nts_BeginLoadingImageDataForClient:",
-       "nts_BeginLoadingImageForPerson:forClient:orCallback:withRefcon:",
-       "nts_CacheDataFileSchema",
-       "nts_CacheNewRecord:",
-       "nts_CacheRecord:",
-       "nts_CachedRecordWithUID:",
-       "nts_CascadeRemove",
-       "nts_ChangedProperties",
-       "nts_Cleanup",
-       "nts_ClearCaches",
-       "nts_ClearInstanceCaches",
-       "nts_ClearTemporaryCache",
-       "nts_ConvertPumaAddressBook",
-       "nts_DeletedUID",
-       "nts_DistributionIdentifierForProperty:",
-       "nts_DoesPropertyExist:inTable:",
-       "nts_FindMemberUID:inArray:",
-       "nts_GroupContents",
-       "nts_GroupUID",
-       "nts_Groups",
-       "nts_HasChangedProperties",
-       "nts_ImageData",
-       "nts_ImportMacBuddyMeCard",
-       "nts_ImportTipCards",
-       "nts_IndexOfMemberWithUID:",
-       "nts_Info",
-       "nts_InitDefaultContactManager",
-       "nts_InitWithDeletedUID:",
-       "nts_InitWithGroupUID:memberUID:",
-       "nts_InsertInArray:",
-       "nts_Logs",
-       "nts_MailRecents",
-       "nts_MatchesRecord:",
-       "nts_Me",
-       "nts_MemberUID",
-       "nts_Members",
-       "nts_OpenContactManagerWithMode:cacheSchema:",
-       "nts_ParentGroups",
-       "nts_PathForLocalImage",
-       "nts_PathForUIDTaggedImage",
-       "nts_People",
-       "nts_PropertiesForTable:",
-       "nts_Reconnect",
-       "nts_RecordForUniqueId:",
-       "nts_RecursiveContainsGroup:",
-       "nts_RegisterQualifiedTable:forTable:hashView:",
-       "nts_RemoveFromCache",
-       "nts_RemoveProperties:fromTable:",
-       "nts_RemoveRecord:",
-       "nts_Save",
-       "nts_SchemaForTable:",
-       "nts_SetDistributionIdentifier:forProperty:",
-       "nts_SetDistributionIdentifier:forProperty:person:",
-       "nts_SetHasUnsavedChanges:",
-       "nts_SetImageData:",
-       "nts_SetMe:",
-       "nts_SetValue:forProperty:",
-       "nts_SetValueInChangedProperties:forProperty:",
-       "nts_SetValueInTemporaryCache:forProperty:",
-       "nts_SetupWithSharedAddressBook:",
-       "nts_SharedAddressBook",
-       "nts_Subgroups",
-       "nts_SyncCount",
-       "nts_SynchronizeCaches",
-       "nts_SynchronizeData",
-       "nts_Touch",
-       "nts_TypeOfProperty:forTable:",
-       "nts_UncacheRecord:",
-       "nts_ValueForProperty:",
-       "nts_ValueInTemporaryCacheForProperty:",
-       "nts_WriteAtRow:",
-       "nts__fullName",
-       "nts__fullPhoneticName",
-       "nts__isLastNameFirst",
-       "nts_recordDidSave",
        "null",
        "nullDescriptor",
        "numPendingOrLoadingRequests",
        "numRowsToToggleVisible",
        "numberOfArguments",
+       "numberOfColorComponents",
        "numberOfColumns",
-       "numberOfContentItems",
+       "numberOfComponents",
        "numberOfGlyphs",
        "numberOfGroups",
-       "numberOfImageItems",
        "numberOfImages",
        "numberOfItems",
        "numberOfItemsInComboBox:",
        "numberOfItemsInComboBoxCell:",
-       "numberOfItemsPerRow",
+       "numberOfItemsInMenu:",
+       "numberOfMajorTickMarks",
        "numberOfPages",
-       "numberOfPaletteEntries",
        "numberOfPlanes",
        "numberOfRows",
        "numberOfRowsInTableView:",
-       "numberOfSamplesPerPaletteEntry",
        "numberOfSelectedColumns",
        "numberOfSelectedRows",
-       "numberOfSubrowsInTableView:forRow:",
        "numberOfTabViewItems",
-       "numberOfThreadsAlive",
        "numberOfTickMarks",
-       "numberOfVirtualScreens",
        "numberOfVisibleCols",
        "numberOfVisibleColumns",
        "numberOfVisibleItems",
@@ -10787,11 +12003,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "numberWithUnsignedLongLong:",
        "numberWithUnsignedShort:",
        "objCType",
+       "objcClassName",
+       "objcCreationMethodName",
        "object",
+       "object:shouldBind:toObject:withKeyPath:options:",
+       "object:shouldUnbind:",
        "objectAt:",
        "objectAtIndex:",
        "objectAtIndex:effectiveRange:",
        "objectAtIndex:effectiveRange:runIndex:",
+       "objectAtIndexPath:",
        "objectAtRunIndex:length:",
        "objectBeingTested",
        "objectByTranslatingDescriptor:toType:inSuite:",
@@ -10800,70 +12021,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "objectDidBeginEditing:",
        "objectDidEndEditing:",
        "objectDidTriggerAction:",
+       "objectDidTriggerDoubleClickAction:",
        "objectEnumerator",
-       "objectExists:",
        "objectForIndex:dictionary:",
        "objectForInfoDictionaryKey:",
        "objectForKey:",
        "objectForKey:inDomain:",
        "objectForServicePath:",
        "objectForServicePath:app:doLaunch:limitDate:",
-       "objectGraphDescription",
-       "objectHasHiddenExtension:",
-       "objectHasSubFolders:",
-       "objectIsAlias:",
-       "objectIsApplication:",
-       "objectIsContainer:",
-       "objectIsForcedForKey:",
-       "objectIsForcedForKey:inDomain:",
-       "objectIsKnown:",
-       "objectIsLeaf:",
-       "objectIsRegisterediDisk:",
-       "objectIsVisible:",
-       "objectIsiDisk:",
+       "objectForWebScript",
+       "objectFrom:withIndex:",
+       "objectID",
+       "objectIDDataSize",
+       "objectIDDataType",
+       "objectIDFactoryForEntity:",
+       "objectIDFactoryForSQLEntity:",
+       "objectIDWithInteger32:",
+       "objectIDWithInteger64:",
+       "objectIDWithObject:",
+       "objectIDsForRelationship:forObjectID:",
        "objectLoadedFromCacheWithURL:response:size:",
        "objectMechanismsRequired",
        "objectMechanismsRequiredForObject:",
-       "objectNames",
+       "objectRegisteredForID:",
        "objectSpecifier",
+       "objectStore",
        "objectValue",
        "objectValueForDisplayValue:",
+       "objectValueInvalidationCapableObjectForObject:",
        "objectValueOfSelectedItem",
        "objectValues",
+       "objectWillChange:",
        "objectZone",
        "objectsAtIndexes:",
        "objectsByEvaluatingSpecifier",
        "objectsByEvaluatingWithContainers:",
-       "objectsFileType:",
+       "objectsForFetchRequest:inContext:",
        "objectsForKeys:notFoundMarker:",
+       "objectsForXQuery:constants:error:",
+       "observationCount",
        "observationInfo",
+       "observeKeyPathForBindingInfo:registerOrUnregister:object:",
        "observeValueForKeyPath:ofObject:change:context:",
+       "observedNode",
+       "observedNodeForExpandedNode:createIfNeeded:",
+       "observedNodesSet",
+       "observedObject",
        "observer",
+       "observingBinder",
+       "occurrence",
        "offStateImage",
-       "offset",
-       "offsetInFile",
-       "ok:",
-       "okForOpenMode",
-       "okForSaveMode",
        "oldSystemColorWithCoder:",
        "onStateImage",
-       "one",
-       "onlineStatusButton",
-       "opWithCode:key:object:",
+       "oneOrMoreDescriptionsForSubelementName:",
        "opaqueAncestor",
-       "opcode",
        "open",
        "open:",
        "openAppleMenuItem:",
-       "openCustomLabelEditorForProperty:withPopup:",
+       "openCategoryFile:",
        "openDocument:",
        "openDocumentWithContentsOfFile:display:",
-       "openDocumentWithContentsOfURL:display:",
-       "openDrawers",
+       "openDocumentWithContentsOfURL:display:error:",
        "openFile:",
-       "openFile:fromImage:at:inView:",
        "openFile:ok:",
-       "openFile:operation:",
        "openFile:withApplication:",
        "openFile:withApplication:andDeactivate:",
        "openFirstDrawer:",
@@ -10871,77 +12091,70 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "openGLContext",
        "openHandCursor",
        "openHelpAnchor:inBook:",
-       "openHost:user:password:",
        "openImageInNewWindow:",
-       "openInSeparateWindow:",
-       "openInSeparateWindow:model:mainWindow:",
        "openInclude:",
        "openLinkInNewWindow:",
-       "openList:",
        "openListFromFile:",
-       "openLocalHost",
        "openNewWindowWithURL:element:",
-       "openNotesChanged:",
        "openOnEdge:",
        "openPanel",
        "openResourceFile",
-       "openTempFile:",
+       "openRoot",
        "openTempFile:ok:",
        "openURL:",
        "openURL:reload:contentType:refresh:lastModified:pageCache:",
        "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:",
+       "openUntitledDocumentAndDisplay:error:",
        "openUntitledDocumentOfType:display:",
        "openUserDictionary:",
        "openWithApplication",
+       "openWithFinder:",
+       "operand",
        "operatingSystem",
-       "operatingSystemName",
-       "operatingSystemVersionString",
-       "optionClick:",
-       "optionSetting:",
+       "operationNotAllowedCursor",
+       "operatorType",
+       "operatorWithCustomSelector:modifier:",
+       "operatorWithType:modifier:options:",
        "optionalSharedHistory",
        "options",
        "optionsAttributes",
        "optionsFromPanel",
+       "orPredicateOperator",
        "orangeColor",
-       "order",
-       "orderBack",
-       "orderBack:",
+       "orderAdapterOperations",
        "orderFront",
        "orderFront:",
        "orderFrontCharacterPalette:",
-       "orderFrontColorOptionsPanelInWindow:",
        "orderFrontColorPanel:",
        "orderFrontFindPanel:",
        "orderFrontFontOptionsPanel:",
        "orderFrontFontPanel:",
+       "orderFrontLinkPanel:",
+       "orderFrontListPanel:",
        "orderFrontRegardless",
+       "orderFrontSpacingPanel:",
        "orderFrontStandardAboutPanel:",
        "orderFrontStandardAboutPanelWithOptions:",
        "orderFrontStylesPanel:",
        "orderFrontStylesPanelInWindow:textView:",
+       "orderFrontTableOptionsPanel:",
+       "orderFrontTablePanel:",
        "orderOut",
        "orderOut:",
        "orderOutPopUpWindow:",
        "orderOutToolTip",
        "orderOutToolTipImmediately:",
        "orderString:range:string:range:flags:",
-       "orderString:string:",
        "orderString:string:flags:",
        "orderSurface:relativeTo:",
        "orderWindow:relativeTo:",
        "orderedDocuments",
-       "orderedIndex",
        "orderedItemsLastVisitedOnDay:",
        "orderedLastVisitedDays",
        "orderedWindows",
        "orientation",
        "origin",
-       "originLoadLimit",
-       "originLoadTimeout",
-       "originOffset",
-       "originalImage",
-       "originalImagePath",
-       "originalNode",
+       "originalBodyStream",
        "originalURLString",
        "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",
        "otherMouseDown:",
@@ -10949,30 +12162,48 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "otherMouseUp:",
        "outline",
        "outline:",
+       "outlineColumn:willDisplayCell:row:",
+       "outlineColumn:willDisplayOutlineCell:row:",
        "outlineTableColumn",
+       "outlineView:acceptDrop:item:childIndex:",
        "outlineView:child:ofItem:",
        "outlineView:didClickOnDisabledCell:forTableColumn:byItem:",
+       "outlineView:didClickTableColumn:",
+       "outlineView:didDragTableColumn:",
+       "outlineView:heightOfRowByItem:",
        "outlineView:isItemExpandable:",
+       "outlineView:itemForPersistentObject:",
+       "outlineView:keyDownEvent:",
+       "outlineView:labelShouldDisplayEnabledAtRow:",
+       "outlineView:mouseDownInHeaderOfTableColumn:",
+       "outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:",
        "outlineView:numberOfChildrenOfItem:",
        "outlineView:objectValueForTableColumn:byItem:",
+       "outlineView:performKeyEquivalent:",
+       "outlineView:persistentObjectForItem:",
+       "outlineView:setObjectValue:forTableColumn:byItem:",
+       "outlineView:shouldCollapseItem:",
        "outlineView:shouldEditTableColumn:item:",
+       "outlineView:shouldExpandItem:",
        "outlineView:shouldHighlightWithoutSelectingCell:forTableColumn:byItem:",
        "outlineView:shouldSelectItem:",
+       "outlineView:shouldSelectItem:byExtendingSelection:",
+       "outlineView:shouldSelectRowIndexes:byExtendingSelection:",
+       "outlineView:shouldSelectTableColumn:",
        "outlineView:sortDescriptorsDidChange:",
+       "outlineView:toolTipForCell:rect:tableColumn:item:mouseLocation:",
+       "outlineView:validateDrop:proposedItem:proposedChildIndex:",
        "outlineView:willDisplayCell:forTableColumn:item:",
-       "outlineViewColumnDidMove:",
-       "outlineViewItemDidCollapse:",
-       "outlineViewItemDidExpand:",
-       "outlineViewSelectionDidChange:",
-       "outlookWebAccessServer",
+       "outlineView:willDisplayCell:forTableColumn:row:",
+       "outlineView:willDisplayOutlineCell:forTableColumn:item:",
+       "outlineView:willDisplayOutlineCell:forTableColumn:row:",
+       "outlineView:writeItems:toPasteboard:",
        "outputFormat",
-       "outputStreamToBuffer:capacity:",
-       "outputStreamToFileAtPath:append:",
-       "outputStreamToMemory",
+       "outputImage",
+       "outputKeys",
+       "overrideMediaType",
        "owner",
-       "ownerCard",
        "ownerDocument",
-       "ownerElement",
        "ownsDestinationObjectsForRelationshipKey:",
        "pListForPath:createFile:",
        "page",
@@ -10980,93 +12211,78 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "pageCacheSize",
        "pageCount",
        "pageDown:",
-       "pageDownAndModifySelection:",
+       "pageFooter",
+       "pageHeader",
        "pageLayout",
        "pageOrder",
-       "pageScroll",
        "pageSizeForPaper:",
        "pageTitle",
        "pageUp:",
-       "pageUpAndModifySelection:",
        "pair",
-       "pairWithKey:value:",
-       "palette",
        "paletteFontOfSize:",
        "paletteImageRep",
        "paletteLabel",
-       "pane",
        "panel",
+       "panel:compareFilename:with:caseSensitive:",
+       "panel:directoryDidChange:",
+       "panel:isValidFilename:",
+       "panel:shouldShowFilename:",
+       "panel:userEnteredFilename:confirmed:",
+       "panel:willExpand:",
        "panelConvertFont:",
-       "paperName",
+       "panelSelectionDidChange:",
        "paperSize",
        "paragraphAttributesAtIndex:effectiveRange:inRange:",
+       "paragraphCharacterRange",
        "paragraphGlyphRange",
        "paragraphRangeForRange:",
-       "paragraphSeparatorGlyphRange",
+       "paragraphSeparatorCharacterRange",
        "paragraphSpacing",
+       "paragraphSpacingAfterCharactersInRange:withProposedLineFragmentRect:",
        "paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:",
        "paragraphSpacingBefore",
        "paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:",
-       "paragraphs",
        "paramDescriptorForKeyword:",
-       "parameterString",
+       "parameter:differs:from:",
        "parent",
-       "parentContext",
        "parentCrayonRow",
        "parentCrayonView",
        "parentForItem:",
        "parentFrame",
-       "parentGroups",
        "parentItemRepresentedObjectForMenu:",
        "parentNode",
+       "parentObject",
+       "parentObjectUnignored",
+       "parentSpecifier",
+       "parentStore",
        "parentWindow",
        "parse",
        "parse:",
-       "parseABDATE",
-       "parseABExtensionType:",
-       "parseABOrder",
-       "parseABPhoto",
-       "parseABReleatedNames",
-       "parseABShowAs",
-       "parseADD",
-       "parseADR",
-       "parseBDAY",
-       "parseData",
-       "parseData:",
-       "parseDictionaryOfKey:value:",
-       "parseEMAIL",
        "parseError:",
-       "parseItem",
        "parseKey:",
        "parseMachMessage:localPort:remotePort:msgid:components:",
-       "parseMetaRuleBody",
        "parseMetaSyntaxLeafResultShouldBeSkipped:",
-       "parseMetaSyntaxSequence",
-       "parseN",
-       "parseNICKNAME",
-       "parseNumber",
-       "parseORG",
-       "parsePhoto:",
-       "parseQuotedString",
-       "parseSeparator",
        "parseSeparatorEqualTo:",
-       "parseSingleValue",
        "parseStream",
-       "parseString",
-       "parseSuite:separator:allowOmitLastSeparator:",
        "parseSuiteOfPairsKey:separator:value:separator:allowOmitLastSeparator:",
-       "parseTEL",
        "parseTokenEqualTo:mask:",
        "parseTokenWithMask:",
-       "parseURL",
-       "parseUnquotedString",
-       "parseVERSION",
-       "parsedGrammarForString:",
        "parser:didEndElement:namespaceURI:qualifiedName:",
        "parser:didStartElement:namespaceURI:qualifiedName:attributes:",
+       "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:",
+       "parser:foundCDATA:",
        "parser:foundCharacters:",
-       "parserError",
-       "parserForData:",
+       "parser:foundComment:",
+       "parser:foundElementDeclarationWithName:model:",
+       "parser:foundExternalEntityDeclarationWithName:publicID:systemID:",
+       "parser:foundIgnorableWhitespace:",
+       "parser:foundNotationDeclarationWithName:publicID:systemID:",
+       "parser:foundNotationDeclarationWithName:publicID:systemID:notationName:",
+       "parser:foundProcessingInstructionWithTarget:data:",
+       "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:",
+       "parser:parseErrorOccurred:",
+       "parserDidEndDocument:",
+       "parserDidStartDocument:",
        "part",
        "partCode",
        "partHit:",
@@ -11075,82 +12291,66 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "partialObjectKey",
        "passesFilterAtIndex:",
        "password",
-       "passwordMode",
        "paste:",
-       "pasteAsPlainText:",
-       "pasteAsRichText:",
        "pasteFont:",
-       "pasteItemUpdate:",
+       "pasteImageNamed:",
        "pasteRuler:",
        "pasteboard:provideDataForType:",
        "pasteboard:provideDataForType:itemIdentifier:",
-       "pasteboardByFilteringData:ofType:",
        "pasteboardByFilteringFile:",
        "pasteboardByFilteringTypesInPasteboard:",
-       "pasteboardDataRepresentation",
+       "pasteboardChangedOwner:",
+       "pasteboardTypesForSelection",
        "pasteboardWithName:",
        "pasteboardWithUniqueName",
        "path",
        "pathByResolvingSymlinksAndAliasesInPath:",
        "pathComponents",
        "pathContentOfSymbolicLinkAtPath:",
+       "pathExpression",
        "pathExtension",
-       "pathForAuxiliaryExecutable:",
-       "pathForDisplay",
        "pathForImageResource:",
        "pathForResource:ofType:",
-       "pathForResource:ofType:inDirectory:",
-       "pathForResource:ofType:inDirectory:forLanguage:",
        "pathForResource:ofType:inDirectory:forLocalization:",
        "pathForSoundResource:",
-       "pathNameForImage",
-       "pathNamesForRecords:",
-       "pathSeparator",
        "pathStoreWithCharacters:length:",
        "pathToColumn:",
-       "pathToObjectWithName:",
-       "pathToiDisk",
        "pathWithComponents:",
+       "pathnameForDatabase",
        "pathsForResourcesOfType:inDirectory:",
-       "pathsForResourcesOfType:inDirectory:forLanguage:",
        "pathsForResourcesOfType:inDirectory:forLocalization:",
-       "pathsMatchingExtensions:",
        "patternImage",
-       "patternPhase",
-       "pause",
        "pausedActions",
-       "peek",
-       "peekAt:",
-       "peekTokenType",
-       "peekTokenWithMask:",
-       "people",
-       "peopleFromVCardData:",
-       "peopleOrCompaniesSelection",
-       "peoplePane",
-       "peoplePickerView",
+       "peerCertificateChain",
+       "percentEscapeDecodeBuffer:range:stripWhitespace:",
        "perform:",
        "perform:with:",
        "perform:with:with:",
        "perform:withEachObjectInArray:",
-       "perform:withObject:",
-       "perform:withObject:withObject:",
+       "performAction:",
        "performActionFlashForItemAtIndex:",
        "performActionForItemAtIndex:",
        "performActionWithHighlightingForItemAtIndex:",
        "performActivity:modes:",
+       "performAdapterOperation:",
+       "performAdapterOperations:",
+       "performChanges",
+       "performClick",
        "performClick:",
        "performClickWithFrame:inView:",
        "performClose:",
        "performDefaultImplementation",
+       "performDelayedComplete",
        "performDragOperation:",
-       "performFileOperation:source:destination:files:tag:",
        "performFindPanelAction:",
        "performFindPanelAction:forClient:",
-       "performHTTPHeaderRead:andCall:",
+       "performHTTPHeaderRead:",
        "performKeyEquivalent:",
        "performMenuAction:withTarget:",
        "performMiniaturize:",
        "performMnemonic:",
+       "performOperationUsingObject:andObject:",
+       "performPrimitiveOperationUsingObject:andObject:",
        "performRemoveObjectForKey:",
        "performSelector:",
        "performSelector:object:afterDelay:",
@@ -11165,230 +12365,262 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "performSetObject:forKey:",
        "performStreamRead",
        "performStreamRead:",
-       "performWithName:",
        "performZoom:",
+       "performsContentDecoding",
        "performv::",
        "persistence",
+       "persistenceStore",
        "persistentDomainForName:",
-       "persistentDomainNames",
-       "personChanged:",
-       "personFromDictionary:",
-       "personImageView",
-       "personSelected:",
-       "personValue",
-       "phoneFormatsDictionary",
-       "phoneLabel",
-       "phoneticFieldsPresent",
-       "photoCacheDirectoryPath",
+       "persistentStore",
+       "persistentStoreCoordinator",
+       "persistentStoreForURL:",
+       "persistentStoreTypeForFileType:",
+       "persistentStores",
        "physicalSize",
-       "pickedAllPages:",
-       "pickedButton:",
-       "pickedLayoutList:",
-       "pickedOrientation:",
-       "pickedPaperSize:",
-       "pickedUnits:",
-       "pickerView",
-       "pictFrame",
-       "pictureDirPath",
        "pipe",
-       "pixelFormat",
        "pixelsHigh",
        "pixelsWide",
+       "pk64",
        "placeButtons:firstWidth:secondWidth:thirdWidth:",
        "placeholderAttributedString",
        "placeholderForMarker:",
-       "placeholderForMarker:withBinding:",
        "placeholderString",
        "play",
-       "playsEveryFrame",
-       "playsSelectionOnly",
+       "plugInViewWithArguments:",
+       "plugInViewWithArguments:fromPluginPackage:",
        "plugin",
        "pluginClassForObject:andBinderClass:requiredPluginProtocol:",
        "pluginDescription",
-       "pluginEnabled:",
+       "pluginDestroy",
        "pluginForExtension:",
        "pluginForKey:withEnumeratorSelector:",
        "pluginForMIMEType:",
+       "pluginInitialize",
        "pluginPointer",
-       "pluginViewWithPackage:attributes:baseURL:",
+       "pluginScriptableObject",
+       "pluginStart",
+       "pluginStop",
+       "pluginViewWithArguments:",
+       "pluginViewWithPackage:attributeNames:attributeValues:baseURL:",
        "pluginWithPath:",
        "plugins",
-       "pluginsEnabled",
        "pluginsInfo",
-       "pmPageFormat",
-       "pmPrintSettings",
        "pointSize",
+       "pointToOffset:style:position:reversed:includePartialGlyphs:",
        "pointValue",
        "pointerID",
        "pointerSerialNumber",
-       "pointerToElement:directlyAccessibleElements:",
        "pointerType",
        "pointerValue",
+       "pointingDeviceID",
+       "pointingDeviceSerialNumber",
+       "pointingDeviceType",
        "pointingHandCursor",
        "policyDelegate",
-       "poolCountHighWaterMark",
-       "poolCountHighWaterResolution",
+       "pollForAppletInView:",
+       "pollForAppletInWindow:",
        "pop",
        "popAndInvoke",
        "popBundleForImageSearch",
+       "popGlyph:",
+       "popSubnode",
        "popTopView",
        "popUndoObject",
        "popUp:",
        "popUpContextMenu:withEvent:forView:",
        "popUpContextMenu:withEvent:forView:withFont:",
        "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:",
-       "popUpStatusItemMenu:",
-       "popUpWithEvent:inView:",
        "populateCacheFromStream:data:",
-       "populateObject:withContent:valueKey:insertsNullPlaceholder:",
-       "populatePicker:",
-       "popupForProperty:",
+       "populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:",
        "popupStatusBarMenu:inRect:ofView:withEvent:",
        "port",
        "portCoderWithComponents:",
-       "portCoderWithReceivePort:sendPort:components:",
        "portForName:",
        "portForName:host:",
        "portForName:host:nameServerPortNumber:",
-       "portForName:onHost:",
        "portList",
-       "portWithMachPort:",
        "portalDied:",
-       "portsForMode:",
        "poseAs:",
        "poseAsClass:",
+       "position",
        "positionButton",
        "positionOfGlyph:forCharacter:struckOverRect:",
        "positionOfGlyph:forLongCharacter:struckOverRect:",
        "positionOfGlyph:precededByGlyph:isNominal:",
        "positionOfGlyph:struckOverGlyph:metricsExist:",
-       "positionOfGlyph:struckOverRect:metricsExist:",
        "positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:",
        "positionRelativeToAttachedView",
-       "positionString",
-       "positionsForCompositeSequence:numberOfGlyphs:pointArray:",
        "positiveFormat",
-       "positivePassDirection",
+       "positiveInfinitySymbol",
+       "postColorSwatchesChangedDistributedNotification",
        "postEvent:atStart:",
        "postNotification:",
        "postNotificationName:object:",
        "postNotificationName:object:userInfo:",
        "postNotificationName:object:userInfo:deliverImmediately:",
-       "postQueryHasBeenCanceledNotification",
-       "postQueryHasFinishedNotification",
-       "postResultsAreInNotificationNotification:",
+       "postNotificationName:object:userInfo:options:",
        "postURL:target:len:buf:file:",
        "postURLNotify:target:len:buf:file:notifyData:",
        "postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:",
-       "postsBoundsChangedNotifications",
        "postsFrameChangedNotifications",
-       "powerOffIn:andSave:",
        "precomposedStringWithCanonicalMapping",
        "precomposedStringWithCompatibilityMapping",
        "predefinedAttributesForIndex:",
+       "predefinedEntityDeclarationForName:",
+       "predefinedNamespaceForPrefix:",
+       "predicate",
+       "predicateFormat",
+       "predicateName",
+       "predicateOperator",
+       "predicateOperatorType",
+       "predicateString",
+       "predicateWithFormat:argumentArray:",
+       "predicateWithFormat:arguments:",
+       "predicateWithLeftExpression:rightExpression:modifier:type:options:",
+       "predicateWithSubstitutionVariables:",
+       "predicateWithValue:",
        "preferences",
        "preferencesContentSize",
        "preferencesHaveChanged:",
        "preferencesIdentifier",
        "preferencesNibName",
+       "preferencesWindowShouldClose",
        "preferredEdge",
        "preferredExtensionForMIMEType:",
        "preferredFilename",
-       "preferredFontNames",
        "preferredLocalizationName",
        "preferredLocalizations",
        "preferredLocalizationsFromArray:",
-       "preferredLocalizationsFromArray:forPreferences:",
        "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:",
        "preferredPlaceholderForMarker:",
        "prefersAllColumnUserResizing",
        "prefersColorMatch",
+       "prefersEnabledOverEditable:",
        "prefersTrackingUntilMouseUp",
        "prefix",
+       "prefixForName:",
        "prepare",
+       "prepareBeginsWith:",
        "prepareCallbacks",
+       "prepareComparisonPredicate:",
        "prepareContent",
-       "prepareForDifferentCard",
-       "prepareForDifferentCard:",
+       "prepareDeleteStatementWithCorrelation:",
+       "prepareDeleteStatementWithRow:",
+       "prepareEndsWith:",
        "prepareForDragOperation:",
+       "prepareForReloadChildrenForNode:",
+       "prepareForSave",
+       "prepareForSave:",
        "prepareGState",
+       "prepareIn:",
+       "prepareInsertStatementWithCorrelation:",
+       "prepareInsertStatementWithRow:",
+       "prepareLike:",
+       "prepareMatches:",
+       "prepareOpenGL",
        "preparePageLayout:",
+       "prepareSQLStatement:",
        "prepareSavePanel:",
+       "prepareSelectStatementWithFetchRequest:",
+       "prepareUpdateStatementWithRow:originalRow:",
        "prepareWithInvocationTarget:",
-       "prependTransform:",
-       "preprefersTrackingUntilMouseUp",
+       "presentError:",
+       "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:",
+       "presentableDescription",
+       "presentableName",
+       "presentableNameForSpecifier:",
+       "presentableNames",
+       "presentationWindowForError:originatedInWindow:",
+       "preservesContentDuringLiveResize",
        "preservesSelection",
-       "pressedCancel:",
-       "pressedImage",
-       "pressedImageForControlTint:",
-       "pressedOK:",
        "pressure",
        "preventWindowOrdering",
-       "previousCard:",
-       "previousEvent",
+       "previewHelperClass",
        "previousFailureCount",
        "previousItem",
-       "previousKeySegment",
        "previousKeyView",
        "previousKeyViewInsideWebFrameViews",
        "previousKeyViewOutsideWebFrameViews",
-       "previousPoint",
        "previousSibling",
-       "previousText",
        "previousValidKeyView",
-       "primaryIdentifier",
+       "primaryKey",
+       "primaryKeyColumnDefinitions",
+       "primaryKeyForEntity:",
+       "primaryKeyGeneration",
+       "primaryKeys",
+       "primitiveType",
+       "primitiveValueForKey:",
        "principalClass",
+       "print",
        "print:",
        "printDocument:",
-       "printForDebugger:",
-       "printFormat:",
-       "printFormat:arguments:",
+       "printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:",
+       "printFile:ok:",
        "printInfo",
        "printInfoIsBeingDeallocated",
        "printJobTitle",
+       "printOperationWithSettings:error:",
        "printOperationWithView:",
        "printOperationWithView:printInfo:",
        "printPanel",
        "printShowingPrintPanel:",
        "printer",
        "printerFont",
-       "printerNames",
-       "printerTypes",
-       "printerWithName:",
-       "printerWithName:domain:includeUnavailable:",
        "printerWithType:",
        "printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:",
        "priorityForFlavor:",
-       "privateFrameworksPath",
-       "privateVCardEnabled",
-       "proceedWithImport:",
+       "privateBrowsingEnabled",
+       "processCDATA:",
+       "processComment:",
+       "processDocument:",
+       "processDocumentFragment:",
+       "processDocumentType:",
        "processEditing",
+       "processElement:",
+       "processEndElement:",
+       "processEndEntity:",
+       "processEntity:",
+       "processEntityReference:",
        "processIdentifier",
        "processInfo",
        "processInputKeyBindings:",
        "processKeyword:option:keyTran:arg:argTran:",
        "processKeyword:option:keyTran:arg:argTran:quotedArg:",
        "processName",
+       "processNode:",
+       "processNotation:",
+       "processPendingChanges",
+       "processProcessingInstruction:",
+       "processRealDocument:",
+       "processSignificantWhitespace:",
        "processString:",
+       "processText:",
        "processType:file:isDir:",
-       "processingInstructionImpl",
-       "processingInstructionWithImpl:",
+       "processWhitespace:",
+       "processXMLDeclaration:",
        "progressIndicator",
        "progressIndicatorColor",
        "progressPanel",
+       "promise:keysAndValues:",
+       "promotedImage:",
        "prompt",
        "propagateFrameDirtyRects:",
+       "propagatesDeletesAtEndOfEvent",
        "properties",
+       "propertiesAtIndex:",
+       "propertiesByName",
        "property",
+       "propertyDescription",
+       "propertyDescriptionFromKey:implDeclaration:presoDeclaration:suiteName:className:",
        "propertyForKey:",
        "propertyForKey:inRequest:",
        "propertyForKeyIfAvailable:",
-       "propertyLineForGenericABProperty:vCardProperty:is21:groupCount:",
        "propertyList",
-       "propertyList:isValidForFormat:",
        "propertyListForType:",
        "propertyListFromData:mutabilityOption:format:errorDescription:",
        "propertyListFromStringsFileFormat",
+       "propertyMappings",
+       "propertyNamed:",
        "propertyTableAtIndex:",
        "propertyTableCount",
        "propertyType",
@@ -11397,16 +12629,19 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "protocol",
        "protocolCheckerWithTarget:protocol:",
        "protocolFamily",
-       "protocolSpecificInformation",
        "prototype",
+       "provideImageData:bytesPerRow:origin::size::userInfo:",
+       "provideImageTexture:bounds:userInfo:",
        "provideNewButtonImage",
        "provideNewSubview:",
        "provideNewView:",
        "providerRespondingToSelector:",
        "provisionalDataSource",
        "provisionalItem",
+       "provisionalLoadStarted",
+       "proxyClass",
+       "proxyDictionary",
        "proxyFor:fauxParent:",
-       "proxyForObject:",
        "proxyForRulebookServer",
        "proxyPropertiesForURL:",
        "proxyType",
@@ -11414,40 +12649,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "proxyWithLocal:connection:",
        "proxyWithTarget:connection:",
        "publicID",
-       "publicId",
        "publish",
        "pullsDown",
-       "pumaLDAPServers",
-       "pumpCRCTwice",
        "punctuationCharacterSet",
-       "purgeExtras",
+       "purgeCookiesFromPrivateBrowsing",
        "purpleColor",
        "push",
        "push:",
        "pushBundleForImageSearch:",
+       "pushGlyph:",
+       "pushSubnode:",
        "put:",
-       "put:URL:",
+       "put::",
        "putByte:",
        "putCell:atRow:column:",
        "putLELong:",
        "putLEWord:",
-       "qdCreatePortForWindow:",
-       "qdPort",
-       "query",
-       "queryAttributes",
-       "queryLDAPServer",
-       "queryOperator",
-       "queryType",
+       "queryNode",
        "quotedStringRepresentation",
        "raise",
        "raise:format:",
        "raise:format:arguments:",
+       "raise:toPower:",
        "raiseBaseline:",
-       "raiseWithStatus:",
        "raisesForNotApplicableKeys",
-       "raisesForNotApplicableKeysWithBinding:",
        "range",
        "rangeAtIndex:",
+       "rangeByAlteringCurrentSelection:direction:granularity:",
+       "rangeByAlteringCurrentSelection:verticalDistance:",
+       "rangeByExpandingSelectionWithGranularity:",
        "rangeContainerClassDescription",
        "rangeContainerObject",
        "rangeCount",
@@ -11458,40 +12688,46 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "rangeOfCharacterFromSet:",
        "rangeOfCharacterFromSet:options:",
        "rangeOfCharacterFromSet:options:range:",
+       "rangeOfCharactersAroundCaret",
        "rangeOfComposedCharacterSequenceAtIndex:",
-       "rangeOfGraphicalSegmentAtIndex:",
-       "rangeOfNominallySpacedGlyphsContainingIndex:",
        "rangeOfString:",
        "rangeOfString:options:",
        "rangeOfString:options:range:",
+       "rangeOfTextBlock:atIndex:",
+       "rangeOfTextList:atIndex:",
+       "rangeOfTextTable:atIndex:",
        "rangeValue",
+       "rangesForUserCharacterAttributeChange",
+       "rangesForUserParagraphAttributeChange",
+       "rangesForUserTextChange",
        "rasterize:",
-       "rate",
-       "reSetAcceptsMouseMovedEvents",
-       "read:",
-       "read:maxLength:",
+       "rawData",
        "readAlignedDataSize",
+       "readBinaryStoreFromData:originalPath:error:",
        "readColors",
        "readData:length:",
        "readDataOfLength:",
        "readDataOfLength:buffer:",
        "readDataToEndOfFile",
+       "readDocumentFragment:",
        "readDocumentFromPbtype:filename:",
-       "readFileContentsType:toFile:",
-       "readFileWrapper",
+       "readFromData:ofType:error:",
        "readFromData:options:documentAttributes:",
+       "readFromData:options:documentAttributes:error:",
        "readFromFile:",
+       "readFromFile:error:",
        "readFromFile:ofType:",
-       "readFromStream:",
+       "readFromFileWrapper:ofType:error:",
        "readFromURL:ofType:",
+       "readFromURL:ofType:error:",
        "readFromURL:options:documentAttributes:",
-       "readInBackgroundAndNotify",
+       "readFromURL:options:documentAttributes:error:",
        "readInBackgroundAndNotifyForModes:",
        "readInt",
        "readLock",
+       "readMetadataFromFile:error:",
+       "readObsoleteBinaryStoreFromData:error:",
        "readPrintInfo",
-       "readRTFDFromFile:",
-       "readRichText:forView:",
        "readSelectionFromPasteboard:",
        "readSelectionFromPasteboard:type:",
        "readToEndOfFileInBackgroundAndNotify",
@@ -11502,211 +12738,225 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "realAddDirNamed:",
        "realElement",
        "reallyDealloc",
+       "reallyInsertObject:atIndex:",
+       "reallyRemoveAllObjects",
+       "reallyRemoveObject:",
+       "reallyRemoveObjectAtIndex:",
+       "reallyReplaceObjectAtIndex:withObject:",
        "realm",
        "reapplyStyles",
        "reapplyStylesForDeviceType:",
-       "rearrangeObjects:",
        "reason",
-       "recache",
-       "recacheAllColors",
+       "reasonForError:",
+       "recacheAllColors:",
        "recacheColor",
+       "recalcFigure:path:button:offset:",
+       "recalcFigureForResolution:",
+       "recalculateKeyViewLoop",
        "receivePort",
        "receivedData:",
+       "receivedData:textEncodingName:",
        "receivedData:withDataSource:",
        "receivedError:",
        "receivedError:withDataSource:",
        "receivedResponse:",
        "receiversSpecifier",
        "receivesCredentialSecurely",
-       "recentDocumentURLs",
-       "recentPictures",
-       "recentPicturesPopUp",
        "recentSearches",
-       "recentSmallIcons",
        "recentsAutosaveName",
-       "recognizableAttributes",
+       "recipe",
+       "recipeDifference:with:",
+       "recipeDiffers:from:",
        "recomputeToolTipsForView:remove:add:",
+       "reconcileSelfToSuiteRegistry:",
+       "reconcileSubdescriptionsToSuiteRegistry:",
        "reconcileToCarbonWindowBounds",
-       "reconstructedDocumentSource",
-       "recordAtIndex:",
-       "recordClassFromUniqueID:",
-       "recordClassFromUniqueId:",
+       "reconcileToSuiteRegistry:suiteName:",
+       "reconcileToSuiteRegistry:suiteName:className:",
+       "reconcileToSuiteRegistry:suiteName:commandName:",
+       "reconcileToSuiteRegistry:suiteName:recordTypeName:",
+       "reconnectBindings:",
+       "recordChangesInContext:",
+       "recordDatabaseOperation:",
+       "recordDeleteForObject:",
        "recordDescriptor",
-       "recordForUniqueId:",
-       "recordTypesToSearchFor",
-       "records",
-       "recordsForUIDs:",
-       "recordsMatchingSearchElement:",
-       "recordsUserChanges",
+       "recordPrimaryKeyForInsertedObject:",
+       "recordSnapshot:forGlobalID:",
+       "recordSnapshot:forSourceGlobalID:relationshipName:",
+       "recordSnapshots:",
+       "recordToManySnapshots:",
+       "recordUpdateForObject:",
+       "recoveryAttempter",
+       "recoveryOptionIndex",
        "rect",
        "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:",
-       "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:forCursorPosition:",
        "rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:",
+       "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:",
        "rectForIndex:",
        "rectForKey:inTable:",
+       "rectForLayoutAtPoint:inRect:textContainer:characterRange:",
        "rectForPage:",
        "rectForPart:",
+       "rectForRolloverTracking",
        "rectIncludingShadow",
        "rectOfColumn:",
        "rectOfItemAtIndex:",
        "rectOfRow:",
-       "rectOfSwatchInteriorAtIndex:",
        "rectOfTickMarkAtIndex:",
+       "rectPreservedDuringLiveResize",
        "rectValue",
        "rectWithoutShadow",
-       "recursiveContainsGroup:",
+       "recycle",
+       "red",
        "redColor",
        "redComponent",
        "redeliverStream",
-       "redisplayPopup",
+       "redirectedToURL:",
        "redo",
        "redo:",
        "redoActionName",
-       "redoIt",
+       "redoEditing:",
        "redoMenuItemTitle",
        "redoMenuTitleForUndoActionName:",
        "reenableDisplayPosting",
        "reenableFlush",
        "reenableHeartBeating:",
-       "ref",
+       "refCount",
+       "refaultObject:globalID:editingContext:",
        "referenceBinder",
        "referencedObjectCount",
        "referrer",
        "reflectScrolledClipView:",
-       "reformatValueAtLocation:",
-       "reformatValueAtLocationInNumber:",
+       "refrROI:forRect:",
        "refreashUI",
        "refresh",
-       "refreshDisplayedCard",
-       "refreshRow:",
-       "refreshesAllKeys",
-       "refreshesAllObjects",
+       "refreshDetailContent",
+       "refreshObjects:",
+       "refreshPlugins:",
        "refusesFirstResponder",
-       "refusesToBeShown",
-       "registerAddress:",
+       "regionOf:destRect:",
+       "regionOf:destRect:userInfo:",
+       "regionOfFindEdges:destRect:userInfo:",
+       "registerChannel:",
        "registerClass:",
        "registerClassDescription:",
        "registerClassDescription:forClass:",
        "registerCoercer:selector:toConvertFromClass:toClass:",
        "registerCommandDescription:",
+       "registerConnection:",
        "registerDefaults:",
        "registerDragTypes:forWindow:",
+       "registerExternalData:forObjectID:options:",
+       "registerExternalData:forSourceObjectID:key:options:",
+       "registerFilterName:constructor:classAttributes:",
+       "registerFilters",
        "registerForCommandDescription:",
        "registerForDraggedTypes:",
        "registerForDrags",
+       "registerForEdgeChanges:",
+       "registerForEditingDelegateNotification:selector:",
+       "registerForEnclosingClipViewNotifications",
        "registerForFilenameDragTypes",
+       "registerForPropertyChangedNotifications",
        "registerForServices",
+       "registerForWindowNotifications",
+       "registerHelpBook",
        "registerImageRepClass:",
-       "registerLanguage:byVendor:",
-       "registerModel:",
        "registerName:",
        "registerName:withNameServer:",
        "registerObject:withServicePath:",
        "registerPluginClass:forObjectClass:andBinderClass:",
-       "registerPort:forName:",
        "registerPort:name:",
        "registerPort:name:nameServerPortNumber:",
-       "registerServiceProvider:withName:",
        "registerServicesMenuSendTypes:returnTypes:",
        "registerTranslator:selector:toTranslateFromClass:",
        "registerTranslator:selector:toTranslateFromDescriptorType:",
        "registerURLHandleClass:",
        "registerUndoOperation",
-       "registerUndoWithTarget:selector:arguments:argumentCount:",
        "registerUndoWithTarget:selector:object:",
-       "registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:",
        "registerViewClass:representationClass:forMIMEType:",
        "registeredImageRepClasses",
+       "registeredObjects",
        "regularFileContents",
-       "reinsertRecord:inSortedList:",
-       "relatedObject",
-       "relativeCurveToPoint:controlPoint1:controlPoint2:",
+       "rel",
+       "relatedIDsForKey:",
+       "relationship",
+       "relationshipDataWithSourceID:forRelationship:",
+       "relationshipDataWithSourceID:forRelationship:withContext:",
+       "relationshipDescription",
+       "relationshipMappings",
+       "relationshipNamed:",
+       "relationshipsByName",
        "relativeLineToPoint:",
-       "relativeMoveToPoint:",
-       "relativePath",
        "relativePosition",
        "relativeString",
        "release",
        "releaseAllPools",
-       "releaseConnection",
+       "releaseCaches",
+       "releaseConnectionWithSynchronizePeerBinders:",
        "releaseGState",
        "releaseGlobally",
        "releaseIconForURL:",
-       "releaseLock:",
        "releaseName:count:",
        "releaseResources",
+       "releaseSQLStatement",
        "releaseView:",
+       "relinquishFocus",
        "reload",
        "reload:",
-       "reloadAll:",
        "reloadChildrenForNode:",
        "reloadColumn:",
        "reloadData",
        "reloadDefaultFontFamilies",
-       "reloadGroups",
-       "reloadItem:",
        "reloadItem:reloadChildren:",
-       "reloadMembers",
        "reloadRootNode",
        "rememberedSnapToIndex",
        "remoteObjects",
        "remove:",
        "removeAllActions",
        "removeAllActionsWithTarget:",
-       "removeAllButCurrent",
-       "removeAllCachedResponses",
-       "removeAllColumnFilters",
+       "removeAllBindVariables",
        "removeAllContentObjectsInCellOrControl:",
-       "removeAllDrawersImmediately",
        "removeAllExpandedNodes",
-       "removeAllFormats",
        "removeAllIndexes",
-       "removeAllIndices",
        "removeAllItems",
        "removeAllObjects",
        "removeAllObjectsWithTarget:",
        "removeAllPoints",
-       "removeAllProperties",
-       "removeAllRequestModes",
+       "removeAllSubNodes",
        "removeAllToolTips",
        "removeAllToolTipsForView:",
-       "removeAllToolTipsForView:withOwner:",
-       "removeAttribute:",
-       "removeAttribute:index:",
+       "removeAnimatingRenderer:",
        "removeAttribute:range:",
-       "removeAttribute:value:",
-       "removeAttribute:values:",
-       "removeAttributeNS::",
-       "removeAttributeNode:",
+       "removeAttributeForName:",
        "removeBinder:",
        "removeBinding:",
-       "removeCachedResponseForRequest:",
-       "removeCharactersInRange:",
        "removeCharactersInString:",
        "removeChild:",
+       "removeChildAtIndex:",
        "removeChildWindow:",
+       "removeClassDescriptions:",
        "removeClient:",
        "removeCollection:",
        "removeColor:",
        "removeColorSheetDidEnd:returnCode:context:",
        "removeColorWithKey:",
-       "removeColumn:",
-       "removeColumnFilter:",
-       "removeConfirmSheetDidEnd:returnCode:contextInfo:",
+       "removeColumns:",
+       "removeCommandDescriptions:",
+       "removeConnection:forKey:",
        "removeConnection:fromRunLoop:forMode:",
        "removeContextHelpForObject:",
        "removeConversation",
        "removeCredential:forProtectionSpace:",
        "removeCursorRect:cursor:",
-       "removeDecriptorAtIndex:",
        "removeDescriptorAtIndex:",
-       "removeDescriptorWithKeyword:",
        "removeDocument:",
+       "removeDragCaret",
+       "removeEditingStyleFromBodyElement",
        "removeElementAtIndex:",
        "removeElementsInRange:",
        "removeElementsInRange:coalesceRuns:",
-       "removeEntryAtIndex:",
-       "removeEventHandlerForEventClass:andEventID:",
+       "removeEventListener:::",
        "removeExpandedNode:",
        "removeExpandedNodesStartingWithIndex:",
        "removeFavoriteInWindow:",
@@ -11715,139 +12965,105 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "removeFileAtPath:handler:",
        "removeFileWrapper:",
        "removeFontDescriptor:fromCollection:",
-       "removeFontTrait:",
-       "removeFormatAtIndex:",
        "removeFrameUsingName:",
        "removeFreedView:",
        "removeFreedWindow:",
        "removeFromFrame",
+       "removeFromOriginLoadSet",
        "removeFromRunLoop:forMode:",
        "removeFromSuperview",
        "removeFromSuperviewWithoutNeedingDisplay",
-       "removeGrayExampleString",
        "removeHeartBeatView:",
        "removeImmediately:",
        "removeIndex:",
        "removeIndexRange:",
        "removeIndexes:",
-       "removeIndexesFromIndexSet:",
        "removeIndexesInRange:",
        "removeItem:",
        "removeItemAtIndex:",
        "removeItemForURLString:",
        "removeItemViewerAtIndex:",
-       "removeItemWithIdentifier:",
        "removeItemWithObjectValue:",
        "removeItemWithTitle:",
        "removeItems:",
-       "removeKeysForObject:",
+       "removeKeyEventHandler",
        "removeLastObject",
        "removeLayoutManager:",
        "removeList:",
        "removeListSheetDidEnd:returnCode:context:",
+       "removeListener:",
        "removeLocal:",
        "removeMarker:",
-       "removeMember:",
        "removeMouseMovedObserver",
-       "removeNamedItem:",
-       "removeNamedItemNS::",
-       "removeNumberOfIndexes:fromSelectionIndexesAtIndex:",
+       "removeNamespaceForPrefix:",
        "removeObject:",
        "removeObject:fromBothSidesOfRelationshipWithKey:",
        "removeObject:fromPropertyWithKey:",
-       "removeObject:inRange:",
+       "removeObject:objectIDMap:",
        "removeObject:range:identical:",
        "removeObjectAt:",
        "removeObjectAtArrangedObjectIndex:",
        "removeObjectAtIndex:",
        "removeObjectForKey:",
        "removeObjectForKey:inDomain:",
-       "removeObjectFromMasterArrayRelationshipAtIndex:",
+       "removeObjectFromMasterArrayRelationshipAtIndex:selectionMode:",
        "removeObjectIdenticalTo:",
-       "removeObjectIdenticalTo:inRange:",
        "removeObjects:",
+       "removeObjectsAtArrangedObjectIndexPaths:",
        "removeObjectsAtArrangedObjectIndexes:",
        "removeObjectsAtIndexes:",
        "removeObjectsForKeys:",
        "removeObjectsFromIndices:numIndices:",
-       "removeObjectsFromMasterArrayRelationshipAtIndexes:",
+       "removeObjectsFromMasterArrayRelationshipAtIndexes:selectionMode:",
        "removeObjectsInArray:",
        "removeObjectsInRange:",
        "removeObserver:",
        "removeObserver:forKeyPath:",
-       "removeObserver:fromObjectsAtIndexes:forKeyPath:",
        "removeObserver:name:object:",
-       "removeParamDescriptorWithKeyword:",
-       "removePersistentDomainForName:",
+       "removePathFromLibrarySearchPaths:",
+       "removePersistentStore:error:",
        "removePort:forMode:",
        "removePortForName:",
        "removePortsFromAllRunLoops",
        "removePortsFromRunLoop:",
-       "removeProperties:",
-       "removeProperty:",
        "removeProxy:",
-       "removeRecord",
-       "removeRecord:",
-       "removeRecordsFromGroup",
-       "removeRepresentation:",
        "removeRequestMode:",
        "removeRow:",
+       "removeRows:",
        "removeRunLoop:",
-       "removeSavedColumnsWithAutosaveName:",
-       "removeSelectedObjects:",
-       "removeSelectionIndexes:",
-       "removeServer:",
        "removeServiceProvider:",
-       "removeSpace:atIndex:",
-       "removeSpinningArrows",
-       "removeStatusItem:",
-       "removeSubgroup:",
-       "removeSubrecord:",
-       "removeSuiteNamed:",
+       "removeSubNodeAtIndex:",
        "removeSuperviewObservers",
        "removeTabStop:",
-       "removeTabViewItem:",
+       "removeTable",
        "removeTableColumn:",
        "removeTemporaryAttribute:forCharacterRange:",
        "removeTextContainerAtIndex:",
-       "removeTimer:forMode:",
        "removeToolTip:",
        "removeToolTipForView:tag:",
        "removeToolbarItem:",
        "removeTrackingRect",
        "removeTrackingRect:",
-       "removeTrackingRects",
-       "removeValueAndLabelAtIndex:",
        "removeValueAtIndex:fromPropertyWithKey:",
-       "removeValueForProperty:",
        "removeView:fromView:layoutManager:",
-       "removeVolatileDomainForName:",
        "removeWebView:fromSetNamed:",
        "removeWindowController:",
        "removeWindowObservers",
        "removeWindowsItem:",
-       "removedMembers:fromGroup:",
-       "rename:",
        "renameColor:",
        "renameColorSheetDidEnd:returnCode:context:",
        "renameList:",
        "renameListSheetDidEnd:returnCode:context:",
-       "renderBitsWithCode:withSize:",
-       "renderLineWithCode:",
-       "renderPICTWithSize:",
-       "renderPart",
-       "renderShapeWithCode:",
-       "renderTextWithCode:",
+       "render:",
+       "renderResolutionData:toBitmap:width:height:bytesPerRow:",
        "renderTreeAsExternalRepresentation",
-       "renderer",
        "rendererWithFont:usingPrinterFont:",
+       "renderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:maximumWidth:",
+       "renderingMode",
        "renewGState",
        "renewRows:columns:",
-       "reopen",
+       "reopenDocumentForURL:withContentsOfURL:error:",
        "rep",
-       "repeatCount",
-       "repetitionCount",
-       "replace:child:",
        "replaceAllInView:selectionOnly:",
        "replaceAndFindInView:",
        "replaceBytesInRange:withBytes:",
@@ -11858,54 +13074,49 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "replaceCharactersInRange:withRTF:",
        "replaceCharactersInRange:withRTFD:",
        "replaceCharactersInRange:withString:",
-       "replaceCustomLabel:",
-       "replaceData:::",
-       "replaceElementAtIndex:withElement:",
+       "replaceChildAtIndex:withNode:",
        "replaceElementsInRange:withElement:coalesceRuns:",
-       "replaceFile:data:",
        "replaceFile:path:",
-       "replaceFormatAtIndex:withFormat:",
        "replaceGlyphAtIndex:withGlyph:",
        "replaceInView:",
-       "replaceLabelAtIndex:withLabel:",
+       "replaceIndexReferenceModelObjectArrayWithEqualCopy:",
        "replaceLayoutManager:",
+       "replaceNodeWithIdentifier:withDataFromDelegate:",
        "replaceNodeWithIdentifier:withNode:",
-       "replaceObject:with:",
        "replaceObject:withObject:",
-       "replaceObjectAt:with:",
        "replaceObjectAtIndex:withObject:",
        "replaceObjectsAtIndexes:withObjects:",
        "replaceObjectsInRange:withObject:length:",
-       "replaceObjectsInRange:withObjects:count:",
        "replaceObjectsInRange:withObjectsFromArray:",
        "replaceObjectsInRange:withObjectsFromArray:range:",
        "replaceOccurrencesOfString:withString:options:range:",
-       "replaceString:withString:range:options:inView:replacementRange:",
+       "replaceSelectionWithFragment:selectReplacement:smartReplace:",
+       "replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:",
+       "replaceSelectionWithNode:selectReplacement:smartReplace:",
+       "replaceSelectionWithText:selectReplacement:smartReplace:",
+       "replaceString:withString:ranges:options:inView:replacementRange:",
        "replaceSubview:with:",
        "replaceSubviewWith:",
-       "replaceTextContainer:",
+       "replaceTemporaryIDInObject:",
        "replaceTextStorage:",
        "replaceValueAtIndex:inPropertyWithKey:withValue:",
-       "replaceValueAtIndex:withValue:",
+       "replacementClassForClass:",
        "replacementObjectForArchiver:",
        "replacementObjectForCoder:",
        "replacementObjectForKeyedArchiver:",
        "replacementObjectForPortCoder:",
-       "replacementUpdateBinder",
-       "replacementUpdateBinder:",
        "replyAppleEventForSuspensionID:",
        "replyEvent",
-       "replyMode",
-       "replyTimeout",
        "replyToApplicationShouldTerminate:",
-       "replyToOpenOrPrint:",
        "replyWithException:",
-       "repopulatedContent",
-       "reportClientRedirectCancelled",
+       "reportClientRedirectCancelled:",
        "reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:",
+       "reportDataToClient:",
+       "reportDidFinishToClient",
        "reportError",
        "reportException:",
        "reportStreamError",
+       "repositionRolloverTrackingRectIfNecessary",
        "representation",
        "representationOfCoveredCharacters",
        "representationOfImageRepsInArray:usingType:properties:",
@@ -11917,61 +13128,43 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "request",
        "requestHeaderFieldsWithCookies:",
        "requestIsCacheEquivalent:toRequest:",
-       "requestLimit",
-       "requestModes",
-       "requestTimeout",
+       "requestStreamForTransmission",
        "requestUserAttention:",
        "requestWithURL:",
-       "requestWithURL:cachePolicy:timeoutInterval:",
        "requestWithURLCString:",
-       "requestedURL",
+       "requestedURLString",
        "requiredFileType",
        "requiredMinSize",
        "requiredMinSizeFor:",
-       "requiredReferenceBinderControllerProtocol",
        "requiredThickness",
        "requiresDirectKeyValueCodingCall",
        "reservedSpaceLength",
-       "reservedThicknessForAccessoryView",
-       "reservedThicknessForMarkers",
        "reset",
        "resetAdditionalClip",
-       "resetAllPorts",
-       "resetAlpha",
        "resetButtonDefaultLabel",
-       "resetBytesInRange:",
        "resetCancelButtonCell",
-       "resetCommunication",
        "resetCursorRect:inView:",
        "resetCursorRects",
        "resetDateFormats",
-       "resetDirectoryResultsSubrows",
        "resetDisplayDisableCount",
-       "resetDisplayedMemberSubrows",
-       "resetFirstLastName:",
        "resetFlushDisableCount",
-       "resetGroupAndPeopleFromDefaults",
-       "resetLDAPManager",
-       "resetProfiling",
+       "resetMeasurements:forInterpolatedResolutionData:",
+       "resetMeasurements:forResolutionData:withWidth:height:onlyIntegerSizes:",
+       "resetQueryForChangedAttributes:",
        "resetSearchButtonCell",
-       "resetStandardUserDefaults",
        "resetState",
-       "resetSubrows",
-       "resetSystemTimeZone",
        "resetToolbarToDefaultConfiguration:",
-       "resetTotalAutoreleasedObjects",
        "resetTrackingRect",
        "reshape",
        "resignFirstResponder",
        "resignKeyWindow",
        "resignMainWindow",
        "resize:",
-       "resizeColumnAtIndex:toWidth:",
-       "resizeColumnsToMinimun",
        "resizeDownCursor",
        "resizeEdgeForEvent:",
        "resizeFlags",
        "resizeIncrements",
+       "resizeIndicatorRect",
        "resizeLeftCursor",
        "resizeLeftRightCursor",
        "resizeRightCursor",
@@ -11979,79 +13172,75 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "resizeToScreenWithEvent:",
        "resizeUpCursor",
        "resizeUpDownCursor",
-       "resizeWindow:animate:fromLayout:toLayout:paneWidths:numberOfPanes:",
        "resizeWithDelta:fromFrame:beginOperation:endOperation:",
        "resizeWithEvent:",
-       "resizeWithMagnification:",
        "resizeWithOldSuperviewSize:",
-       "resizeableColumns",
        "resizedColumn",
+       "resizingMask",
        "resolve",
        "resolveMarkerToPlaceholder:binding:",
+       "resolveNamespaceForName:",
+       "resolvePrefixForNamespaceURI:",
        "resolvedKeyDictionary",
        "resolvesAliases",
        "resourceData",
        "resourceDataUsingCache:",
        "resourceLoadDelegate",
        "resourceLoaderRunLoop",
+       "resourceNamed:",
        "resourcePath",
        "resourceSpecifier",
+       "respectStandardStyleKeyEquivalents",
+       "respondToChangedContents",
+       "respondToChangedSelection",
        "respondsTo:",
-       "respondsToProperty:",
        "respondsToSelector:",
        "response",
-       "responseAsString",
-       "responseDate",
-       "responseList",
+       "restOfKeyPathIfContainedByValueForKeyPath:",
        "restartNullEvents",
        "restore",
+       "restoreAttributes:",
        "restoreAttributesOfTextStorage:",
-       "restoreCachedImage",
-       "restoreCardWindowStateWithModel:",
        "restoreDefaults",
        "restoreDocumentState",
        "restoreGraphicsState",
-       "restoreNameColumnWidth",
+       "restoreParameter:from:",
        "restorePortState:",
        "restoreSavedSettings",
        "restoreWindowOnDockDeath",
        "restoreWindowOnDockReincarnation",
-       "resultCode",
-       "resume",
+       "resultAtIndex:",
+       "resultCount",
        "resumeExecutionWithResult:",
+       "resumeInformation",
        "resumeWithScriptCommandResult:",
        "resumeWithSuspensionID:",
        "retain",
        "retainArguments",
+       "retainCaches",
        "retainCount",
        "retainIconForURL:",
+       "retainOrCopyIfNeeded",
        "retainWireCount",
+       "retainedXmlInfoForRelationship:",
        "retryAfterAuthenticationFailure:",
-       "retryAfterConnectingToInternet",
+       "retryAfterTLSFailure",
        "retryWithRedirectedURLAndResultCode:",
-       "returnCompletes",
-       "returnHeader",
-       "returnID",
+       "returnDisconnectedBindingsOfObject:",
        "returnResult:exception:sequence:imports:",
        "returnType",
-       "reusesColumns",
        "reverseObjectEnumerator",
        "reverseTransformedValue:",
        "reversedSortDescriptor",
        "revert:",
        "revertDocumentToSaved:",
-       "revertToBackupFromPath:",
-       "revertToInitialValues:",
+       "revertToContentsOfURL:ofType:error:",
        "revertToSavedFromFile:ofType:",
-       "revertToSavedFromURL:ofType:",
-       "reviewCards:",
-       "reviewUnsavedDocumentsWithAlertTitle:cancellable:",
        "reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:",
-       "richTextForView:",
-       "richTextSource",
+       "rightChild",
+       "rightExpression",
        "rightIndentMarkerWithRulerView:location:",
        "rightMargin",
-       "rightMarginMarkerWithRulerView:location:",
        "rightMouseDown:",
        "rightMouseDragged:",
        "rightMouseUp:",
@@ -12059,18 +13248,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "rightTabMarkerWithRulerView:location:",
        "rightTruncateString:toWidth:withFont:",
        "rightView",
-       "rolloverMenuForSelection:",
-       "rootContainer",
-       "rootName",
+       "role",
+       "roleDescription",
+       "rollback",
+       "rollbackChanges",
+       "rollbackTransaction",
+       "rolloverXLocation",
+       "root",
+       "rootDocument",
+       "rootElement",
+       "rootEntity",
        "rootNode",
        "rootObject",
        "rootObjectClasses",
+       "rootObjectStore",
        "rootProxy",
-       "rootProxyForConnectionWithRegisteredName:host:",
-       "rootProxyForConnectionWithRegisteredName:host:usingNameServer:",
        "rotateByAngle:",
        "rotateByDegrees:",
-       "rotateByRadians:",
        "rotated",
        "rotation",
        "roundingBehavior",
@@ -12078,16 +13272,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "row",
        "rowAtPoint:",
        "rowForItem:",
+       "rowForObjectID:",
+       "rowForObjectID:after:",
+       "rowForUpdate",
        "rowHeight",
-       "rowHeightForRow:",
-       "rows",
+       "rowSpan",
        "rowsInRect:",
-       "ruleThickness",
        "ruler",
        "rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:",
        "rulerAttributesInRange:",
        "rulerMarkersForTextView:paragraphStyle:ruler:",
-       "rulerStateDescription",
        "rulerView:didAddMarker:",
        "rulerView:didMoveMarker:",
        "rulerView:didRemoveMarker:",
@@ -12095,9 +13289,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "rulerView:shouldAddMarker:",
        "rulerView:shouldMoveMarker:",
        "rulerView:shouldRemoveMarker:",
-       "rulerView:userClickedOnMarker:",
        "rulerView:willAddMarker:atLocation:",
        "rulerView:willMoveMarker:toLocation:",
+       "rulerView:willRemoveMarker:",
        "rulerView:willSetClientView:",
        "rulerViewClass",
        "rulersVisible",
@@ -12105,20 +13299,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "run:",
        "runAsModalDialogWithChallenge:",
        "runAsSheetOnWindow:withChallenge:",
-       "runBeforeDate:",
-       "runConfigurationPalette:",
        "runCustomizationPalette:",
-       "runInNewThread",
        "runInitialization",
        "runJavaScriptAlertPanelWithMessage:",
        "runJavaScriptConfirmPanelWithMessage:",
        "runJavaScriptTextInputPanelWithPrompt:defaultText:returningText:",
        "runLoop",
-       "runLoopModes",
+       "runLoopModesForAnimating",
        "runModal",
        "runModalForCarbonWindow:",
        "runModalForDirectory:file:",
-       "runModalForDirectory:file:relativeToWindow:",
        "runModalForDirectory:file:types:",
        "runModalForDirectory:file:types:relativeToWindow:",
        "runModalForSavePanel:",
@@ -12127,7 +13317,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "runModalForWindow:",
        "runModalForWindow:relativeToWindow:",
        "runModalOpenPanel:forTypes:",
-       "runModalPageLayoutWithPrintInfo:",
        "runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:",
        "runModalPrintOperation:delegate:didRunSelector:contextInfo:",
        "runModalSavePanel:withAccessoryView:",
@@ -12135,19 +13324,19 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "runModalSession:",
        "runModalWithPrintInfo:",
        "runMode:beforeDate:",
-       "runMode:untilDate:",
        "runOpenPanelForFileButtonWithResultListener:",
        "runOperation",
        "runOperationModalForWindow:delegate:didRunSelector:contextInfo:",
        "runPageLayout:",
        "runPoof",
-       "runPoofAtPoint:",
        "runPoofAtPoint:withSize:callbackInfo:",
-       "runToolbarConfigurationPalette:",
        "runToolbarCustomizationPalette:",
        "runUntilDate:",
-       "safeForwarderWithTarget:defaultTarget:templateClass:",
-       "sampleTextForEncoding:language:font:",
+       "sampleTextForTriplet:",
+       "samplerOptionForKey:",
+       "samplerOptions",
+       "samplerWithImage:",
+       "samplerWithImage:keysAndValues:",
        "samplesPerPixel",
        "sansSerifFontFamily",
        "saturationComponent",
@@ -12156,37 +13345,45 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "saveAllDocuments:",
        "saveAndSetPortState",
        "saveAndSetPortStateForUpdate:",
-       "saveCardWindowState",
        "saveChanges",
-       "saveCofigurationUsingName:",
+       "saveChanges:",
+       "saveConfigurationUsingName:",
        "saveDefaults",
        "saveDocument:",
        "saveDocumentAs:",
        "saveDocumentState",
        "saveDocumentState:",
-       "saveDocumentTo:",
        "saveDocumentToPageCache",
        "saveDocumentToPageCache:",
+       "saveDocumentToPath:",
        "saveDocumentWithDelegate:didSaveSelector:contextInfo:",
        "saveFavoritesToDefaults",
-       "saveFontCollection:withName:",
+       "saveFontCollection:",
        "saveFrameUsingName:",
        "saveGraphicsState",
-       "saveImageInCache:forEmail:",
        "saveImageNamed:andShowWarnings:",
-       "saveLastImportContent",
        "saveList:",
-       "saveNameColumnWidth",
+       "saveMetadata:",
+       "saveMorphedGlyphs:",
        "saveNumVisibleRows",
        "saveOptions",
        "savePanel",
-       "savePanelDidEnd:returnCode:contextInfo:",
+       "saveParameter:to:",
+       "savePreviewHeightInDefaults:",
+       "saveRecipeChanges",
+       "saveResource",
+       "saveResourceWithCachedResponse:",
+       "saveRoot",
        "saveToDocument:removeBackup:errorHandler:",
        "saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:",
+       "saveToPath:",
        "saveToURL:error:",
-       "saveWeighting",
+       "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",
+       "saveToURL:ofType:forSaveOperation:error:",
+       "saveWithGlyphOrigin:",
        "scale",
        "scaleBy:",
+       "scaleRegionOf:destRect:userInfo:",
        "scaleTo::",
        "scaleUnitSquareToSize:",
        "scaleXBy:yBy:",
@@ -12204,16 +13401,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "scanUpToString:intoString:",
        "scannerWithString:",
        "schedule",
-       "scheduleFrame",
+       "scheduleDelayedUpdate",
        "scheduleInRunLoop:forMode:",
-       "scheduleSearch:",
+       "scheduleShowRolloverWindow",
        "scheduleUpdate",
        "scheduledTimerWithTimeInterval:invocation:repeats:",
        "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",
        "scheme",
-       "scope",
+       "scopeButtonAction:",
        "screen",
        "screenFont",
+       "screenFontWithRenderingMode:",
        "screens",
        "scriptCommand",
        "scriptErrorNumber",
@@ -12229,7 +13427,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "scriptingProperties",
        "scroll:",
        "scrollBarColor",
-       "scrollBarVisible",
        "scrollCellToVisibleAtRow:column:",
        "scrollClipView:toPoint:",
        "scrollColumnToVisible:",
@@ -12240,18 +13437,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "scrollItemAtIndexToVisible:",
        "scrollLineDown:",
        "scrollLineUp:",
+       "scrollOverflowInDirection:granularity:",
+       "scrollOverflowWithScrollWheelEvent:",
        "scrollPageDown:",
        "scrollPageUp:",
        "scrollPoint",
        "scrollPoint:",
-       "scrollPoint:fromView:",
        "scrollRangeToVisible:",
        "scrollRect:by:",
        "scrollRectToVisible:",
-       "scrollRectToVisible:fromView:",
        "scrollRectToVisible:inScrollView:animate:",
        "scrollRowToVisible:",
-       "scrollSelectionToView",
        "scrollToAnchor:",
        "scrollToAnchorWithURL:",
        "scrollToBeginningOfDocument:",
@@ -12261,125 +13457,86 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "scrollUp",
        "scrollViaScroller:",
        "scrollView",
+       "scrollViewDidTile",
        "scrollWheel:",
        "scrollerWidth",
        "scrollerWidthForControlSize:",
-       "scrollsDynamically",
-       "searchAttributes:",
-       "searchBase",
        "searchButtonCell",
        "searchButtonRectForBounds:",
-       "searchController",
-       "searchElementForConjunction:children:",
-       "searchElementForProperty:label:key:value:comparison:",
+       "searchFieldCellOrControlDidClearRecents:",
        "searchFor:direction:caseSensitive:wrap:",
-       "searchForAllDomains",
+       "searchForBrowsableDomains",
        "searchForLabels:beforeElement:",
-       "searchForRegistrationDomains",
-       "searchForServicesOfType:inDomain:",
-       "searchGroups",
-       "searchIndexForRecordsMatching:",
-       "searchLabel",
-       "searchList",
        "searchMenuTemplate",
-       "searchNode",
-       "searchPeople",
-       "searchResult",
-       "searchState",
-       "searchString",
+       "searchScopeDisplayName",
        "searchTextRectForBounds:",
        "searchableIndexIntroduction",
-       "secondLineParagraphStyle",
        "secondOfMinute",
        "secondaryInvocation",
        "secondarySelectedControlColor",
        "secondsFromGMT",
        "secondsFromGMTForDate:",
-       "secondsFromGMTForTimeInterval:",
-       "seekToEndOfFile",
+       "seedPrimaryKeyInt:",
+       "seedPrimaryKeys",
        "seekToFileOffset:",
        "segmentCount",
-       "segmentWidth",
+       "segmentWithIndex:parent:",
+       "segmentedCell",
        "selectAll",
        "selectAll:",
+       "selectAllInView:selectionOnly:",
+       "selectAllInView:selectionOnly:fontFamily:font:characterStyle:paragraphStyle:",
        "selectCell:",
        "selectCellAtRow:column:",
-       "selectCellWithTag:",
        "selectColumn:byExtendingSelection:",
-       "selectColumnIdentifier:",
        "selectColumnIndexes:byExtendingSelection:",
-       "selectColumnTitle:",
        "selectDefaultRange",
-       "selectDirectoryResultRow:subrow:byExtendingSelection:",
+       "selectDraggedFileNode:",
        "selectFarthestRangeForward:",
-       "selectFile:inFileViewerRootedAtPath:",
-       "selectFirstTabViewItem:",
-       "selectGroup:byExtendingSelection:",
-       "selectIdentifier:forPerson:byExtendingSelection:",
-       "selectInAddressBook:",
        "selectItem:",
        "selectItemAtIndex:",
-       "selectItemWithIdentifier:",
        "selectItemWithObjectValue:",
+       "selectItemWithTag:",
        "selectItemWithTitle:",
        "selectKeyViewFollowingView:",
        "selectKeyViewPrecedingView:",
-       "selectLastTabViewItem:",
-       "selectLine:",
-       "selectMemberRow:subrow:byExtendingSelection:",
        "selectNext:",
        "selectNextKeyView:",
        "selectNextRangeForward:",
        "selectNextTabViewItem:",
-       "selectParagraph:",
+       "selectNode:",
        "selectPrevious:",
        "selectPreviousKeyView:",
-       "selectPreviousTabViewItem:",
-       "selectRecord:byExtendingSelection:",
        "selectRow:byExtendingSelection:",
        "selectRow:inColumn:",
-       "selectRow:subrow:byExtendingSelection:",
        "selectRowIndexes:byExtendingSelection:",
+       "selectRowsWithFetchRequest:",
+       "selectSegmentWithTag:",
        "selectTabViewItem:",
        "selectTabViewItemAtIndex:",
-       "selectTabViewItemWithIdentifier:",
        "selectText:",
-       "selectTextAtIndex:",
        "selectTextAtRow:column:",
-       "selectToMark:",
        "selectWithFrame:inView:editor:delegate:start:length:",
        "selectWord:",
        "selectableItemIdentifiers",
+       "selectableScopeLocationNodes",
        "selectedAttributedString",
        "selectedAttributes",
        "selectedCell",
        "selectedCellInColumn:",
        "selectedCells",
+       "selectedColorSpace",
        "selectedColumn",
        "selectedColumnEnumerator",
-       "selectedColumnIndexes",
        "selectedControlColor",
        "selectedControlTextColor",
-       "selectedDirectories",
-       "selectedDirectoryResult",
-       "selectedDirectoryResults",
-       "selectedDirectoryResultsSubrows",
-       "selectedFont",
-       "selectedGroup",
-       "selectedGroups",
-       "selectedGroupsInMembersColumn",
-       "selectedIdentifiersForPerson:",
-       "selectedImageBackgroundPiece",
-       "selectedImageForControlTint:",
-       "selectedInactiveColor",
+       "selectedDOMRange",
+       "selectedFontChangedTo:",
        "selectedIndex",
        "selectedIndexAndQuality:",
        "selectedItem",
        "selectedItemIdentifier",
        "selectedKnobColor",
-       "selectedMember",
-       "selectedMembers",
-       "selectedMembersSubrows",
        "selectedMenuItemColor",
        "selectedMenuItemTextColor",
        "selectedName",
@@ -12387,36 +13544,31 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "selectedNodes",
        "selectedObjects",
        "selectedRange",
-       "selectedRecord",
-       "selectedRecords",
+       "selectedRanges",
+       "selectedResolvedNodes",
        "selectedRow",
        "selectedRowEnumerator",
        "selectedRowInColumn:",
        "selectedRowIndexes",
+       "selectedScopeLocationNodes",
        "selectedSegment",
        "selectedString",
-       "selectedSubrowObjectsAtIndex:",
-       "selectedSubrows",
        "selectedTabViewItem",
-       "selectedTag",
        "selectedTextAttributes",
        "selectedTextBackgroundColor",
        "selectedTextColor",
-       "selectedValues",
-       "selection",
        "selectionAffinity",
-       "selectionChanged",
-       "selectionEnd",
-       "selectionEndOffset",
+       "selectionColor",
        "selectionGranularity",
        "selectionImage",
-       "selectionIndex",
+       "selectionIndexPaths",
        "selectionIndexes",
        "selectionRangeForProposedRange:granularity:",
        "selectionRect",
+       "selectionShouldChangeInOutlineView:",
        "selectionShouldChangeInTableView:",
-       "selectionStart",
-       "selectionStartOffset",
+       "selectionStartHasStyle:",
+       "selectionState",
        "selector",
        "selectorForCommand:",
        "selectsAllWhenSettingContent",
@@ -12425,11 +13577,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "send",
        "sendAction",
        "sendAction:to:",
-       "sendAction:to:forAllCells:",
        "sendAction:to:from:",
        "sendActionOn:",
        "sendActivateEvent:",
-       "sendBeforeDate:",
        "sendBeforeDate:components:from:reserved:",
        "sendBeforeDate:msgid:components:from:reserved:",
        "sendBeforeTime:sendReplyPort:",
@@ -12438,38 +13588,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "sendCarbonProcessHICommandEvent:",
        "sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:",
        "sendConsumedMouseUpIfNeeded",
+       "sendContextMenuEvent:",
        "sendDoubleAction",
-       "sendEOF",
-       "sendEmailToGroup:",
        "sendEvent:",
-       "sendInv",
        "sendInvocation:",
+       "sendModifierEventWithKeyCode:character:",
        "sendMouseUpActionForDisabledCell:atRow:column:",
+       "sendNotification",
        "sendNullEvent",
        "sendOpenEventFor:",
        "sendPort",
-       "sendPort:withAllRights:",
        "sendReleasedProxies",
        "sendResizeEvent",
        "sendResponseAvailableCallback",
+       "sendScrollEvent",
        "sendSelectionChangedNotification",
        "sendSuperEvent:",
        "sendSynchronousRequest:returningResponse:error:",
-       "sendTaggedMsg:",
        "sendTimerEvent",
        "sendUpdateEvent",
        "sendWireCountForTarget:port:",
        "sender",
        "senderDidBecomeActive:",
        "senderDidResignActive:",
-       "sendsActionOnArrowKeys",
        "sendsActionOnEndEditing",
+       "sendsSearchStringImmediately",
        "sendsWholeSearchString",
-       "separateWindowForPerson:",
        "separatesColumns",
+       "separatorColor",
        "separatorItem",
-       "separatorItemIdentifier",
-       "serialize",
        "serialize:length:",
        "serializeAlignedBytes:length:",
        "serializeAlignedBytesLength:",
@@ -12477,110 +13624,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "serializeDataAt:ofObjCType:context:",
        "serializeInt:",
        "serializeInt:atIndex:",
-       "serializeInts:count:",
-       "serializeInts:count:atIndex:",
        "serializeList:",
        "serializeListItemIn:at:",
        "serializeObject:",
+       "serializeObjectAt:ofObjCType:intoData:",
        "serializePListKeyIn:key:value:",
        "serializePListValueIn:key:value:",
        "serializePropertyList:",
        "serializePropertyList:intoData:",
-       "serializeServers:",
        "serializeString:",
        "serializeToData",
        "serializedRepresentation",
-       "serializerStream",
        "serifFontFamily",
        "server",
-       "serverExists:inServerList:",
-       "serverName",
-       "serverType",
-       "service:buddy:shareDirectory:listing:",
-       "service:buddyGroupsChanged:",
-       "service:buddyPictureChanged:imageData:",
-       "service:buddyPropertiesChanged:",
-       "service:cancelVCInviteFrom:",
-       "service:chat:member:statusChanged:",
-       "service:chat:messageReceived:",
-       "service:chat:showError:",
-       "service:chat:statusChanged:",
-       "service:counterProposalFrom:connectData:",
-       "service:defaultsChanged:",
-       "service:directIMRequestFrom:invitation:",
-       "service:handleVCOOB:action:param:",
-       "service:invitedToChat:isChatRoom:invitation:",
-       "service:invitedToVC:audioOnly:callerExtIP:callerExtSIP:",
-       "service:loginStatusChanged:message:reason:",
-       "service:providePiggyback:",
-       "service:requestIncomingFileXfer:",
-       "service:requestOutgoingFileXfer:",
-       "service:responseToVCRequest:response:connectData:",
-       "service:shareUploadStarted:",
-       "service:youAreDesignatedNotifier:",
        "serviceError:error:",
        "serviceListener",
-       "serviceWithInternalName:",
+       "servicesInfoIdentifier:",
        "servicesMenu",
+       "servicesMenuData:forUser:",
        "servicesProvider",
-       "sessionUID",
        "set",
-       "setAcceptsArrowKeys:",
+       "setAbsorbedCount:forIndex:",
        "setAcceptsColorDrops:",
        "setAcceptsGlyphInfo:",
        "setAcceptsMouseMovedEvents:",
        "setAccessoryView:",
        "setAction:",
-       "setAction:atRow:column:",
        "setActionName:",
        "setActivated:sender:",
-       "setActiveDirectoryPassword:",
-       "setActiveDirectoryUser:",
+       "setActivationEventNumber:",
+       "setActiveColorSpace:",
        "setActsLikeButton:",
        "setAdditionalClip:",
+       "setAdditionalPatternPhase:",
+       "setAdvance:forIndex:",
+       "setAffectedStores:",
+       "setAfterEntityLookup:",
        "setAlertStyle:",
        "setAlignment:",
        "setAlignment:range:",
-       "setAllContextsOutputTraced:",
-       "setAllContextsSynchronized:",
+       "setAllDestinations:",
        "setAllHTTPHeaderFields:",
        "setAllHeaderFields:",
-       "setAllIndexesNeedRefresh",
-       "setAllProperties:",
-       "setAllowEditing:",
-       "setAllowGroupSelection:",
-       "setAllowMultipleSubrowSelection:",
-       "setAllowSubrowSelection:",
        "setAllowedFileTypes:",
        "setAllowsAnimatedImageLooping:",
        "setAllowsAnimatedImages:",
-       "setAllowsAnyHTTPSCertificate:forHost:",
        "setAllowsBranchSelection:",
        "setAllowsColumnReordering:",
        "setAllowsColumnResizing:",
        "setAllowsColumnSelection:",
-       "setAllowsDocumentBackgroundColorChange:",
        "setAllowsEditingMultipleValuesSelection:",
        "setAllowsEditingTextAttributes:",
        "setAllowsEmptySelection:",
        "setAllowsExpandingMultipleDirectories:",
        "setAllowsFloats:",
-       "setAllowsGroupEditing:",
-       "setAllowsGroupSelection:",
-       "setAllowsHorizontalScrolling:",
        "setAllowsIncrementalSearching:",
-       "setAllowsIndividualValueSelection:",
        "setAllowsMixedState:",
        "setAllowsMultipleSelection:",
-       "setAllowsNullArgument:withBinding:",
+       "setAllowsOtherFileTypes:",
        "setAllowsScrolling:",
        "setAllowsTickMarkValuesOnly:",
        "setAllowsToolTipsWhenApplicationIsInactive:",
-       "setAllowsTruncatedLabels:",
        "setAllowsUndo:",
-       "setAllowsUserConfiguration:",
        "setAllowsUserCustomization:",
-       "setAllowsVerticalScrolling:",
        "setAlpha:",
        "setAlphaValue:",
        "setAltIncrementValue:",
@@ -12588,15 +13694,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setAlternateImage:",
        "setAlternateMnemonicLocation:",
        "setAlternateTitle:",
-       "setAlternateTitleWithMnemonic:",
-       "setAltersStateOfSelectedItem:",
-       "setAlwaysAttemptToUsePageCache:",
+       "setAlwaysPresentsApplicationModalAlerts:",
+       "setAlwaysUsesMultipleValuesMarker:",
        "setAnimates:",
+       "setAnimationBlockingMode:",
        "setAnimationDelay:",
        "setAppleMenu:",
-       "setApplicationIconImage:",
-       "setApplicationNameForUserAgent:",
-       "setAppliesImmediately:",
        "setArgument:atIndex:",
        "setArgumentBinding:",
        "setArguments:",
@@ -12605,19 +13708,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setArrowsPosition:",
        "setAsMainCarbonMenuBar",
        "setAspectRatio:",
-       "setAssociatedPoints:atIndex:",
+       "setAssociatedInputManager:",
        "setAttachment:",
        "setAttachmentCell:",
        "setAttachmentSize:forGlyphRange:",
        "setAttribute::",
-       "setAttribute:value:",
-       "setAttribute:values:",
-       "setAttributeDescriptor:forKeyword:",
        "setAttributeKeys:andValues:",
-       "setAttributeNS:::",
-       "setAttributeNode:",
-       "setAttributeNodeNS:",
-       "setAttributeRuns:",
+       "setAttributeSlot:withObject:",
+       "setAttributeType:",
        "setAttributedAlternateTitle:",
        "setAttributedString:",
        "setAttributedStringForNil:",
@@ -12626,77 +13724,79 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setAttributedStringValue:",
        "setAttributedTitle:",
        "setAttributes:",
+       "setAttributes:Values:ValueSizes:Count:",
        "setAttributes:range:",
        "setAttributesInTextStorage:",
        "setAutoAddExtensionToNextInput:",
-       "setAutoPositionMask:",
-       "setAutoResizesOutlineColumn:",
        "setAutodisplay:",
        "setAutoenablesItems:",
-       "setAutofill:",
-       "setAutofillColor:",
        "setAutohidesScrollers:",
-       "setAutomaticallyPreparesContent:",
+       "setAutorecalculatesKeyViewLoop:",
        "setAutorepeat:",
        "setAutoresizesAllColumnsToFit:",
-       "setAutoresizesOutlineColumn:",
        "setAutoresizesSubviews:",
        "setAutoresizingMask:",
-       "setAutosaveExpandedItems:",
        "setAutosaveName:",
        "setAutosaveTableColumns:",
+       "setAutosavedContentsFileURL:",
        "setAutosaves:",
        "setAutosavesConfiguration:",
-       "setAutosavesConfigurationUsingIdentifier:",
        "setAutoscroll:",
-       "setAutosizesCells:",
-       "setAvailableCapacity:",
+       "setAutovalidates:",
+       "setAvoidableSpecifier:path:",
        "setAvoidsEmptySelection:",
        "setBackgroundColor:",
        "setBackgroundLayoutEnabled:",
-       "setBackingType:",
        "setBaseAffineTransform:",
        "setBaseSpecifier:",
        "setBaseURL:",
        "setBaseWritingDirection:",
+       "setBaseWritingDirection:range:",
        "setBecomesKeyOnlyIfNeeded:",
        "setBezelStyle:",
        "setBezeled:",
        "setBidiLevels:forGlyphRange:",
-       "setBidiProcessingEnabled:",
-       "setBinaryAttributes:",
        "setBinderSpecificFlag:atIndex:",
        "setBinding:",
-       "setBitmapImageRep:forItemIdentifiers:",
+       "setBitmap:rowBytes:bounds:format:",
        "setBitsPerSample:",
-       "setBlocksOtherRecognizers:",
-       "setBluetoothButton:",
-       "setBody:",
        "setBool:forKey:",
+       "setBoolParameterValue:to:",
+       "setBoolParameterValue:to:inResolutionData:",
+       "setBorderColor:",
+       "setBorderColor:forEdge:",
        "setBorderType:",
+       "setBorderWidth:",
        "setBordered:",
        "setBottomCornerRounded:",
        "setBottomMargin:",
        "setBounds:",
-       "setBoundsAsQDRect:",
        "setBoundsOrigin:",
-       "setBoundsRotation:",
+       "setBoundsRect:forTextBlock:glyphRange:",
        "setBoundsSize:",
        "setBoxType:",
        "setBrightness:",
        "setBrowser:",
        "setBulletCharacter:",
+       "setBundle:",
+       "setBundlePath:",
        "setButtonBordered:",
        "setButtonID:",
        "setButtonType:",
+       "setCGCompositeOperation:inContext:",
+       "setCGCompositeOperationFromString:inContext:",
        "setCGContext:",
+       "setCTM:",
        "setCacheDepthMatchesImageDepth:",
-       "setCacheDisabled:",
+       "setCacheHint:",
        "setCacheMode:",
        "setCachePolicy:",
+       "setCachedChildren:",
+       "setCachedChildren:forObservedNode:",
+       "setCachedSQLiteStatement:",
        "setCachedSeparately:",
-       "setCachesBezierPath:",
        "setCalculatesAllSizes:",
+       "setCalendar:",
        "setCalendarFormat:",
        "setCanChooseDirectories:",
        "setCanChooseFiles:",
@@ -12705,63 +13805,50 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setCanCycle:",
        "setCanHide:",
        "setCanSelectHiddenExtension:",
-       "setCanSpawnSeparateThread:",
        "setCancelButtonCell:",
        "setCancellationDelegate:wasCancelledSelector:contextInfo:",
-       "setCapacity:",
-       "setCapitalizedAttributes:",
-       "setCarbonDelegate:",
-       "setCarbonNotification:",
        "setCaseSensitive:",
-       "setCategories:",
        "setCell:",
-       "setCell:enabled:",
-       "setCell:selected:",
        "setCellAttribute:to:",
        "setCellBackgroundColor:",
        "setCellClass:",
        "setCellPrototype:",
        "setCellSize:",
        "setCertificatePolicyOnStream",
-       "setChanged:",
-       "setChangedValues:",
+       "setCharacterEncoding:",
        "setCharacterIndex:forGlyphAtIndex:",
        "setCharacterIndex:layoutManager:",
-       "setCharacters:",
        "setCharactersToBeSkipped:",
        "setChildSpecifier:",
        "setChildren:",
-       "setChooser:",
-       "setClass:forClassName:",
-       "setClassDelegate:",
-       "setClassName:",
-       "setClassName:forClass:",
+       "setChildrenKeyPath:",
+       "setClassDescription:",
+       "setClearsFilterPredicateOnInsertion:",
+       "setClient:",
        "setClientView:",
        "setClip",
-       "setClipRgn",
        "setClippedItems:",
-       "setCloseAction:",
-       "setCloseTarget:",
+       "setCocoaSubVersion:",
        "setCocoaVersion:",
+       "setCollapsesBorders:",
        "setColor:",
+       "setColor:forAttribute:",
        "setColor:forKey:",
        "setColorList:",
-       "setColorMask:",
        "setColorSpaceName:",
+       "setColumnAutoresizingStyle:",
        "setColumnResizingType:",
-       "setColumnTitle:forIdentifier:",
-       "setColumnTitle:forProperty:",
        "setColumnsAutosaveName:",
-       "setCommands:",
-       "setComment:",
+       "setColumnsToFetch:",
+       "setCommandDescription:",
        "setCompareSelector:",
        "setCompletes:",
-       "setCompletionEnabled:",
+       "setCompletionDelay:",
        "setCompression:factor:",
        "setConditionallySetsEditable:",
        "setConditionallySetsEnabled:",
        "setConditionallySetsHidden:",
-       "setConfigurationFromDictionary:",
+       "setConfiguratioName:",
        "setConfigurationUsingName:",
        "setConstrainedFrameSize:",
        "setContainerClassDescription:",
@@ -12769,11 +13856,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setContainerIsRangeContainerObject:",
        "setContainerSize:",
        "setContainerSpecifier:",
+       "setContainingWindow:",
        "setContent:",
-       "setContentAspectRatio:",
        "setContentMaxSize:",
        "setContentMinSize:",
-       "setContentResizeIncrements:",
        "setContentSize:",
        "setContentView:",
        "setContentViewMargins:",
@@ -12782,30 +13868,34 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setContextHelpModeActive:",
        "setContextMenuRepresentation:",
        "setContinuous:",
+       "setContinuousGrammarCheckingEnabled:",
        "setContinuousSpellCheckingEnabled:",
+       "setContinuouslyUpdatesValue:",
+       "setControl:",
        "setControlSize:",
        "setControlTint:",
        "setControlView:",
        "setController:",
+       "setController:retainController:",
        "setConversationRequest:",
-       "setCookie:",
-       "setCookieAcceptPolicy:",
-       "setCookies:",
        "setCookies:forURL:mainDocumentURL:",
        "setCookies:forURL:policyBaseURL:",
-       "setCookiesFromResponseHeader:forURL:policyBaseURL:",
+       "setCookies:whilePrivateBrowsing:",
        "setCopiesOnScroll:",
        "setCornerView:",
-       "setCountLabel:",
-       "setCreationDate:",
+       "setCountKeyPath:",
+       "setCreatesSortDescriptor:",
        "setCredential:forProtectionSpace:",
-       "setCrop:smallIcon:",
+       "setCriticalValue:",
+       "setCssText:",
        "setCurrListName:",
-       "setCurrent",
+       "setCurrent:",
        "setCurrentAppleEventAndReplyEventWithSuspensionID:",
+       "setCurrentBrowsingNodePath:",
+       "setCurrentConstructionContext:",
        "setCurrentContext:",
        "setCurrentDirectoryNode:",
-       "setCurrentDirectoryPath:",
+       "setCurrentEntity:",
        "setCurrentFrame:",
        "setCurrentImageNumber:",
        "setCurrentInputManager:",
@@ -12813,165 +13903,158 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setCurrentOperation:",
        "setCurrentPage:",
        "setCurrentPluginView:",
-       "setCurrentVirtualScreen:",
+       "setCurrentProgress:",
        "setCurrentVoiceIdentifier:",
        "setCursiveFontFamily:",
        "setCursorPositionToIndex:inParagraph:",
-       "setCustomTextEncodingName:",
-       "setCustomUserAgent:",
        "setCustomizationSheetWidth:",
+       "setDBSnapshot:",
+       "setDTD:",
+       "setDTDKind:",
        "setData:",
        "setData:forType:",
-       "setData:length:",
        "setDataCell:",
-       "setDataLength:",
        "setDataRetained:",
        "setDataSource:",
-       "setDeadKeyProcessingEnabled:",
+       "setDatabaseOperator:",
+       "setDatabaseUUID:",
+       "setDatabaseVersion:",
+       "setDateFormat:",
+       "setDatePickerElements:",
+       "setDatePickerMode:",
+       "setDatePickerStyle:",
+       "setDateStyle:",
+       "setDateValue:",
+       "setDebugDefault:",
        "setDecimalSeparator:",
        "setDefaultAttachmentScaling:",
-       "setDefaultBehavior:",
+       "setDefaultBorderColor:",
        "setDefaultButtonCell:",
-       "setDefaultCollator:",
-       "setDefaultCountryCode:",
        "setDefaultCredential:forProtectionSpace:",
        "setDefaultFixedFontSize:",
        "setDefaultFlatness:",
        "setDefaultFontSize:",
-       "setDefaultLanguage:",
+       "setDefaultFormatterBehavior:",
        "setDefaultLineCapStyle:",
        "setDefaultLineJoinStyle:",
        "setDefaultLineWidth:",
        "setDefaultMenu:",
        "setDefaultMiterLimit:",
-       "setDefaultNameServerPortNumber:",
        "setDefaultParagraphStyle:",
        "setDefaultPlaceholder:forBinding:onObjectClass:",
        "setDefaultPlaceholder:forMarker:withBinding:",
-       "setDefaultPreferencesClass:",
-       "setDefaultPrinter:",
-       "setDefaultPriority:",
-       "setDefaultRowHeight:",
        "setDefaultTabInterval:",
        "setDefaultTextColor:",
-       "setDefaultTextColor:whenObjectValueIsUsed:",
        "setDefaultTextEncoding:",
-       "setDefaultTextEncodingName:",
-       "setDefaultTimeZone:",
-       "setDefaultTimeoutInterval:",
+       "setDefaultType:",
        "setDefaultWindingRule:",
        "setDeferSync:",
-       "setDeferred:",
        "setDefersCallbacks:",
        "setDefersLoading:",
        "setDelegate:",
        "setDelegate:withNotifyingTextView:",
-       "setDepth:",
+       "setDeletedObjects:",
+       "setDeletesObjectsOnRemove:",
        "setDepthLimit:",
        "setDescriptor:forKeyword:",
        "setDestination:",
        "setDestination:allowOverwrite:",
+       "setDestinationEntityExternalName:",
        "setDestinationOrigin:travelTimeInSeconds:",
+       "setDestinations:forRelationship:",
        "setDictionary:",
        "setDirectParameter:",
-       "setDirectoriesSubrowDelegate:",
        "setDirectory:",
-       "setDirectory:file:",
        "setDisabled:",
-       "setDisabledImage:forControlTint:",
-       "setDisabledSelectedImage:forControlTint:",
-       "setDisabledUnselectedImage:",
+       "setDisabledWhenInactive:",
        "setDiskCapacity:",
        "setDisplayMode:",
-       "setDisplayName:",
        "setDisplayPattern:",
-       "setDisplayedCard:",
-       "setDisplayedCard:withHistory:",
-       "setDisplayedCommandsTitle:",
        "setDisplayedContainerNodes:",
-       "setDisplayedProperty:",
        "setDisplayedStringsArray:",
        "setDisplayedTitle:",
-       "setDisplayedWhenStopped:",
-       "setDisplaysTooltips:",
-       "setDistributionIdentifier:forProperty:person:",
-       "setDoSelectGroup:",
-       "setDockMenu:",
+       "setDisplaysTokenWhileEditing:",
+       "setDisplaysWithFocusAttributes:",
        "setDocument:",
        "setDocumentAttributes:",
        "setDocumentCursor:",
        "setDocumentEdited:",
        "setDocumentState:",
        "setDocumentView:",
-       "setDouble:forKey:",
        "setDoubleAction:",
-       "setDoubleClickTarget:andAction:",
        "setDoubleValue:",
-       "setDownloadDelegate:",
+       "setDragAndDropCharRanges:",
        "setDragWindowImage:",
+       "setDraggingImage:at:",
+       "setDrawingAttributes:",
+       "setDrawingStyle:",
+       "setDrawnInSelectedRow:",
        "setDrawsBackground:",
-       "setDrawsCellBackground:",
-       "setDrawsContainmentIndicator:",
        "setDrawsGrid:",
        "setDrawsOutsideLineFragment:forGlyphAtIndex:",
        "setDrawsOutsideLineFragment:forGlyphRange:",
-       "setDrawsSpecialSelection:",
        "setDrawsTrackAsColorScaleType:",
        "setDropItem:dropChildIndex:",
        "setDropRow:dropOperation:",
        "setDynamicDepthLimit:",
-       "setDynamicVerticalScroller:",
        "setEchosBullets:",
-       "setEditButton:",
-       "setEditMode:",
        "setEditable:",
+       "setEditableIfEnabled:",
        "setEdited:",
        "setEditedFlag:",
+       "setElementName:",
        "setEmpty",
-       "setEmpty:",
-       "setEnableCustomAttributeFixing:",
-       "setEnableFloatParsing:",
-       "setEnableIntegerParsing:",
+       "setEnableSelectionHighlightDrawing:",
+       "setEnableTextHighlightDrawing:",
+       "setEnabled",
        "setEnabled:",
        "setEnabled:forSegment:",
        "setEnabledFileTypes:",
        "setEncoding:userChosen:",
+       "setEnd::",
        "setEndSpecifier:",
        "setEndSubelementIdentifier:",
        "setEndSubelementIndex:",
+       "setEndWhitespace:",
+       "setEntities:",
+       "setEntities:forConfiguration:",
+       "setEntity:",
+       "setEntityName:",
        "setEntryType:",
-       "setEntryWidth:",
-       "setEnvironment:",
-       "setErrorAction:",
-       "setErrorProc:",
+       "setError:info:fatal:",
+       "setErrorExpectedType:",
+       "setErrorNumber:",
+       "setErrorOffendingObjectDescriptor:",
        "setEvaluationErrorNumber:",
-       "setEventCoalescingEnabled:",
        "setEventHandler:andSelector:forEventClass:andEventID:",
-       "setEventMask:",
-       "setEventsTraced:",
-       "setExchangeServer:",
-       "setExcludedFromWindowsMenu:",
        "setExpanded:",
        "setExpandedView:",
        "setExtensionHidden:",
+       "setExternalName:",
+       "setExternalPrecision:",
+       "setExternalScale:",
+       "setExternalType:",
        "setExtraLineFragmentRect:usedRect:textContainer:",
+       "setFBENode:",
        "setFantasyFontFamily:",
        "setFauxFilePackageTypes:",
+       "setFetchPredicate:",
+       "setFetchRequestTemplate:forName:",
+       "setFidelity:",
        "setFieldEditor:",
-       "setFieldVisible:withBool:",
-       "setFile:",
        "setFileAttributes:",
        "setFileListMode:",
        "setFileListOrderedByFileProperty:",
        "setFileListOrderedByFileProperty:ascending:",
        "setFileListOrderedByFileProperty:ascending:caseSensitive:",
+       "setFileModificationDate:",
        "setFileName:",
        "setFileType:",
-       "setFileWrapper:",
+       "setFileURL:",
        "setFilename:",
-       "setFilepathLabel:",
        "setFill",
        "setFilter:",
+       "setFilterPredicate:",
        "setFindString:writeToPasteboard:updateUI:",
        "setFireDate:",
        "setFirstLineHeadIndent:",
@@ -12980,32 +14063,32 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setFlatness:",
        "setFlipped:",
        "setFloat:forKey:",
+       "setFloatParameterValue:forResolution:to:",
+       "setFloatParameterValue:to:inResolutionData:",
        "setFloatValue:",
        "setFloatValue:knobProportion:",
        "setFloatingPanel:",
        "setFloatingPointFormat:left:right:",
+       "setFocusRingStyle:radius:color:",
        "setFocusRingType:",
        "setFocusStack:",
        "setFocusedColorChipIndex:",
-       "setFollowsItalicAngle:",
        "setFont:",
-       "setFont:range:",
        "setFontDescriptorKey:",
-       "setFontManagerFactory:",
+       "setFontFamily:",
        "setFontMenu:",
-       "setFontName:",
        "setFontPanel:",
-       "setFontPanelFactory:",
        "setFontSize:",
+       "setFontStyle:",
+       "setFontWeight:",
        "setForegroundColor:",
-       "setFormContentType:",
-       "setFormData:",
-       "setFormReferrer:",
+       "setForeignEntityKeySlot:unsigned:",
+       "setForeignKeySlot:int64:",
+       "setForeignKeys:",
        "setFormat:",
-       "setFormatAutosaveName:",
        "setFormatter:",
+       "setFormatterBehavior:",
        "setFrame:",
-       "setFrame:animate:fromLayout:toLayout:paneWidths:numberOfPanes:",
        "setFrame:display:",
        "setFrame:display:animate:",
        "setFrameAutosaveName:",
@@ -13017,37 +14100,24 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setFrameSize:",
        "setFrameTopLeftPoint:",
        "setFrameUsingName:",
-       "setFrameUsingName:force:",
-       "setFullScreen",
-       "setGradientType:",
-       "setGraphicAttributeWithCode:",
-       "setGraphicsState:",
-       "setGreyButton0:",
-       "setGreyButton1:",
-       "setGreyButton2:",
-       "setGreyButton3:",
-       "setGreyButton4:",
-       "setGreyButton5:",
+       "setFullMetadata:",
+       "setGlyphGenerator:",
+       "setGlyphID:forIndex:",
+       "setGlyphRange:characterRange:",
        "setGridColor:",
        "setGridStyleMask:",
-       "setGroup:",
-       "setGroupDoubleAction:",
-       "setGroupDoubleClickTarget:andAction:",
        "setGroupIdentifier:",
        "setGroupName:",
-       "setGrouping:",
-       "setGroupsByEvent:",
+       "setGroupingSeparator:",
        "setHTTPBody:",
        "setHTTPContentType:",
-       "setHTTPCookiePolicyBaseURL:",
-       "setHTTPExtraCookies:",
        "setHTTPMethod:",
-       "setHTTPPageNotFoundCacheLifetime:",
        "setHTTPReferrer:",
-       "setHTTPShouldHandleCookies:",
        "setHTTPUserAgent:",
        "setHandle:",
+       "setHandlesContentAsCompoundValue:",
        "setHardInvalidation:forGlyphRange:",
+       "setHasBorder:",
        "setHasFocus:",
        "setHasHorizontalRuler:",
        "setHasHorizontalScroller:",
@@ -13055,17 +14125,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setHasShadow:",
        "setHasThousandSeparators:",
        "setHasUndoManager:",
-       "setHasVerticalRuler:",
        "setHasVerticalScroller:",
        "setHeadIndent:",
        "setHeader",
        "setHeaderCell:",
+       "setHeaderLevel:",
        "setHeaderView:",
-       "setHeartBeatCycle:",
        "setHeightTracksTextView:",
        "setHelpAnchor:",
        "setHidden:",
        "setHiddenUntilMouseMoves:",
+       "setHidesEmptyCells:",
        "setHidesOnDeactivate:",
        "setHighlightMode:",
        "setHighlighted:",
@@ -13073,259 +14143,215 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setHighlightedTableColumn:",
        "setHighlightsBy:",
        "setHintCapacity:",
+       "setHistoryAgeInDaysLimit:",
+       "setHistoryItemLimit:",
        "setHistoryProvider:",
        "setHorizontal:",
+       "setHorizontalAlignment:",
        "setHorizontalEdgePadding:",
        "setHorizontalLineScroll:",
        "setHorizontalPageScroll:",
        "setHorizontalPagination:",
-       "setHorizontalRulerView:",
-       "setHorizontalScroller:",
+       "setHorizontalScrollingMode:",
        "setHorizontallyCentered:",
        "setHorizontallyResizable:",
-       "setHostCacheEnabled:",
-       "setHostName:",
-       "setHostWindow:",
        "setHyphenationFactor:",
        "setIcon:",
-       "setIconForFileName:",
-       "setIconRef:",
        "setIconURL:",
        "setIconURL:withType:",
        "setIdentifier:",
        "setIgnoredWords:inSpellDocumentWithTag:",
        "setIgnoresAlpha:",
-       "setIgnoresAntialiasThreshold:",
        "setIgnoresMouseEvents:",
-       "setIgnoresMultiClick:",
+       "setIgnoresViewTransformations:",
        "setImage:",
-       "setImage:forControlTint:",
+       "setImage:dirtyRect:",
        "setImage:forSegment:",
-       "setImage:startRect:andEndRect:",
        "setImageAlignment:",
-       "setImageData:",
-       "setImageDimsWhenDisabled:",
        "setImageFrameStyle:",
-       "setImageFromPath:",
        "setImageInterpolation:",
        "setImageNamed:forView:",
-       "setImageOrigin:",
        "setImagePosition:",
        "setImageRep:",
        "setImageRep:forImage:",
+       "setImageRep:forItemIdentifiers:",
        "setImageScaling:",
-       "setImageSize:",
        "setImplementor:atIndex:",
        "setImportsGraphics:",
+       "setInContext:",
+       "setInDrawingMachinery:",
        "setInPalette:",
-       "setIncludeNotesInVCards:",
        "setIncrement:",
        "setIndentationLevel:",
-       "setIndentationMarkerFollowsCell:",
        "setIndentationPerLevel:",
-       "setIndependentConversationQueueing:",
        "setIndeterminate:",
        "setIndex:",
-       "setIndexNeedsRefresh:",
-       "setIndicatorImage:inTableColumn:",
-       "setInfo:",
+       "setIndexReferenceModelObjectArray:clearAllModelObjectObserving:",
        "setInformativeText:",
        "setInitialFirstResponder:",
        "setInitialGState:",
-       "setInitialToolTipDelay:",
        "setInitialValues:",
-       "setInsertedNullPlaceholder:",
+       "setInnerHTML:",
+       "setInsertedObjects:",
        "setInsertionClassDescription:",
+       "setInsertionGlyphIndex:",
        "setInsertionPointColor:",
        "setInsertsNullPlaceholder:",
        "setIntAttribute:value:forGlyphAtIndex:",
+       "setIntParameterValue:to:",
+       "setIntParameterValue:to:inResolutionData:",
        "setIntValue:",
        "setInteger:forKey:",
        "setIntercellSpacing:",
        "setInterfaceStyle:",
-       "setInterlineSpacing:",
-       "setInvokesSeparatelyWithArrayObjects:withBinding:",
        "setIsActive:",
-       "setIsAlias:",
        "setIsClosable:",
        "setIsContainer:",
        "setIsEmptyColumn:",
-       "setIsEnabled:",
-       "setIsExpanded:",
-       "setIsExtensionHidden:",
        "setIsFileListOrderedAscending:",
        "setIsFileListOrderedCaseSensitive:",
        "setIsFileProperty:displayed:",
-       "setIsFlipped:",
-       "setIsMe:",
-       "setIsMiniaturized:",
-       "setIsPackage:",
-       "setIsPaneSplitter:",
-       "setIsPrimary:",
        "setIsResizable:",
+       "setIsSelected:",
+       "setIsSelected:forView:",
        "setIsTargetItem:",
        "setIsUp:",
-       "setIsVisible:",
-       "setIsVolume:",
-       "setIsZoomed:",
        "setItemHeight:",
-       "setItemSize:",
-       "setItemSpacing:",
        "setJavaEnabled:",
        "setJavaScriptCanOpenWindowsAutomatically:",
        "setJavaScriptEnabled:",
        "setJobDisposition:",
        "setJobStyleHint:",
+       "setJoinSemantic:",
+       "setJoins:",
        "setKey:",
        "setKeyBindingManager:",
        "setKeyCell:",
        "setKeyEquivalent:",
        "setKeyEquivalentFont:",
-       "setKeyEquivalentFont:size:",
        "setKeyEquivalentModifierMask:",
-       "setKeyNeedsRefresh:",
-       "setKeyNeedsRefresh:atIndex:",
-       "setKeyNeedsRefresh:forObject:",
        "setKeyPath:",
-       "setKeyView:",
        "setKeyboardFocusRingNeedsDisplayIfNeededInRect:",
        "setKeyboardFocusRingNeedsDisplayInRect:",
        "setKeys:triggerChangeNotificationsForDependentKey:",
-       "setKind:",
        "setKnobThickness:",
        "setLabel:",
        "setLabel:forSegment:",
        "setLanguage:",
        "setLanguageModel:",
        "setLastColumn:",
-       "setLastComponentOfFileName:",
        "setLastEditedStringValue:",
        "setLaunchPath:",
+       "setLayoutAlgorithm:",
        "setLayoutManager:",
-       "setLayoutType:animate:",
+       "setLayoutRect:forTextBlock:glyphRange:",
        "setLeadingOffset:",
        "setLeaf:",
+       "setLeafKeyPath:",
+       "setLeftChild:",
        "setLeftMargin:",
        "setLength:",
        "setLevel:",
-       "setLevelsOfUndo:",
        "setLineBreakMode:",
        "setLineCapStyle:",
        "setLineDash:count:phase:",
        "setLineFragmentPadding:",
        "setLineFragmentRect:forGlyphRange:usedRect:",
        "setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:",
-       "setLineFragmentUsedRect:forGlyphRange:",
        "setLineHeightMultiple:",
        "setLineJoinStyle:",
        "setLineScroll:",
        "setLineSpacing:",
        "setLineWidth:",
+       "setLinkInWindow:string:delegate:",
        "setLinkTextAttributes:",
-       "setListensInForegroundOnly:",
        "setLoadType:",
        "setLoaded:",
        "setLoadsImagesAutomatically:",
-       "setLocalDrag:",
        "setLocale:",
        "setLocaleListForDefaultFontFallback:",
-       "setLocalizationFromDefaults",
+       "setLocalizationDictionary:",
        "setLocalizesFormat:",
        "setLocation:forStartOfGlyphRange:",
        "setLocation:forStartOfGlyphRange:coalesceRuns:",
        "setLocation:withAdvancements:forStartOfGlyphRange:",
-       "setLogicalSize:",
-       "setLong:forKey:",
        "setLoopMode:",
-       "setLowercasedAttributes:",
        "setMIMEToDescriptionDictionary:",
        "setMIMEToExtensionsDictionary:",
        "setMIMEType:",
        "setMainDocumentURL:",
        "setMainMenu:",
        "setMaintainsBackForwardList:",
+       "setManagedObjectContext:",
+       "setMapData:",
        "setMark:",
+       "setMarkDOMRange:",
        "setMarkedText:selectedRange:",
        "setMarkedTextAttributes:",
-       "setMarker:",
+       "setMarkedTextDOMRange:",
+       "setMarkerFormatInWindow:delegate:",
        "setMarkerLocation:",
        "setMarkers:",
        "setMasterObjectRelationship:",
-       "setMatchesOnMultipleResolution:",
+       "setMasterObjectRelationship:refreshDetailContent:",
+       "setMatchedColor:",
        "setMatrixClass:",
        "setMax:",
        "setMaxContentSize:",
-       "setMaxResults:",
+       "setMaxCount:",
+       "setMaxDate:",
        "setMaxSize:",
        "setMaxValue:",
        "setMaxVisibleColumns:",
        "setMaxWidth:",
        "setMaximum:",
-       "setMaximumAttributeCacheSize:",
        "setMaximumLength:",
        "setMaximumLineHeight:",
        "setMaximumRecents:",
-       "setMe:",
-       "setMeasurementUnits:",
-       "setMembersSubrowDelegate:",
        "setMemoryCapacity:",
        "setMenu:",
-       "setMenuBarVisible:",
+       "setMenu:forSegment:",
        "setMenuChangedMessagesEnabled:",
        "setMenuFormRepresentation:",
        "setMenuItem:",
-       "setMenuItemCell:forItemAtIndex:",
        "setMenuRepresentation:",
        "setMenuView:",
-       "setMenuZone:",
        "setMessage:",
        "setMessageText:",
-       "setMessageType:",
        "setMinColumnWidth:",
        "setMinContentSize:",
-       "setMinNumberOfRows:",
+       "setMinCount:",
+       "setMinDate:",
        "setMinSize:",
        "setMinValue:",
        "setMinWidth:",
        "setMinimum:",
        "setMinimumFontSize:",
        "setMinimumLineHeight:",
-       "setMiniwindowImage:",
-       "setMiniwindowTitle:",
+       "setMinimumLogicalFontSize:",
        "setMiterLimit:",
        "setMixedStateImage:",
        "setMnemonicLocation:",
-       "setModDate:",
-       "setModalMode:",
        "setMode:",
-       "setModel:",
        "setMonoCharacterSeparatorCharacters:usualPunctuation:",
-       "setMovable:",
        "setMovableByWindowBackground:",
        "setMovie:",
        "setMsgid:",
-       "setMultiValue:forProperty:",
        "setMultipleCharacterSeparators:",
        "setMutableAttributedString:",
-       "setMutableDictionary:",
-       "setMuted:",
        "setName:",
-       "setNameDoubleAction:",
        "setNameFieldLabel:",
-       "setNamedItem:",
-       "setNamedItemNS:",
+       "setNames:",
+       "setNamespaces:",
        "setNavNodeClass:",
-       "setNeedsDisplay",
        "setNeedsDisplay:",
        "setNeedsDisplayForItemAtIndex:",
        "setNeedsDisplayForResponderChange",
+       "setNeedsDisplayIfSelectionNeedsToRedraw",
        "setNeedsDisplayInRect:",
        "setNeedsDisplayInRect:avoidAdditionalLayout:",
-       "setNeedsDisplayLater",
-       "setNeedsLayout",
        "setNeedsLayout:",
        "setNeedsReapplyStyles",
-       "setNeedsRefresh",
        "setNeedsResyncWithDefaultVoice:",
        "setNeedsSizing:",
        "setNeedsToApplyStyles:",
@@ -13334,69 +14360,58 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setNextKeyView:",
        "setNextResponder:",
        "setNextState",
-       "setNextText:",
+       "setNextUndoManager:",
+       "setNilSymbol:",
        "setNilValueForKey:",
-       "setNoImage:",
+       "setNode:",
        "setNode:displayState:",
        "setNode:isDirectory:displayState:",
-       "setNodeValue:",
+       "setNotANumberSymbol:",
        "setNotShownAttribute:forGlyphAtIndex:",
        "setNotShownAttribute:forGlyphRange:",
+       "setNotationName:",
        "setNotificationCenterSerializeRemoves:",
-       "setNotifyOnSelectionChanged:",
        "setNumRowsToToggleVisible:",
-       "setNumberOfItemsPerRow:",
+       "setNumberOfColumns:",
+       "setNumberOfMajorTickMarks:",
        "setNumberOfTickMarks:",
        "setNumberOfVisibleItems:",
-       "setObject:atIndex:",
-       "setObject:forIndex:dictionary:",
        "setObject:forKey:",
        "setObject:forKey:inDomain:",
        "setObjectBeingTested:",
        "setObjectClass:",
        "setObjectForCurrentRecognition:",
-       "setObjectNeedsRefresh:",
+       "setObjectID:",
        "setObjectValue:",
+       "setObjectValuePreservingEntitiesForNode:string:",
        "setObjectZone:",
        "setObscured:",
        "setObservationInfo:",
-       "setOffScreen:width:height:rowbytes:",
+       "setObservedObject:",
+       "setObservingBinder:",
+       "setObservingToModelObjectsRange:",
        "setOffStateImage:",
-       "setOnMouseEntered:",
-       "setOnMouseExited:",
+       "setOffset:",
        "setOnStateImage:",
        "setOneShot:",
        "setOpaque:",
-       "setOpenGLContext:",
        "setOptimizableColumn:",
-       "setOption:value:",
-       "setOptionalSharedHistory:",
+       "setOption:forKey:",
+       "setOptional:",
        "setOptions:",
        "setOptionsAttributes:string:",
        "setOptionsDictionary:",
-       "setOptionsPopUp:",
-       "setOrderedIndex:",
        "setOrientation:",
        "setOrigin:",
-       "setOriginLoadLimit:",
-       "setOriginLoadTimeout:",
        "setOriginOffset:",
-       "setOriginalNode:",
        "setOriginalURLString:",
        "setOutline:",
        "setOutlineTableColumn:",
-       "setOutlookWebAccessServer:",
        "setOutputFormat:",
-       "setOutputTraced:",
-       "setPMPageFormat:",
-       "setPMPrintSettings:",
        "setPackage:",
        "setPage:",
-       "setPageCacheSize:",
        "setPageOrder:",
-       "setPageScroll:",
        "setPaletteLabel:",
-       "setPalettePopUp:",
        "setPanel:",
        "setPanelFont:isMultiple:",
        "setPaperName:",
@@ -13405,32 +14420,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setParagraphSpacing:",
        "setParagraphSpacingBefore:",
        "setParagraphStyle:",
-       "setParagraphs:",
        "setParamDescriptor:forKeyword:",
        "setParameter:forOption:",
        "setParent:",
        "setParentCrayonRow:",
        "setParentCrayonView:",
+       "setParentNode:",
+       "setParentStore:",
        "setParentWindow:",
-       "setPassword:",
-       "setPasswordMode:",
+       "setParsesCocoaElements:",
        "setPath:",
        "setPathSeparator:",
-       "setPatternPhase:",
        "setPausedActions:",
-       "setPenAttributeWithCode:",
-       "setPeopleDoubleClickTarget:andAction:",
-       "setPeoplePickerView:",
+       "setPerformsContentDecoding:",
        "setPeriodicDelay:interval:",
        "setPersistentDomain:forName:",
-       "setPhysicalSize:",
-       "setPickerMask:",
-       "setPickerMode:",
-       "setPixelFormat:",
+       "setPersistentStoreCoordinator:",
+       "setPhase:",
        "setPixelsHigh:",
        "setPixelsWide:",
        "setPlaceholder:forMarker:isDefault:",
-       "setPlaceholder:forMarker:withBinding:",
        "setPlaceholderAttributedString:",
        "setPlaceholderString:",
        "setPlaysEveryFrame:",
@@ -13443,215 +14452,196 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setPolicyDelegate:",
        "setPoolCountHighWaterMark:",
        "setPoolCountHighWaterResolution:",
-       "setPort:",
+       "setPopulatingMenu:",
        "setPositiveFormat:",
        "setPostsBoundsChangedNotifications:",
        "setPostsFrameChangedNotifications:",
+       "setPredicate:",
+       "setPredicateName:",
+       "setPredicateOperator:",
+       "setPredicateString:",
        "setPreferences:",
-       "setPreferencesIdentifier:",
-       "setPreferencesView:",
        "setPreferredEdge:",
        "setPreferredFilename:",
-       "setPreferredFontNames:",
-       "setPrefersAllColumnUserResizing:",
-       "setPrefersColorMatch:",
-       "setPrefix:",
+       "setPreservesContentDuringLiveResize:",
        "setPreservesSelection:",
-       "setPressedImage:",
-       "setPressedImage:forControlTint:",
        "setPreviewNode:",
        "setPreviousItem:",
-       "setPreviousText:",
-       "setPrimaryIdentifier:",
+       "setPrimaryKeyGeneration:",
+       "setPrimaryKeys:",
+       "setPrimitiveValue:forKey:",
        "setPrintInfo:",
        "setPrintPanel:",
        "setPrinter:",
        "setPriority:forFlavor:",
-       "setPrivateVCardEnabled:",
-       "setProcessName:",
        "setPrompt:",
+       "setPropagatesDeletesAtEndOfEvent:",
+       "setProperties:",
        "setProperty:",
-       "setProperty:forKey:",
+       "setProperty:::",
        "setProperty:forKey:inRequest:",
        "setProperty:withValue:",
        "setPropertyList:forType:",
+       "setPropertyMappings:",
+       "setProps:forIndex:",
        "setProtocolForProxy:",
-       "setProtocolSpecificInformation:",
        "setPrototype:",
        "setProvisionalDataSource:",
        "setProvisionalItem:",
        "setProxyPropertiesForURL:onStream:",
+       "setPublicID:",
        "setPullsDown:",
-       "setQueryAttributes:",
-       "setQueryType:",
+       "setQueryNode:",
        "setQuoteBinding:",
        "setQuotingWithSingleQuote:double:",
+       "setROISelector:",
        "setRaisesForNotApplicableKeys:",
-       "setRaisesForNotApplicableKeys:withBinding:",
        "setRangeContainerClassDescription:",
-       "setRangeContainerObject:",
+       "setRanges:",
        "setRate:",
+       "setReadLimit:",
        "setReadOnly:",
        "setRealDelegate:",
        "setReceiversSpecifier:",
        "setRecentSearches:",
        "setRecentsAutosaveName:",
-       "setRecordTypesToSearchFor:",
-       "setRecordsUserChanges:",
-       "setRefreshesAllKeys:",
-       "setRefreshesAllObjects:",
        "setRefusesFirstResponder:",
        "setRefusesToBeShown:",
        "setRegistryClass:",
        "setRegistryString:",
-       "setRelatedObject:",
+       "setRelatedIDs:forKey:options:",
        "setRelativePosition:",
        "setReleasedWhenClosed:",
        "setReleasesAfterPoofing:",
        "setRememberedSnapToIndex:",
        "setRemovable:",
        "setRenderPart:",
-       "setRepeatCountForNextCommand:",
-       "setReplyMode:",
        "setReplyTimeout:",
-       "setRepopulatedContentWithNumberOfContentItems:",
-       "setReporter:selector:",
        "setRepresentedFilename:",
        "setRepresentedObject:",
+       "setRequestError:",
        "setRequestTimeout:",
+       "setRequestURL:",
        "setRequiredFileType:",
        "setRequiresDirectKeyValueCodingCall:partialControllerKey:partialObjectKey:",
        "setReservedThicknessForAccessoryView:",
        "setReservedThicknessForMarkers:",
-       "setResizable:",
+       "setResizable",
        "setResizeIncrements:",
-       "setResizeableColumns:",
+       "setResizingMask:",
        "setResolvesAliases:",
-       "setResourceData:",
        "setResourceLoadDelegate:",
-       "setResponse:",
+       "setResourceLocator:",
        "setResponseHeader:",
-       "setResponseHeaderUsingHTTPResponse:andCall:context:",
-       "setReturnCompletes:",
+       "setResponseHeaderUsingHTTPResponse:",
+       "setResponseURL:",
        "setReturnValue:",
-       "setReusesColumns:",
        "setRichText:",
+       "setRightChild:",
        "setRightMargin:",
+       "setRoot:",
+       "setRootElement:",
        "setRootNode:",
        "setRootObject:",
+       "setRootObjectStore:",
        "setRootPath:",
-       "setRoundedEdges:",
        "setRoundingBehavior:",
+       "setRoundingMode:",
+       "setRowForUpdate:",
        "setRowHeight:",
-       "setRuleThickness:",
-       "setRulerViewClass:",
        "setRulerVisible:",
        "setRulersVisible:",
        "setRunLoop:",
-       "setRunLoopModes:",
+       "setSQLString:",
        "setSRRecognitionSystem:",
        "setSRRecognizer:",
+       "setSamplerOption:forKey:",
+       "setSamplerOptionsFromDictionary:",
        "setSansSerifFontFamily:",
        "setSaveWeighting:",
        "setScalesWhenResized:",
        "setScanLocation:",
-       "setScope:",
+       "setScopeLocationNodes:",
        "setScriptCommand:",
        "setScriptErrorNumber:",
        "setScriptErrorString:",
        "setScriptingProperties:",
+       "setScrollBarsSuppressed:repaintOnUnsuppress:",
        "setScrollPoint:",
        "setScrollView:",
        "setScrollable:",
        "setScrollbarsVisible:",
-       "setScrollsDynamically:",
-       "setSearchBase:",
+       "setScrollingMode:",
        "setSearchButtonCell:",
-       "setSearchList:",
        "setSearchMenuTemplate:",
-       "setSearchState:",
-       "setSearchString:",
-       "setSearchValue:",
+       "setSearchScopeDisplayName:",
        "setSegmentCount:",
-       "setSegmentWidth:",
        "setSelectable:",
        "setSelected:forSegment:",
        "setSelectedAttributes:isMultiple:",
-       "setSelectedDirectories:",
-       "setSelectedDirectoryResult:",
-       "setSelectedDirectoryResults:",
+       "setSelectedDOMRange:affinity:",
        "setSelectedFont:isMultiple:",
-       "setSelectedGroup:",
-       "setSelectedGroups:",
-       "setSelectedImage:forControlTint:",
+       "setSelectedIndexPaths:",
        "setSelectedItemIdentifier:",
-       "setSelectedMember:",
-       "setSelectedMembers:",
-       "setSelectedObjects:",
        "setSelectedRange:",
        "setSelectedRange:affinity:stillSelecting:",
-       "setSelectedRecord:",
-       "setSelectedRecords:",
+       "setSelectedRanges:",
+       "setSelectedRanges:affinity:stillSelecting:",
+       "setSelectedScopeLocationNodes:",
        "setSelectedSegment:",
        "setSelectedTextAttributes:",
        "setSelectionByRect:",
-       "setSelectionFrom:startOffset:to:endOffset:",
        "setSelectionFrom:to:anchor:highlight:",
+       "setSelectionFromDroppedNode:selectionHelper:",
+       "setSelectionFromNone",
+       "setSelectionFromPasteboard:selectionHelper:",
        "setSelectionGranularity:",
        "setSelectionIndex:",
+       "setSelectionIndexPaths:",
        "setSelectionIndexes:",
+       "setSelectionToDragCaret",
        "setSelector:",
        "setSelectsAllWhenSettingContent:",
        "setSelectsInsertedObjects:",
-       "setSendsActionOnArrowKeys:",
        "setSendsActionOnEndEditing:",
        "setSendsWholeSearchString:",
-       "setSeparatesColumns:",
        "setSerifFontFamily:",
-       "setServer:",
-       "setServersInDefaultsFile:",
        "setServicesMenu:",
        "setServicesProvider:",
-       "setSessionUID:",
        "setSet:",
        "setShadowBlurRadius:",
+       "setShadowColor:",
        "setShadowOffset:",
        "setShadowState:",
-       "setSharedPrintInfo:",
-       "setSharedScriptSuiteRegistry:",
-       "setSharedURLCache:",
-       "setShortVersion:",
        "setShouldAntialias:",
-       "setShouldCascadeWindows:",
        "setShouldCloseDocument:",
        "setShouldCreateRenderers:",
        "setShouldCreateUI:",
+       "setShouldPrintBackgrounds:",
        "setShouldPrintExceptions:",
-       "setShouldProcessNamespaces:",
-       "setShouldReportNamespacePrefixes:",
        "setShouldResolveExternalEntities:",
-       "setShouldValidate:",
-       "setShowFlare:",
-       "setShowGroupMembership:",
        "setShowPanels:",
        "setShownAboveComboBox:",
-       "setShowsAlpha:",
        "setShowsBorderOnlyWhileMouseInside:",
        "setShowsControlCharacters:",
        "setShowsFirstResponder:",
+       "setShowsGetInfoButton:",
        "setShowsHelp:",
        "setShowsHiddenFiles:",
        "setShowsInvisibleCharacters:",
+       "setShowsLogonButton:",
        "setShowsPreviews:",
+       "setShowsPrintPanel:",
+       "setShowsProgressPanel:",
        "setShowsResizeIndicator:",
+       "setShowsRollover:",
        "setShowsStateBy:",
-       "setSibling1:",
-       "setSibling2:",
        "setSimpleCommandsArray:",
+       "setSimpleQueryString:",
+       "setSingleTableEntity:",
        "setSize:",
        "setSizeLimit:",
        "setSizeMode:",
-       "setSizeTitle:",
        "setSliderType:",
        "setSmartInsertDeleteEnabled:",
        "setSortDescriptorPrototype:",
@@ -13659,97 +14649,98 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setSound:",
        "setSource:",
        "setSpacing:inWindow:delegate:",
+       "setSpeakingSpeechFeedbackServices:",
        "setSpeakingString:",
        "setSpeechChannelWithVoiceCreator:voiceID:",
        "setSpeechChannelWithVoiceIdentifier:",
-       "setStandardError:",
+       "setSpeechFeedbackServicesTimer:",
+       "setSpeechFinishedSuccessfully:",
+       "setSpoolPath:",
+       "setStandalone:",
        "setStandardFontFamily:",
        "setStandardInput:",
        "setStandardOutput:",
-       "setStandardUserDefaults:",
+       "setStart::",
        "setStartSpecifier:",
        "setStartSubelementIdentifier:",
        "setStartSubelementIndex:",
-       "setStartsNewProcessGroup:",
        "setState:",
-       "setState:atRow:column:",
+       "setStateToSelected",
+       "setStateToUnselected",
        "setStatusBar:",
        "setStatusBarVisible:",
        "setStatusCode:",
        "setStatusMenu:",
        "setStatusText:",
+       "setStoreMetadata:",
        "setString:",
        "setString:forType:",
-       "setStringEncoding:",
+       "setStringIndex:forIndex:",
+       "setStringParameterValue:to:",
        "setStringValue:",
+       "setStringValue:resolvingEntities:",
        "setStroke",
-       "setStyle:",
-       "setStyleMask:",
+       "setSubentities:",
+       "setSubentityColumn:",
+       "setSubentityID:",
        "setSubmenu:",
        "setSubmenu:forItem:",
        "setSubmenuRepresentedObjectsAreStale",
-       "setSubrowSelection:",
+       "setSuperentity:",
        "setSupermenu:",
        "setSuppressLayout:",
        "setSuspended:",
-       "setSyncCount:",
-       "setSynchronized:",
+       "setSynthesizerIsRetained:",
        "setSystemCharacterProperties:",
-       "setSystemLanguage:",
-       "setSystemLanguages:",
+       "setSystemID:",
+       "setTXTRecordData:",
        "setTabKeyTraversesCells:",
        "setTabStops:",
-       "setTabViewType:",
        "setTableColumn:",
        "setTableView:",
        "setTag:",
-       "setTag:atRow:column:",
-       "setTag:target:action:atRow:column:",
+       "setTag:forSegment:",
        "setTailIndent:",
        "setTakesTitleFromPreviousColumn:",
        "setTarget:",
-       "setTarget:atRow:column:",
-       "setTarget:selector:userInfo:",
-       "setTaskDictionary:",
        "setTearOffMenuRepresentation:",
-       "setTemplate:",
-       "setTemplateChangedObserver:withSelector:",
-       "setTemporaryAttributes:forCharacterRange:",
+       "setTemporaryID:",
        "setTest:",
        "setTestedObjectClassDescription:",
        "setText:",
-       "setTextAlignment:",
-       "setTextAttributeWithCode:",
+       "setTextAlign:",
        "setTextAttributesForNegativeValues:",
+       "setTextAttributesForNil:",
+       "setTextAttributesForNotANumber:",
        "setTextAttributesForPositiveValues:",
+       "setTextAttributesForZero:",
+       "setTextBlocks:",
        "setTextColor:",
-       "setTextColor:range:",
        "setTextColor:whenObjectValueIsUsed:",
        "setTextContainer:",
        "setTextContainer:forGlyphRange:",
-       "setTextContainerInset:",
-       "setTextFont:",
-       "setTextProc:",
+       "setTextDecoration:",
+       "setTextLists:",
+       "setTextShadow:",
        "setTextSizeMultiplier:",
        "setTextStorage:",
        "setTextView:",
-       "setThemeFrameWidgetState:",
        "setThousandSeparator:",
-       "setThread:withObject:withSessionUID:",
-       "setThreadPriority:",
        "setTickMarkPosition:",
-       "setTighenThresholdForTruncation:",
+       "setTighteningFactorForTruncation:",
+       "setTimeInterval:",
        "setTimeIntervalSince1970:",
-       "setTimeLimit:",
+       "setTimeStyle:",
        "setTimeZone:",
        "setTimeoutInterval:",
        "setTimer",
+       "setTimestampToNow",
        "setTitle:",
        "setTitle:andDefeatWrap:",
        "setTitle:andMessage:",
        "setTitle:ofColumn:",
-       "setTitle:ofItemWithIdentifier:",
        "setTitleAlignment:",
+       "setTitleBaseWritingDirection:",
        "setTitleCell:",
        "setTitleColor:",
        "setTitleFont:",
@@ -13757,21 +14748,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setTitlePosition:",
        "setTitleWidth:",
        "setTitleWithMnemonic:",
-       "setTitleWithRepresentedFilename:",
-       "setTitleWithRepresentedObject:",
        "setTitled:",
+       "setTokenStyle:",
+       "setTokenizingCharacterSet:",
        "setToolTip:",
        "setToolTip:forCell:",
+       "setToolTip:forSegment:",
        "setToolTip:forView:cell:",
-       "setToolTipForView:rect:displayDelegate:userData:",
+       "setToolTipForView:rect:displayDelegate:displayInfo:",
        "setToolTipForView:rect:owner:userData:",
-       "setToolTipWithOwner:forView:cell:",
+       "setToolTipString:",
        "setToolbar:",
        "setToolbarsVisible:",
        "setTopLevelObject:",
        "setTopMargin:",
-       "setTrackingConstraint:",
-       "setTrackingConstraintKeyMask:",
        "setTrackingMode:",
        "setTrailingOffset:",
        "setTransformStruct:",
@@ -13784,193 +14774,163 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "setTypesetter:",
        "setTypesetterBehavior:",
        "setTypingAttributes:",
-       "setUIController:",
-       "setUID:",
-       "setUIDelegate:",
+       "setTypingStyle:",
+       "setURI:",
        "setURL:",
+       "setURLString:",
        "setUndoActionName:",
        "setUndoManager:",
        "setUniqueID:",
        "setUnquotedStringCharacters:lowerCaseLetters:upperCaseLetters:digits:",
        "setUnquotedStringStartCharacters:lowerCaseLetters:upperCaseLetters:digits:",
-       "setUnselectedImage:",
-       "setUpDataSources",
-       "setUpDataSourcesAndSelection",
        "setUpFieldEditorAttributes:",
        "setUpForChallenge:",
        "setUpGState",
        "setUpPrintOperationDefaultValues",
        "setUpSourceForData:",
-       "setUpTextField:",
-       "setUpTrackingRects",
-       "setUseOffsetImageHack:",
-       "setUseSSL:",
-       "setUsedSize:",
-       "setUserFixedPitchFont:",
-       "setUserFont:",
+       "setUpdatedObjects:",
+       "setUseSSLOnly:forKey:",
+       "setUserColumnResizingAutoresizesWindow:",
+       "setUserInfo:",
        "setUserStyleSheetEnabled:",
        "setUserStyleSheetLocation:",
-       "setUsesAlternatingRowBackgroundColors:",
-       "setUsesContinuousChangeNotification:",
        "setUsesDataSource:",
-       "setUsesDistinct:",
-       "setUsesEPSOnResolutionMismatch:",
        "setUsesFeedbackWindow:",
-       "setUsesFindPanel:",
        "setUsesFontLeading:",
        "setUsesFontPanel:",
-       "setUsesInactiveTextBackgroundColor:",
+       "setUsesGroupingSeparator:",
        "setUsesItemFromMenu:",
-       "setUsesMultiThreaded:",
        "setUsesRuler:",
        "setUsesScreenFonts:",
        "setUsesThreadedAnimation:",
        "setUsesUserKeyEquivalents:",
-       "setUsesVectorMovement:",
        "setUsingDefaultVoice:",
-       "setVCardField:isPrivate:",
-       "setValid:",
        "setValidateSize:",
        "setValidatesImmediately:",
-       "setValidatesImmediately:withBinding:",
        "setValue:",
        "setValue:forBinding:atIndex:error:",
+       "setValue:forBinding:atIndexPath:error:",
        "setValue:forBinding:error:",
        "setValue:forHTTPHeaderField:",
        "setValue:forKey:",
        "setValue:forKeyPath:",
-       "setValue:forProperty:",
        "setValue:forUndefinedKey:",
        "setValue:inObject:",
-       "setValueInTemporaryCache:forProperty:",
-       "setValueSelectionBehavior:",
+       "setValue:type:forDimension:",
        "setValueTransformer:",
        "setValueTransformer:forName:",
        "setValueTransformerName:",
        "setValueWraps:",
        "setValues:forParameter:",
        "setValuesForKeysWithDictionary:",
-       "setVariableRows:",
        "setVersion:",
        "setVertical:",
+       "setVerticalAlign:",
+       "setVerticalAlignment:",
        "setVerticalLineScroll:",
-       "setVerticalMotionCanBeginDrag:",
        "setVerticalPageScroll:",
        "setVerticalPagination:",
-       "setVerticalRulerView:",
-       "setVerticalScroller:",
+       "setVerticalScrollingMode:",
        "setVerticallyCentered:",
        "setVerticallyResizable:",
        "setView:",
+       "setViewAnimations:",
        "setViewKind:",
        "setViewOfPickerIsLoaded:",
        "setViewScale:",
        "setViewSize:",
-       "setViewZoom:",
        "setViewsNeedDisplay:",
+       "setVisibilityPriority:",
        "setVisible:",
-       "setVisitCount:",
        "setVisualFrame:",
        "setVoice:",
        "setVolatileDomain:forName:",
        "setVolume:",
-       "setWaitCursorEnabled:",
-       "setWaitOnTake:",
        "setWantsNotificationForMarkedText:",
-       "setWantsToBeColor:",
+       "setWarningValue:",
        "setWebFrameView:",
        "setWebView:",
+       "setWhitespace:",
        "setWidget:",
        "setWidth:",
+       "setWidth:forSegment:",
        "setWidth:ofColumn:",
+       "setWidth:type:forLayer:",
+       "setWidth:type:forLayer:edge:",
        "setWidthTracksTextView:",
        "setWillLoadImagesAutomatically:",
        "setWindingRule:",
-       "setWindow",
        "setWindow:",
        "setWindowContentRect:",
        "setWindowController:",
        "setWindowFrame:",
        "setWindowFrameAutosaveName:",
        "setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:",
+       "setWindowIfNecessary",
        "setWindowIsResizable:",
        "setWindowsMenu:",
        "setWindowsNeedUpdate:",
        "setWithArray:",
        "setWithCapacity:",
-       "setWithObject:",
        "setWithObjects:",
-       "setWithObjects:count:",
        "setWithSet:",
-       "setWordFieldStringValue:",
        "setWordWrap:",
-       "setWords:",
        "setWorksWhenModal:",
        "setWraps:",
+       "setZeroSymbol:",
        "settings",
-       "setup",
-       "setupAsPeoplePicker:",
+       "setupAttributes",
        "setupCarbonMenuBar",
        "setupForNoMenuBar",
        "setupGuessesBrowser",
-       "setupImportPanelWithTitle:selector:target:object:",
-       "setupKeyboardNavigation:",
+       "setupLoadedNib",
        "shadeColorWithDistance:towardsColor:",
-       "shadow",
        "shadowBlurRadius",
        "shadowColor",
-       "shadowDirtyRect",
-       "shadowImageAroundPath:",
        "shadowOffset",
        "shadowState",
        "shadowWithLevel:",
        "shapeWindow",
+       "shapeWithCGSRegion:",
+       "shapeWithRect:",
        "sharedAEDescriptorTranslator",
        "sharedAdapter",
-       "sharedAddressBook",
        "sharedAppleEventManager",
        "sharedApplication",
-       "sharedBuddyStatus",
+       "sharedBridge",
        "sharedCoercionHandler",
        "sharedColorPanel",
        "sharedColorPanelExists",
        "sharedController",
        "sharedCredentialStorage",
-       "sharedDBCache",
        "sharedDocumentController",
        "sharedDragManager",
-       "sharedExchangeSetup",
+       "sharedEditingDelegate",
        "sharedFactory",
+       "sharedFileInfoCache",
        "sharedFocusState",
        "sharedFontManager",
        "sharedFontOptions",
        "sharedFontPanel",
        "sharedFontPanelExists",
        "sharedFrameLoadDelegate",
-       "sharedFrameworksPath",
+       "sharedGenerator",
        "sharedGlyphGenerator",
-       "sharedGlyphGeneratorForTypesetterBehavior:",
        "sharedHTTPAuthenticator",
        "sharedHTTPCookieStorage",
        "sharedHandler",
        "sharedHeartBeat",
        "sharedHelpManager",
        "sharedIconDatabase",
-       "sharedImagePickerControllerCreate:",
        "sharedInfoPanel",
-       "sharedInit",
        "sharedInstance",
        "sharedKeyBindingManager",
-       "sharedLDAPManagerInstance",
        "sharedMagnifier",
        "sharedMappings",
-       "sharedNetworkController",
        "sharedNetworkSettings",
        "sharedPolicyDelegate",
-       "sharedPreferences",
        "sharedPrintInfo",
        "sharedRegistry",
-       "sharedRemoteImageLoader",
        "sharedResourceLoadDelegate",
        "sharedScriptExecutionContext",
        "sharedScriptSuiteRegistry",
@@ -13978,14 +14938,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "sharedServiceMaster",
        "sharedSpellChecker",
        "sharedSpellCheckerExists",
-       "sharedSupportPath",
-       "sharedSystemTypesetter",
        "sharedSystemTypesetterForBehavior:",
+       "sharedTableOptions",
        "sharedTextFinder",
        "sharedTextRulerOptions",
        "sharedToolTipManager",
+       "sharedToolTipStringDrawingLayoutManager",
        "sharedTracer",
        "sharedTypesetter",
+       "sharedTypographyPanel",
        "sharedUIDelegate",
        "sharedURLCache",
        "sharedUserDefaultsController",
@@ -13993,20 +14954,22 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "sheetDidEnd:returnCode:contextInfo:",
        "shiftIndexesStartingAtIndex:by:",
        "shiftModifySelection:",
-       "shortMonthNames",
-       "shortName",
        "shortTimeFormat",
        "shortValue",
        "shortVersion",
-       "shortWeekdayNames",
        "shouldAllowUserColumnResizing",
        "shouldAlwaysUpdateDisplayValue",
        "shouldAntialias",
        "shouldBeTreatedAsInkEvent:",
+       "shouldBecomeAETEPropertyDeclaration",
+       "shouldBeginEditing:",
+       "shouldBreakLineByHyphenatingBeforeCharacterAtIndex:",
+       "shouldBreakLineByWordBeforeCharacterAtIndex:",
        "shouldBufferTextDrawing",
        "shouldCascadeWindows",
        "shouldChangePrintInfo:",
        "shouldChangeTextInRange:replacementString:",
+       "shouldChangeTextInRanges:replacementStrings:",
        "shouldCloseDocument",
        "shouldCloseWindowController:",
        "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",
@@ -14017,75 +14980,73 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "shouldDrawColor",
        "shouldDrawInsertionPoint",
        "shouldEdit:inRect:ofView:",
-       "shouldEditOnSingleClick:inRow:tableColumn:",
-       "shouldFetchImageForEmail:withCacheDate:",
-       "shouldHighlightWithoutSelectingCell:atRow:column:",
+       "shouldEndEditing:",
        "shouldIgnoreAction:",
-       "shouldNotImplement:",
+       "shouldPersist",
+       "shouldPrintBackgrounds",
        "shouldPrintExceptions",
-       "shouldProcessNamespaces",
-       "shouldReportNamespacePrefixes",
-       "shouldResolveExternalEntities",
+       "shouldPropagateDeleteForObject:inEditingContext:forRelationshipKey:",
+       "shouldProvideSortDescriptor:optionsAdvertisingOnly:",
+       "shouldRefresh",
        "shouldRunSavePanelWithAccessoryView",
-       "shouldUnmount:",
-       "shouldValidate",
-       "showAsCompany:",
-       "showAsPerson:",
+       "shouldShowPreviewColumn:",
+       "shouldSubstituteCustomClass",
+       "shouldSuppressNotificationFromObject:keyPath:",
+       "shouldUseEnabledTextColor",
+       "shouldUseInvalidationForObject:",
        "showAttachmentCell:atPoint:",
        "showAttachmentCell:inRect:characterIndex:",
        "showCMYKView:",
-       "showCard:",
-       "showCardAndColumns:",
-       "showColumns:",
-       "showContextHelp:",
        "showContextHelpForObject:locationHint:",
        "showController:adjustingSize:",
        "showDeminiaturizedWindow",
-       "showDirectories:",
-       "showFlare",
+       "showFeaturesPanel:",
        "showGotoWithInitialFilename:",
        "showGreyScaleView:",
-       "showGroupMembership",
        "showGuessPanel:",
        "showHSBView:",
        "showHelp:",
-       "showHelpFile:context:",
        "showInfoPanel:",
-       "showLastImport:",
-       "showModalPreferencesPanel",
        "showModalPreferencesPanelForOwner:",
+       "showNode:inDirectory:selectIfEnabled:",
        "showNodeInCurrentDirectoryWithDisplayNamePrefix:selectIfEnabled:",
        "showNodeInCurrentDirectoryWithFilename:selectIfEnabled:",
+       "showNodeInDirectory:withDisplayNamePrefix:selectIfEnabled:caseSensitiveCompare:",
        "showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:",
        "showPanel:andNotify:with:",
-       "showPanels",
-       "showPeopleButton",
-       "showPicker",
-       "showPools",
        "showPopup",
-       "showPreferencesPanel",
        "showPreferencesPanelForOwner:",
        "showPrimarySelection",
        "showRGBView:",
-       "showStatus:",
+       "showRelativeToView:",
+       "showRolloverWindow",
        "showToolbar:",
-       "showURL:inFrame:",
+       "showUI",
        "showValue:inObject:",
        "showWindow",
        "showWindow:",
        "showWindows",
        "shownValueInObject:",
+       "shownValueInObject:errorEncountered:error:",
        "showsAlpha",
+       "showsBaselineSeparator",
        "showsBorderOnlyWhileMouseInside",
        "showsControlCharacters",
        "showsFirstResponder",
+       "showsGetInfoButton",
        "showsHelp",
        "showsHiddenFiles",
        "showsInvisibleCharacters",
+       "showsLogonButton",
+       "showsOutlineCell",
        "showsPreviews",
        "showsResizeIndicator",
+       "showsRollover",
+       "showsShadowedText",
        "showsStateBy",
+       "showsToolbarButton",
        "shutAllDrawers:",
+       "sidebar",
        "sidebarContainerNodes",
        "sidebarFavoritesNode",
        "sidebarView",
@@ -14093,25 +15054,25 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "signal",
        "signature",
        "signatureWithObjCTypes:",
+       "signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:pageURL:",
        "significantText",
        "simpleCommandsArray",
-       "simpleControllerWithUIController:",
-       "singlestep:",
+       "simpleQueryString",
+       "singleLineTypesetter",
        "size",
        "sizeCreditsView",
+       "sizeForDisplayingAttributedString:",
        "sizeForKey:inTable:",
        "sizeForMagnification:",
-       "sizeForPaperName:",
        "sizeHeightToFit",
        "sizeLastColumnToFit",
        "sizeLimit",
        "sizeMode",
-       "sizeOfDictionary:",
        "sizeOfLabel:",
+       "sizeOfString:",
        "sizeOfTitlebarButtons",
        "sizeOfTitlebarButtons:",
        "sizeOfTitlebarToolbarButton",
-       "sizeOfTypesetterGlyphInfo",
        "sizeToCells",
        "sizeToFit",
        "sizeToFitAndAdjustWindowHeight",
@@ -14120,17 +15081,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "sizeWhenSizedToFit",
        "sizeWidthToFit",
        "sizeWithAttributes:",
+       "sizeWithBehavior:usesFontLeading:baselineDelta:",
+       "sizeWithColumns:rows:",
        "skipDescendents",
-       "skipUnimplementedOpcode:",
-       "sleepForTimeInterval:",
        "sleepUntilDate:",
+       "slide:",
        "slideDraggedImageTo:",
        "slideImage:from:to:",
        "sliderType",
+       "slot",
        "slotForKey:",
-       "slowFirstLastSortingNamePart1:part2:",
-       "slowLastFirstSortingNamePart1:part2:",
-       "smallIcon",
        "smallSystemFontSize",
        "smallestEncoding",
        "smartDeleteRangeForProposedRange:",
@@ -14138,94 +15098,123 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "smartInsertBeforeStringForString:replacingRange:",
        "smartInsertDeleteEnabled",
        "smartInsertForString:replacingRange:beforeString:afterString:",
-       "socket",
+       "smemapROI:forRect:",
+       "snapshotForSourceGlobalID:relationshipName:after:",
+       "snapshots",
        "socketType",
-       "sortDescriptorForFileProperty:dataSource:ascending:",
        "sortDescriptorPrototype",
        "sortDescriptors",
        "sortIndicatorRectForBounds:",
-       "sortKeyForString:range:flags:",
-       "sortMembers:",
-       "sortSubviewsUsingFunction:context:",
        "sortUsingDescriptors:",
        "sortUsingFunction:context:",
-       "sortUsingFunction:context:range:",
        "sortUsingSelector:",
-       "sortedArrayHint",
        "sortedArrayUsingDescriptors:",
        "sortedArrayUsingFunction:context:",
        "sortedArrayUsingFunction:context:hint:",
        "sortedArrayUsingSelector:",
-       "sortedArrayUsingSelector:hint:",
+       "sortedClassDescriptions:",
+       "sortsChildrenEfficiently",
        "sound",
+       "sound:didFinishPlaying:",
        "soundNamed:",
        "soundUnfilteredFileTypes",
-       "soundUnfilteredPasteboardTypes",
        "source",
+       "sourceAttributeName",
+       "sourceEntity",
        "sourceFrame",
+       "sourceKey",
+       "sourceNode",
        "spaceForScrollbarAndScrollViewBorder",
-       "spaceItemIdentifier",
        "speakString:",
        "speakingString",
-       "specified",
-       "specifierFromPath:",
+       "specialColorSpaceWithID:",
+       "specifier",
+       "specifierTraverseLink:",
+       "specifierWithPath:",
+       "specifierWithPath:traverseLink:",
        "speechChannel",
+       "speechFeedbackServicesRef",
+       "speechFeedbackServicesTimer",
+       "speechFinishedSuccessfully",
+       "speechRecognizer:didRecognizeCommand:",
+       "speechSynthesizer:didEncounterError:characterPos:",
+       "speechSynthesizer:didFinishSpeaking:",
+       "speechSynthesizer:didSync:",
+       "speechSynthesizer:willSpeakPhoneme:",
+       "speechSynthesizer:willSpeakWord:ofString:",
        "spellCheckerDocumentTag",
+       "spellServer:checkGrammarInString:language:details:",
+       "spellServer:didForgetWord:inLanguage:",
+       "spellServer:didLearnWord:inLanguage:",
        "spellServer:findMisspelledWordInString:language:wordCount:countOnly:",
+       "spellServer:suggestCompletionsForPartialWordRange:inString:language:",
        "spellServer:suggestGuessesForWord:inLanguage:",
        "spellingPanel",
-       "spinningArrows",
-       "splitText:",
+       "spherePullROI:forRect:",
+       "splitCell:range:",
+       "splitCells",
        "splitView:canCollapseSubview:",
        "splitView:constrainMaxCoordinate:ofSubviewAt:",
+       "splitView:constrainMinCoordinate:maxCoordinate:ofSubviewAt:",
        "splitView:constrainMinCoordinate:ofSubviewAt:",
        "splitView:constrainSplitPosition:ofSubviewAt:",
-       "splitView:didMoveDivider:distance:",
        "splitView:resizeSubviewsWithOldSize:",
-       "splitView:willMoveDivider:distance:",
-       "splitViewDidResizeSubviews:",
        "splitViewDidTrackOrResize:",
        "splitViewDoubleClick:",
        "splitViewWillTrackOrResize:",
        "splitterWithIndex:parent:",
+       "spoolPath",
+       "spotlight:",
+       "spotlightColor",
+       "spotlightEdgeColor",
+       "sqlCore",
+       "sqlStatement",
+       "sqlString",
+       "sqlType",
+       "sqlTypeForExpressionConstantValue:",
        "srRecognitionSystem",
        "srRecognizer",
-       "standardError",
+       "src",
+       "stalenessInterval",
        "standardFontFamily",
-       "standardInput",
-       "standardItemWithItemIdentifier:",
-       "standardOutput",
        "standardPreferences",
        "standardUserDefaults",
        "standardWindowButton:",
        "standardWindowButton:forStyleMask:",
+       "standardizedPath",
        "standardizedURL",
        "standardizedURLPath",
        "start",
        "start:",
        "startAllPlugins",
        "startAnimation:",
+       "startArchiving:",
        "startAuthentication:window:",
        "startCoalesceTextDrawing",
-       "startDirectorySearch",
-       "startEditingNewPerson:inGroup:",
+       "startContainer",
+       "startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:",
        "startInputStream:closeOnEnd:",
-       "startListening",
        "startLoading",
-       "startLoadingResource:withURL:",
-       "startLoadingResource:withURL:referrer:forDataSource:",
-       "startObservingContentObject:",
+       "startLoadingResource:withRequest:customHeaders:referrer:forDataSource:",
+       "startLoadingResource:withURL:customHeaders:",
+       "startLoadingResource:withURL:customHeaders:postData:",
+       "startLoadingResource:withURL:customHeaders:postData:referrer:forDataSource:",
+       "startLoadingResource:withURL:customHeaders:referrer:forDataSource:",
+       "startObservingModelObject:",
+       "startObservingModelObjectAtReferenceIndex:",
+       "startObservingModelObjectsAtReferenceIndexes:",
+       "startObservingNode",
+       "startObservingPreviewNode:",
+       "startOffset",
        "startOriginLoad",
        "startPeriodicEventsAfterDelay:withPeriod:",
-       "startProfiling",
        "startProgressiveLoad",
-       "startQueryForString:withServers:",
+       "startQuery",
        "startRectForSheet:",
        "startSpeaking:",
-       "startSpeakingString:",
-       "startSpeakingString:toURL:",
        "startSpecifier",
-       "startSpinning",
+       "startStreamResponseURL:expectedContentLength:lastModifiedDate:MIMEType:",
+       "startStreamWithResponse:",
        "startSubelementIdentifier",
        "startSubelementIndex",
        "startTextTimer",
@@ -14233,25 +15222,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "startTimerForSpeaking",
        "startTrackingAt:inView:",
        "startTrackingWithEvent:inView:withDelegate:",
-       "startWaitCursorTimer",
-       "started",
+       "startingColumn",
+       "startingRow",
        "stashSize",
        "state",
        "stateImageOffset",
        "stateImageRectForBounds:",
        "stateImageWidth",
+       "statementClass",
        "statistics",
        "status",
        "status:",
        "statusBar",
-       "statusCString",
        "statusCode",
-       "statusForTable:",
-       "statusItemWithLength:",
        "statusMenu",
-       "statusString",
-       "stepBack:",
-       "stepForward:",
        "stepKey:elements:number:state:",
        "stepTowardsDestinationAtleastAsFarAs:",
        "stop",
@@ -14270,14 +15254,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "stopModal",
        "stopModalWithCode:",
        "stopNullEvents",
-       "stopObservingContentObject:",
+       "stopObservingModelObjectAtReferenceIndex:",
+       "stopObservingModelObjectsAtReferenceIndexes:",
+       "stopObservingNode",
+       "stopObservingPreviewNode",
+       "stopObservingRelatedObject:",
        "stopPeriodicEvents",
-       "stopProfiling",
-       "stopSearching",
-       "stopSendingConversionUpdates",
        "stopSpeaking",
        "stopSpeaking:",
-       "stopSpinning",
        "stopTextTimer",
        "stopTimer",
        "stopTimerForSpeaking",
@@ -14285,16 +15269,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "stopTrackingWithEvent:",
        "stopUpdateInsertionAnimation",
        "storagePolicy",
+       "store",
        "storeCachedResponse:forRequest:",
        "storeColorPanel:",
+       "storeCurrentBrowsingNodePath:",
+       "storeMetadata",
        "storeMin:andMax:ofObject:",
+       "storeType",
        "storedAttributes",
        "storedValueForKey:",
-       "stream",
-       "streamError",
-       "streamStatus",
+       "stores",
+       "stream:handleEvent:",
+       "strengthMenuItemTitles",
        "strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
        "string",
+       "string:",
        "stringArrayForKey:",
        "stringByAbbreviatingWithTildeInPath",
        "stringByAddingPercentEscapes",
@@ -14303,35 +15292,31 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "stringByAppendingPathComponent:",
        "stringByAppendingPathExtension:",
        "stringByAppendingString:",
-       "stringByConvertingPathToURL",
-       "stringByConvertingURLToPath",
        "stringByDeletingLastPathComponent",
        "stringByDeletingPathExtension",
        "stringByEvaluatingJavaScriptFromString:",
        "stringByExpandingTildeInPath",
        "stringByPaddingToLength:withString:startingAtIndex:",
-       "stringByRemovingPercentEscapes",
        "stringByReplacingPercentEscapesUsingEncoding:",
        "stringByResolvingSymlinksInPath",
        "stringByStandardizingPath",
        "stringByTrimmingCharactersInSet:",
-       "stringDrawingTextStorage",
-       "stringEncoding",
-       "stringForDPSError:",
-       "stringForIndexing",
+       "stringForEditing",
        "stringForKey:",
        "stringForKey:inTable:",
        "stringForObjectValue:",
        "stringForRange:",
-       "stringForStatus:",
        "stringForStringListID:andIndex:",
        "stringForType:",
+       "stringFromDate:",
        "stringListForKey:inTable:",
        "stringMarkingUpcaseTransitionsWithDelimiter2:",
+       "stringParameterValue:",
        "stringValue",
-       "stringValueOfProperty:",
-       "stringValuesOfProperty:",
+       "stringValueForObject:",
+       "stringValueSubstitutingEntitiesForNode:ranges:names:objectValue:",
        "stringWithCString:",
+       "stringWithCString:encoding:",
        "stringWithCString:length:",
        "stringWithCapacity:",
        "stringWithCharacters:length:",
@@ -14341,63 +15326,63 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "stringWithData:textEncodingName:",
        "stringWithFileSystemRepresentation:length:",
        "stringWithFormat:",
-       "stringWithFormat:locale:",
        "stringWithSavedFrame",
        "stringWithString:",
        "stringWithUTF8String:",
        "stringWithoutAmpersand",
        "stringsByAppendingPathComponent:",
        "stringsByAppendingPaths:",
-       "stringsFromRows:",
-       "stringsFromRows:expanding:",
-       "stringsFromSelection",
-       "stringsFromSelectionExpanding:",
+       "stripDiacriticsFromString:",
        "stroke",
        "strokeLineFromPoint:toPoint:",
        "strokeRect:",
        "style",
        "styleMask",
-       "subRowIndexAtPoint:",
+       "styleSheetForPrinting",
+       "subNodeAtIndex:",
+       "subNodes",
        "subarrayWithRange:",
-       "subclassResponsibility:",
        "subdataWithRange:",
        "subdivideBezierWithFlatness:startPoint:controlPoint1:controlPoint2:endPoint:",
-       "subgroups",
+       "subentities",
+       "subentitiesByName",
+       "subentityColumn",
+       "subentityID",
+       "subentityKey",
+       "subentityMaxID",
+       "subexpression",
+       "subframeArchives",
        "submenu",
+       "submenuAction:",
        "submenuRepresentedObjects",
        "submenuRepresentedObjectsAreStale",
        "submitButtonDefaultLabel",
-       "subpathsAtPath:",
-       "subrowObjectsAtIndex:",
-       "subrowObjectsForPerson:",
-       "subrows",
+       "subpredicate",
+       "subpredicates",
+       "subresourceForURL:",
+       "subresources",
        "subscript:",
        "subscriptRange:",
-       "subsetMappingForSourceDictionaryInitializer:",
-       "subsetMappingForSourceDictionaryInitializer:sourceKeys:destinationKeys:",
-       "substituteFontForCharacters:length:families:",
        "substituteFontForFont:",
-       "substituteFontForString:families:",
        "substituteGlyphsInRange:withGlyphs:",
-       "substringData::",
+       "substitutedValueForPredicate:",
        "substringFromIndex:",
        "substringToIndex:",
        "substringWithRange:",
+       "subtractRect:",
        "subtractRegion:",
        "subtype",
-       "subviewFrameAtIndex:",
        "subviews",
-       "suffixFieldPresent",
-       "suggestedFileExtensionForMIMEType:",
        "suggestedFilename",
-       "suiteDescription",
-       "suiteForAppleEventCode:",
+       "suiteDescriptionFromPropertyListDeclaration:bundle:",
+       "suiteDescriptions",
        "suiteName",
-       "suiteNameArray",
-       "suiteNames",
+       "suiteRegistry",
+       "sum:",
        "superClass",
        "superclass",
        "superclassDescription",
+       "superentity",
        "supermenu",
        "superscript:",
        "superscriptRange:",
@@ -14405,42 +15390,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "superviewFrameChanged:",
        "supportedImageMIMETypes",
        "supportedMIMETypes",
-       "supportedWindowDepths",
        "supportsCommand:",
        "supportsMode:",
-       "supportsReverseTransformation",
+       "supportsMutableFBENode",
        "supportsSortingByFileProperties",
+       "supportsTableEditing",
        "supportsTextEncoding",
-       "suppressCapitalizedKeyWarning",
+       "suppressAllNotificationsFromObject:",
+       "suppressSpecificNotificationFromObject:keyPath:",
        "surfaceID",
        "suspend",
-       "suspendCount",
        "suspendCurrentAppleEvent",
        "suspendExecution",
        "suspended",
-       "swapFirstLastName:",
-       "swapWithMark:",
+       "swapGlyph:withIndex:",
        "swatchWidth",
        "switchCell",
        "switchImage:",
-       "switchLayoutTo:withAnimation:",
-       "switchList:",
-       "switchPanes:",
        "switchToListNamed:",
+       "symbol",
        "symbolCharacterSet",
        "symbolicLinkDestination",
+       "symbolicTraits",
        "sync",
-       "syncCount",
+       "syncLoadResourceWithURL:customHeaders:postData:finalURL:responseHeaders:statusCode:",
        "syncToView:",
        "syncToViewUnconditionally",
        "syncWithRemoteToolbars",
-       "synchSelectedRows",
        "synchronize",
-       "synchronizeFile",
        "synchronizeTableViewSelectionWithText:",
        "synchronizeTitleAndSelectedItem",
        "synchronizeWindowTitleWithDocumentName",
-       "synonymTerminologyDictionary:",
+       "synthesizerIsRetained",
        "systemCharacterProperties",
        "systemColorsDidChange:",
        "systemDefaultPortNameServer",
@@ -14448,12 +15429,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "systemFontSize",
        "systemFontSizeForControlSize:",
        "systemID",
-       "systemId",
        "systemLanguage",
        "systemLanguageContext",
-       "systemStatusBar",
+       "systemLocale",
        "systemTabletID",
-       "systemTimeZone",
        "systemVersion",
        "tabKeyTraversesCells",
        "tabState",
@@ -14461,110 +15440,131 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "tabStops",
        "tabView",
        "tabView:didSelectTabViewItem:",
+       "tabView:shouldSelectTabViewItem:",
+       "tabView:willSelectTabViewItem:",
        "tabViewAdded",
+       "tabViewDidChangeNumberOfTabViewItems:",
        "tabViewItemAtIndex:",
        "tabViewItemAtPoint:",
        "tabViewItems",
        "tabViewRemoved",
        "tabViewType",
+       "table",
        "tableAction:",
-       "tableColumn",
+       "tableColumn:didChangeToWidth:",
+       "tableColumn:willDisplayCell:row:",
        "tableColumnWithIdentifier:",
        "tableColumns",
-       "tableContentChanged:",
+       "tableName",
+       "tableOptionsPanel:",
+       "tableParameters",
        "tableRow:ofTableView:",
        "tableView",
        "tableView:acceptDrop:row:dropOperation:",
-       "tableView:defaultSubRowForRow:",
-       "tableView:heightForRow:",
+       "tableView:didChangeToSelectedRowIndexes:",
+       "tableView:didChangeToSortDescriptors:",
+       "tableView:didClickTableColumn:",
+       "tableView:didDragTableColumn:",
+       "tableView:heightOfRow:",
+       "tableView:mouseDownInHeaderOfTableColumn:",
+       "tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:",
        "tableView:objectValueForTableColumn:row:",
+       "tableView:objectValueForTableColumn:row:localized:",
        "tableView:setObjectValue:forTableColumn:row:",
        "tableView:shouldEditTableColumn:row:",
        "tableView:shouldSelectRow:",
+       "tableView:shouldSelectTableColumn:",
        "tableView:sortDescriptorsDidChange:",
+       "tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:",
+       "tableView:updateVisibleRowInformation:",
        "tableView:validateDrop:proposedRow:proposedDropOperation:",
        "tableView:willDisplayCell:forTableColumn:row:",
        "tableView:writeRows:toPasteboard:",
+       "tableView:writeRowsWithIndexes:toPasteboard:",
        "tableViewAction:",
-       "tableViewSelectionDidChange:",
        "tableViewSelectionIsChanging:",
        "tabletEvent",
        "tabletID",
+       "tabletPoint:",
+       "tabletProximity:",
+       "tabsToLinks",
        "tag",
-       "tagList",
+       "tagForSegment:",
        "tagName",
        "tailIndent",
        "take",
        "takeColorFrom:",
-       "takeDoubleValueFrom:",
+       "takeColorSpaceFrom:",
        "takeFindStringFromSelection:",
        "takeFindStringFromView:",
-       "takeFloatValueFrom:",
-       "takeIntValueFrom:",
-       "takeObjectValueFrom:",
-       "takeSelectedTabViewItemFromSender:",
        "takeStoredValue:forKey:",
        "takeStoredValuesFromDictionary:",
-       "takeStringURLFrom:",
-       "takeStringValueFrom:",
        "takeValue:forKey:",
        "takeValue:forKeyPath:",
        "takeValuesFromDictionary:",
-       "takesTitleFromPreviousColumn",
        "tangentialPressure",
        "target",
-       "targetClass",
+       "targetAndArgumentsAcceptable",
+       "targetAndArgumentsAcceptableAtIndex:",
+       "targetAndArgumentsAcceptableAtIndexPath:",
+       "targetAndArgumentsAcceptableForPerformAction",
+       "targetAnimationRect",
        "targetForAction:",
        "targetForAction:to:from:",
-       "targetItem",
        "targetOrigin",
        "targetWithQObject:member:",
        "targetWithQTimer:",
-       "taskDictionary",
-       "tearDown",
        "tearOffMenuRepresentation",
-       "tearOffTitlebarHighlightColor",
-       "tearOffTitlebarShadowColor",
        "tellQuickTimeToChill",
-       "template",
-       "templateChanged",
        "temporaryAttributesAtCharacterIndex:effectiveRange:",
+       "temporaryID",
+       "temporaryObjectIDWithEntity:",
        "terminate",
        "terminate:",
        "terminateForClient:",
-       "terminateTask",
-       "terminationReason",
-       "terminationStatus",
        "test",
        "testPart:",
-       "testStructArrayAtIndex:",
+       "testSelector",
        "testedObjectClassDescription",
        "text",
+       "textAttachment",
        "textAttributes",
+       "textAttributesForNegativeInfinity",
        "textAttributesForNegativeValues",
+       "textAttributesForNil",
+       "textAttributesForNotANumber",
+       "textAttributesForPositiveInfinity",
        "textAttributesForPositiveValues",
+       "textAttributesForZero",
+       "textAttributesRegular",
+       "textAttributesWhiteText",
        "textBackgroundColor",
+       "textBlocks",
+       "textChanged",
        "textColor",
        "textColorAtIndex:",
+       "textColorAtIndexPath:",
+       "textColorForButtonState:",
+       "textColorInvalidationCapableObjectForObject:",
        "textColorWhenObjectValueIsUsed:",
        "textContainer",
        "textContainerChangedGeometry:",
        "textContainerChangedTextView:",
        "textContainerForAttributedString:",
+       "textContainerForAttributedString:containerSize:lineFragmentPadding:",
        "textContainerForGlyphAtIndex:effectiveRange:",
+       "textContainerForGlyphAtIndexWithoutAdditionalLayout:",
        "textContainerInset",
        "textContainerOrigin",
        "textContainers",
-       "textDidBeginEditing:",
        "textDidChange:",
        "textDidEndEditing:",
        "textEncoding",
        "textEncodingName",
-       "textFileTypes",
-       "textImpl",
+       "textLists",
        "textObjectToSearchIn",
        "textPasteboardTypes",
-       "textProc",
+       "textShadowForButtonState:",
        "textShouldBeginEditing:",
        "textShouldEndEditing:",
        "textSizeMultiplier",
@@ -14572,36 +15572,57 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "textStorage:edited:range:changeInLength:invalidatedRange:",
        "textTabForGlyphLocation:writingDirection:maxLocation:",
        "textTimerFired:",
+       "textTransform",
+       "textUnderElement",
        "textUnfilteredFileTypes",
        "textUnfilteredPasteboardTypes",
        "textView",
+       "textView:clickedOnCell:inRect:",
+       "textView:clickedOnCell:inRect:atIndex:",
        "textView:clickedOnLink:",
        "textView:clickedOnLink:atIndex:",
+       "textView:completions:forPartialWordRange:",
        "textView:completions:forPartialWordRange:indexOfSelectedItem:",
+       "textView:didHandleEvent:",
        "textView:doCommandBySelector:",
+       "textView:doubleClickedOnCell:inRect:",
+       "textView:doubleClickedOnCell:inRect:atIndex:",
+       "textView:draggedCell:inRect:event:",
+       "textView:draggedCell:inRect:event:atIndex:",
        "textView:shouldChangeTextInRange:replacementString:",
-       "textView:shouldSetForegroundColor:",
+       "textView:shouldChangeTextInRanges:replacementStrings:",
+       "textView:shouldChangeTypingAttributes:toAttributes:",
+       "textView:shouldDrawInsertionPointInRect:color:turnedOn:",
+       "textView:shouldHandleEvent:",
+       "textView:shouldSetColor:",
        "textView:willChangeSelectionFromCharacterRange:toCharacterRange:",
+       "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:",
+       "textView:willDisplayToolTip:forCharacterAtIndex:",
+       "textView:writablePasteboardTypesForCell:atIndex:",
+       "textView:writeCell:atIndex:toPasteboard:type:",
+       "textViewDidChangeSelection:",
        "textViewForBeginningOfSelection",
        "textWithHardLineBreaks",
-       "textWithImpl:",
+       "textWithStringValue:",
+       "textureIsDestination:name:userInfo:",
+       "textureROI:forRect:",
        "thickness",
        "thicknessRequiredInRuler",
-       "thisIsACompany:",
-       "thisIsMe:",
        "thousandSeparator",
-       "thousandsSeparator",
        "threadDictionary",
-       "threadPriority",
-       "threadedSave",
        "tickMarkPosition",
+       "tickMarkValueAtIndex",
        "tickMarkValueAtIndex:",
-       "tighenThresholdForTruncation",
        "tightenKerning:",
+       "tightenThresholdForTruncation",
+       "tighteningFactorForTruncation",
        "tile",
        "tileAndSetWindowShape:",
+       "tileForView:",
        "tileIfNecessary",
-       "tileInRect:fromPoint:",
+       "tileInRect:fromPoint:context:",
+       "tileVertically",
+       "tilt",
        "tiltX",
        "tiltY",
        "timeInterval",
@@ -14609,324 +15630,325 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "timeIntervalSinceDate:",
        "timeIntervalSinceNow",
        "timeIntervalSinceReferenceDate",
-       "timeLimit",
        "timeZone",
-       "timeZoneDetail",
        "timeZoneForSecondsFromGMT:",
        "timeZoneWithAbbreviation:",
        "timeZoneWithName:",
-       "timeZoneWithName:data:",
        "timeoutInterval",
        "timer:",
        "timerFired",
        "timerFired:",
-       "timerWithFireDate:target:selector:userInfo:",
-       "timerWithTimeInterval:invocation:repeats:",
        "timerWithTimeInterval:target:selector:userInfo:repeats:",
-       "timersForMode:",
        "timestamp",
+       "timestampForKey:",
        "title",
-       "titleAlignment",
        "titleBarFontOfSize:",
        "titleButtonOfClass:",
        "titleCell",
        "titleColor",
-       "titleFieldPresent",
        "titleFont",
        "titleForIdentifier:",
        "titleFrameOfColumn:",
        "titleHeight",
-       "titleOfColumn:",
        "titleOfSelectedItem",
        "titlePosition",
        "titleRect",
        "titleRectForBounds:",
        "titleWidth",
        "titleWidth:",
-       "titleWithSelection:",
        "titlebarRect",
-       "titlesFromPasteboard:",
-       "tmpNameFromPath:",
        "tmpNameFromPath:extension:",
        "toManyRelationshipKeys",
+       "toOneRelationship",
        "toOneRelationshipKeys",
-       "toggle:",
        "toggleBaseWritingDirection:",
+       "toggleContinuousGrammarChecking:",
        "toggleContinuousSpellChecking:",
        "toggleExpanded:",
        "toggleIsExpanded:",
+       "toggleKeepVisibleToolbarItem:",
        "togglePlatformInputSystem:",
        "togglePreview:",
        "toggleRuler:",
-       "toggleShown:",
+       "toggleSmartInsertDelete:",
        "toggleToolbarShown:",
        "toggleTraditionalCharacterShape:",
        "toggleUsingSmallToolbarIcons:",
-       "tokenAtCursor",
-       "tokenName:",
-       "tokenSetForLength:",
+       "tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:",
+       "tokenField:displayStringForRepresentedObject:",
+       "tokenField:editingStringForRepresentedObject:",
+       "tokenField:hasMenuForRepresentedObject:",
+       "tokenField:menuForRepresentedObject:",
+       "tokenField:readFromPasteboard:",
+       "tokenField:representedObjectForEditingString:",
+       "tokenField:shouldAddObjects:atIndex:",
+       "tokenField:styleForRepresentedObject:",
+       "tokenField:tooltipStringForRepresentedObject:",
+       "tokenField:writeRepresentedObjects:toPasteboard:",
+       "tokenFieldCell",
+       "tokenFieldCell:completionsForSubstring:indexOfToken:indexOfSelectedItem:",
+       "tokenFieldCell:displayStringForRepresentedObject:",
+       "tokenFieldCell:hasMenuForRepresentedObject:",
+       "tokenFieldCell:menuForRepresentedObject:",
+       "tokenFieldCell:readFromPasteboard:",
+       "tokenFieldCell:representedObjectForEditingString:",
+       "tokenFieldCell:shouldAddObjects:atIndex:",
+       "tokenFieldCell:styleForRepresentedObject:",
+       "tokenFieldCell:tooltipStringForRepresentedObject:",
+       "tokenFieldCell:writeRepresentedObjects:toPasteboard:",
+       "tokenStyle",
+       "tokenizerProcessedData",
+       "tokenizingCharacterSet",
        "toolTip",
        "toolTipColor",
        "toolTipForCell:",
+       "toolTipForSegment:",
        "toolTipForView:cell:",
+       "toolTipManagerWillRecomputeToolTipsByRemoving:adding:",
+       "toolTipString",
        "toolTipTextColor",
        "toolTipsFontOfSize:",
        "toolbar",
+       "toolbar:didRemoveItem:",
        "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",
+       "toolbar:itemForItemIdentifier:willInsertIntoToolbar:",
+       "toolbar:newItemForItemIdentifier:",
+       "toolbar:willAddItem:",
        "toolbarAllowedItemIdentifiers:",
        "toolbarBackgroundColor",
        "toolbarButton",
        "toolbarDefaultItemIdentifiers:",
        "toolbarInstancesWithIdentifier:",
        "toolbarItemClicked:",
+       "toolbarLabelFontOfSize:",
+       "toolbarLabelFontSizeForToolbarSize:",
        "toolbarSelectableItemIdentifiers:",
-       "top",
-       "topAutoreleasePoolCount",
        "topLevelNode",
        "topLevelObject",
        "topLevelObjectClassDescription",
        "topMargin",
        "topUndoObject",
-       "totalAutoreleasedObjects",
-       "totalCount",
+       "totalNumberOfItemViewersAndSeparators",
        "touch",
-       "touchCachedImageForEmail:",
        "trace",
-       "traceWithFlavor:priority:format:",
        "traceWithFlavor:priority:format:arguments:",
-       "trackKeyEvent:inView:",
        "trackKnob:",
        "trackMagnifierForPanel:",
        "trackMarker:withMouseEvent:",
        "trackMouse:adding:",
        "trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:",
        "trackMouse:inRect:ofView:untilMouseUp:",
-       "trackMouse:inRect:ofView:untilMouseUp:inColumn:",
-       "trackMouseEvent:inView:",
+       "trackMouseForPopupMenuFormRepresentation:",
        "trackPagingArea:",
-       "trackRect",
        "trackScrollButtons:",
        "trackWithEvent:",
        "trackWithEvent:inView:withDelegate:",
-       "trackingConstraint",
-       "trackingConstraintKeyMask",
        "trackingMode",
        "trackingNumber",
        "trailingOffset",
        "traitsOfFont:",
-       "transactionID",
-       "transferMode",
+       "transactionDidBegin",
+       "transactionDidCommit",
+       "transactionDidRollback",
        "transform",
        "transform:",
-       "transformBezierPath:",
+       "transformBy:interior:",
        "transformPoint:",
        "transformRect:",
-       "transformSize:",
        "transformStruct",
        "transformUsingAffineTransform:",
+       "transformedImage:",
        "transformedValue:",
        "transformedValueClass",
        "translateOriginToPoint:",
        "translateTo::",
        "translateXBy:yBy:",
        "transparentBackground",
-       "transpose:",
+       "treatNilValuesLikeEmptyCollections",
        "treatsDirectoryAliasesAsDirectories",
        "treatsFilePackagesAsDirectories",
-       "triggerSearch",
-       "trimVolumeName:",
-       "truncateFileAtOffset:",
+       "tryDHTMLCopy",
+       "tryDHTMLCut",
+       "tryDHTMLPaste",
        "tryLock",
-       "tryLockForReading",
-       "tryLockForWriting",
-       "tryLockWhenCondition:",
        "tryNewColorListNameSheetDidEnd:returnCode:context:",
+       "tryNextChallengeForWindow:",
        "tryToPerform:with:",
-       "turnOffEditMode",
+       "turnObject:intoFaultWithContext:",
        "turnOffKerning:",
        "turnOffLigatures:",
        "type",
-       "typeAhead:",
        "typeCodeValue",
-       "typeForArgumentWithName:",
+       "typeDescription",
+       "typeDescriptions",
+       "typeForContentsOfURL:error:",
        "typeForKey:",
+       "typeForParameter:",
        "typeFromFileExtension:",
-       "typeOfProperty:",
-       "typeOfProperty:forTable:",
+       "typeSelectNodeInTypeSelectDirectoryWithKeyDownEvent:recursively:",
+       "typeStringForColumn:",
        "typeToUnixName:",
+       "typefaceInfoForFontDescriptor:",
+       "typefaceInfoForKnownFontDescriptor:",
+       "typefaceInfoForPostscriptName:",
        "types",
        "typesFilterableTo:",
        "typesetter",
        "typesetterBehavior",
+       "typesetterLaidOneGlyph:",
        "typingAttributes",
-       "uiController",
-       "unSelectedImageBackgroundPiece",
+       "typingStyle",
        "unableToSetNilForKey:",
-       "unadjustedFrameDuration",
        "unarchiveObjectWithData:",
        "unarchiveObjectWithFile:",
-       "unassociatePopup:",
+       "unarchiver:cannotDecodeObjectOfClassName:originalClasses:",
+       "unarchiver:didDecodeObject:",
+       "unarchiver:willReplaceObject:withObject:",
+       "unarchiverDidFinish:",
+       "unarchiverWillFinish:",
        "unbind:",
        "unbindNSView:",
-       "unchainContext",
+       "undefined",
        "underline:",
        "underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
-       "underlinePosition",
        "underlineThickness",
        "undo",
        "undo:",
        "undoActionName",
        "undoEdit",
-       "undoHack:",
-       "undoIt",
+       "undoEditing:",
        "undoManager",
+       "undoManagerForTextView:",
+       "undoManagerForWebView:",
+       "undoManagerForWindow:",
        "undoMenuItemTitle",
        "undoMenuTitleForUndoActionName:",
        "undoNestedGroup",
        "undoRedo:",
-       "undoer",
        "unfocusView:",
        "unfocusWindow",
        "unhide",
        "unhide:",
        "unhideAllApplications:",
-       "unhideApplication",
        "unhideWithoutActivation",
        "unionSet:",
+       "unionWith:",
+       "unionWithRect:",
        "uniqueID",
-       "uniqueId",
        "uniqueKey:",
+       "uniqueNameWithBase:",
+       "uniqueNodeForIndexes:count:indexPath:",
        "uniqueSpellDocumentTag",
        "unixToTypeName:",
        "unload",
        "unloadNib:",
        "unloadWithoutShutdown",
        "unlock",
+       "unlockDocument",
        "unlockFocus",
        "unlockFocusInRect:",
+       "unlockObjectStore",
+       "unlockParentStore",
        "unlockTopMostReader",
        "unlockWithCondition:",
        "unmarkText",
-       "unmountAndEjectDeviceAtPath:",
-       "unmounted:",
-       "unregisterClass:",
+       "unpackROI:forRect:",
+       "unreachableURL",
        "unregisterDragTypesForWindow:",
        "unregisterDraggedTypes",
-       "unregisterImageRepClass:",
-       "unregisterModel:",
+       "unregisterForEnclosingClipViewNotifications",
+       "unregisterForPropertyChangedNotifications",
+       "unregisterForWindowNotifications",
        "unregisterObjectWithServicePath:",
-       "unregisterServiceProviderNamed:",
        "unscript:",
        "unscriptRange:",
-       "unselectedImage",
        "unsignedCharValue",
        "unsignedIntValue",
        "unsignedLongLongValue",
        "unsignedLongValue",
        "unsignedShortValue",
        "unsupportedTextMIMETypes",
-       "upToDateImageForEmail:",
+       "unsuppressAllNotificationsFromObject:",
+       "unsuppressSpecificNotificationFromObject:keyPath:",
+       "untrashedLeafFileLocationComponentWithLocator:",
+       "unvalidatedPath",
+       "unvalidatedSpecifier",
        "update",
-       "updateAppleMenu:",
-       "updateArrowState",
-       "updateAttachmentsFromPath:",
-       "updateCard:withImportedCard:",
+       "updateAndSetWindow",
+       "updateCacheForStreamDisposal",
        "updateCell:",
        "updateCellInside:",
        "updateCellOrControl:forMaxValue:",
        "updateCellOrControl:forMinValue:",
        "updateChangeCount:",
        "updateColorOptionsUI",
-       "updateColumns",
-       "updateCountLabel",
+       "updateConnectionForResponse:",
        "updateCurGlyphOffset",
-       "updateDragProgress",
-       "updateDragRectWithProgress:",
+       "updateCurrentBrowsingNodePathWithCurrentDirectoryNode:",
        "updateDragTypeRegistration",
-       "updateEditButton:",
+       "updateDynamicServices:",
        "updateFavoritesFromDefaults",
        "updateFavoritesUI",
-       "updateFlare",
-       "updateFlareWindow",
+       "updateFocusDisplay",
        "updateFontPanel",
-       "updateForChangeInBinderController:",
-       "updateForChangeInBinderController:dataChangedWithKeys:atIndexes:selectionChangedToIndexes:",
-       "updateForChangeInBinderController:dataChangedWithKeys:atIndexes:selectionIndexesUnchanged:",
-       "updateForChangeInBinderController:selectionChangedToIndexes:",
-       "updateForChangeInBinderController:selectionIndexes:",
-       "updateForDirectKeyValueCodingCallStateChange:",
        "updateFrameColors:",
        "updateFromPath:",
        "updateFromPrintInfo",
-       "updateGlyphEntryForCharacter:glyphID:font:",
-       "updateGroupMembership",
-       "updateGroupsSelection:",
        "updateHeartBeatState",
-       "updateInDock",
-       "updateIndex",
-       "updateIndex:",
-       "updateInfo:parent:rootObject:resolve:",
        "updateInputContexts",
        "updateInsertionPointStateAndRestartTimer:",
+       "updateInvalidatedFont:forObject:",
+       "updateInvalidatedObjectValue:forObject:",
+       "updateInvalidatedTextColor:forObject:",
        "updateLabel",
        "updateLineSpacingUI",
-       "updateLockFileTimeStamp",
-       "updateMarkers",
-       "updateMembersSelection:",
-       "updateMultiValue:forProperty:changes:",
-       "updateNameMap",
        "updateNib",
-       "updateNote:changes:",
-       "updateNotifications",
-       "updateObject:",
-       "updateObject:resolve:",
-       "updateOnlineStatus",
        "updateOptions:",
        "updateOptionsUI",
        "updateOptionsWithApplicationIcon:",
        "updateOptionsWithApplicationName:",
        "updateOptionsWithCopyright:",
        "updateOptionsWithCredits:",
-       "updateOptionsWithProjectVersion:",
+       "updateOptionsWithMarketingVersion:",
        "updateOptionsWithVersion:",
-       "updatePersonPicture",
-       "updatePlusMinus:",
+       "updateOutlineColumnDataCell:forDisplayAtIndexPath:",
+       "updateOutlineColumnOutlineCell:forDisplayAtIndexPath:",
        "updatePoofAnimation",
+       "updateQueryNode:",
+       "updateReferenceIndexesToReflectInsertionAtIndex:",
+       "updateReferenceIndexesToReflectInsertionAtIndexes:",
+       "updateReferenceIndexesToReflectRemovalAtIndex:",
+       "updateReferenceIndexesToReflectRemovalAtIndexes:",
+       "updateRoot",
+       "updateRow:",
        "updateRuler",
        "updateScroller",
        "updateScrollers",
-       "updateSecureFieldFrame",
-       "updateSingleValue:forProperty:changes:",
+       "updateSearchFieldWithPredicate:",
        "updateSpellingPanelWithMisspelledWord:",
        "updateSubmenu:",
        "updateSwatch",
        "updateTableColumnDataCell:forDisplayAtIndex:",
-       "updateTextBackgroundColor",
+       "updateTextAttributes:",
+       "updateTextColor",
        "updateUI",
-       "updateWidth",
-       "updateWidth:",
        "updateWindows",
        "updateWindowsItem:",
        "updateWithFocusRing",
-       "updatedPeople",
-       "upload",
+       "updateWithFocusRingForWindowKeyChange",
+       "updatedObjects",
        "uppercaseLetterCharacterSet",
        "uppercaseString",
-       "uppercaseWord:",
        "url",
-       "urlForEmail:",
-       "urlPathRelativeToPath:",
-       "usableParts",
        "usage",
        "use",
        "useAllLigatures:",
        "useCredential:forAuthenticationChallenge:",
        "useDisabledEffectForState:",
-       "useFont:",
        "useHighlightEffectForState:",
+       "useMap",
        "useOptimizedDrawing:",
-       "useSSL",
-       "useSSL:",
+       "useSSLOnlyForKey:",
        "useStandardKerning:",
        "useStandardLigatures:",
        "useStoredAccessor",
@@ -14935,66 +15957,59 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "user",
        "userAgent",
        "userAgentForURL:",
+       "userColumnResizingAutoresizesWindow",
        "userData",
-       "userDefaultsChanged",
        "userFixedPitchFontOfSize:",
        "userFontOfSize:",
-       "userFullName",
-       "userHomeDirectory",
+       "userHomeNode",
        "userInfo",
        "userKeyEquivalent",
        "userKeyEquivalentModifierMask",
-       "userName",
-       "userServer",
-       "userServer:",
+       "userSpaceScaleFactor",
        "userStyleSheetEnabled",
        "userStyleSheetLocation",
        "usesAlternatingRowBackgroundColors",
        "usesButtons",
-       "usesContinuousChangeNotification",
        "usesDataSource",
-       "usesDistinct",
        "usesEPSOnResolutionMismatch",
        "usesFeedbackWindow",
        "usesFindPanel",
        "usesFontLeading",
        "usesFontPanel",
-       "usesInactiveTextBackgroundColor",
+       "usesGroupingSeparator",
        "usesItemFromMenu",
-       "usesMultiThreaded",
+       "usesMenuFormRepresentationInDisplayMode:",
        "usesRuler",
        "usesScreenFonts",
-       "usesThreadedAnimation",
+       "usesUnnamedArguments",
        "usesUserKeyEquivalents",
-       "usesVectorMovement",
-       "usingActiveDirectory",
        "usingDefaultVoice",
-       "vCardControllerWithUIController:",
-       "vCardForRows:",
-       "vCardRepresentation",
-       "vCardRepresentationOfRecords:",
        "validAttributesForMarkedText",
+       "validModesForFontPanel:",
        "validRequestorForSendType:returnType:",
        "validRows",
        "validStartCharacter:",
        "validate",
-       "validateAction:",
+       "validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:",
        "validateEditing",
        "validateFindPanelAction:forClient:",
+       "validateForDelete:",
+       "validateForInsert:",
+       "validateForUpdate:",
+       "validateItem:",
        "validateMenuItem:",
        "validateObjectValue:",
-       "validatePath:ignore:",
        "validateRename",
        "validateTakeValue:forKeyPath:",
+       "validateToolbarItem:",
        "validateUserInterfaceItem:",
        "validateValue:forKey:",
        "validateValue:forKey:error:",
        "validateValue:forKeyPath:error:",
-       "validateVisibleColumns",
        "validateVisibleItems",
        "validatesImmediately",
-       "validatesImmediatelyWithBinding:",
-       "validationExceptionWithFormat:",
+       "validationPredicates",
+       "validationWarnings",
        "value",
        "value:withObjCType:",
        "valueAtIndex:",
@@ -15002,26 +16017,28 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "valueClass:",
        "valueClass:forBinding:",
        "valueClassForBinding:",
+       "valueForAttribute:",
        "valueForBinding:atIndex:resolveMarkersToPlaceholders:",
+       "valueForBinding:atIndexPath:resolveMarkersToPlaceholders:",
        "valueForBinding:resolveMarkersToPlaceholders:",
+       "valueForDimension:",
        "valueForHTTPHeaderField:",
        "valueForKey:",
+       "valueForKey:keys:values:",
+       "valueForKey:withInputs:",
        "valueForKeyPath:",
+       "valueForOptionalAttributeKey:",
        "valueForProperty:",
+       "valueForRequiredAttributeKey:",
        "valueForUndefinedKey:",
-       "valueInAttributeRunsAtIndex:",
-       "valueInCharactersAtIndex:",
-       "valueInOrderedWindowsWithUniqueID:",
-       "valueInParagraphsAtIndex:",
-       "valueInTemporaryCacheForProperty:",
-       "valueInWordsAtIndex:",
-       "valueOfProperty:",
-       "valueSelectionBehavior",
+       "valueOfAttribute:forResultAtIndex:",
        "valueTransformer",
        "valueTransformerForBinding:",
        "valueTransformerForName:",
        "valueTransformerName",
        "valueTransformerNames",
+       "valueTypeDescriptionFromName:declaration:",
+       "valueTypeForDimension:",
        "valueWithBytes:objCType:",
        "valueWithName:inPropertyWithKey:",
        "valueWithNonretainedObject:",
@@ -15033,82 +16050,87 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "valueWithUniqueID:inPropertyWithKey:",
        "valueWraps",
        "values",
-       "valuesForKey:",
+       "values:forResolutions:withCount:fromArrayOrNumber:",
        "valuesForKeys:",
-       "variableRows",
-       "vcardFieldisPrivate:",
+       "variable",
+       "variableExpression",
+       "variant",
+       "vectorWithString:",
+       "vectorWithValues:count:",
+       "vectorWithX:",
+       "vectorWithX:Y:",
+       "vectorWithX:Y:Z:",
+       "vectorWithX:Y:Z:W:",
        "vendor1",
        "vendor2",
        "vendor3",
+       "vendorDefined",
        "vendorID",
        "vendorPointerType",
-       "verifiedDirRef",
-       "verifyDataType:forKey:",
+       "vendorPointingDeviceType",
        "verifyWithDelegate:",
        "version",
        "versionForClassName:",
        "versionForClassNamed:",
-       "versionNumber",
        "versionString",
+       "verticalAlignment",
        "verticalLineScroll",
-       "verticalMotionCanBeginDrag",
        "verticalPageScroll",
        "verticalPagination",
        "verticalRulerView",
        "verticalScroller",
+       "verticalScrollingMode",
        "view",
-       "view:displayToolTipInWindowContentView:userData:",
-       "view:frameForToolTip:point:userData:",
+       "view:customToolTip:drawInView:displayInfo:",
+       "view:customToolTip:fadeOutAllowedForToolTipWithDisplayInfo:",
+       "view:customToolTip:frameForToolTipWithDisplayInfo:",
        "view:stringForToolTip:point:userData:",
        "viewBoundsChanged:",
-       "viewCount",
        "viewDidEndLiveResize",
+       "viewDidLiveResizeFromRect:",
        "viewDidMoveToHostWindow",
        "viewDidMoveToSuperview",
        "viewDidMoveToWindow",
        "viewFactory",
        "viewForCharacterIndex:layoutManager:",
-       "viewForJavaAppletWithFrame:attributes:baseURLString:",
+       "viewForJavaAppletWithFrame:attributeNames:attributeValues:baseURL:",
        "viewForObject:",
-       "viewForPluginWithURLString:attributes:baseURLString:MIMEType:",
+       "viewForPluginWithURL:attributeNames:attributeValues:MIMEType:",
        "viewForPreferenceNamed:",
        "viewFrameChanged:",
        "viewHasMoved:",
-       "viewHasToolTips:",
        "viewSize",
        "viewSizeChanged:",
-       "viewToolTipCanFadeOutDueToInactivity:",
+       "viewWillDealloc",
        "viewWillMoveToHostWindow:",
        "viewWillMoveToSuperview:",
        "viewWillMoveToWindow:",
+       "viewWillResetCursorRects",
        "viewWillStartLiveResize",
        "viewWithFrame:forView:characterIndex:layoutManager:",
        "viewWithTag:",
-       "viewsNeedDisplay",
+       "visibilityPriority",
        "visibleFrame",
        "visibleItems",
        "visibleRect",
-       "visitCount",
+       "visibleSelectionRect",
+       "visitPredicate:",
+       "visitPredicateExpression:",
+       "visitPredicateOperator:",
+       "visitor",
        "visualFrame",
-       "voice",
+       "visualRootNode",
        "voiceIdentifierForVoiceCreator:voiceID:",
        "volatileDomainForName:",
-       "volatileDomainNames",
-       "volume",
        "wait",
-       "waitForDataInBackgroundAndNotify",
        "waitForDataInBackgroundAndNotifyForModes:",
-       "waitForThreadsToFinish",
        "waitInterval:",
-       "waitOnTake",
-       "waitTillConversionIsDone",
-       "waitUntilDate:",
-       "waitUntilExit",
+       "wakeup:",
        "wantsDefaultClipping",
        "wantsDoubleBuffering",
        "wantsNotificationForMarkedText",
+       "wantsPeriodicDraggingUpdates",
        "wantsScrollWheelEvent:",
-       "wantsToBeColor",
        "wantsToDelayTextChangeNotifications",
        "wantsToDrawIconInDisplayMode:",
        "wantsToDrawIconIntoLabelAreaInDisplayMode:",
@@ -15116,13 +16138,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "wantsToHandleMouseEvents",
        "wantsToInterpretAllKeystrokes",
        "wantsToTrackMouse",
-       "wantsToTrackMouseForEvent:",
+       "wantsToTrackMouseForEvent:inRect:ofView:",
        "wantsToTrackMouseForEvent:inRect:ofView:atCharacterIndex:",
+       "warningValue",
+       "wasFirstResponderAtMouseDownTime:",
+       "wavePattern",
+       "webArchive",
+       "webArchiveData",
+       "webFallbackFontFamily",
        "webFrame",
+       "webFrame:didFinishLoadWithError:",
+       "webFrame:didFinishLoadWithReason:",
        "webFrameView",
+       "webPlugInCallJava:method:returnType:arguments:",
+       "webPlugInContainerLoadRequest:inFrame:",
+       "webPlugInContainerSelectionColor",
+       "webPlugInContainerShowStatus:",
+       "webPlugInDestroy",
+       "webPlugInGetApplet",
+       "webPlugInInitialize",
+       "webPlugInSetIsSelected:",
+       "webPlugInStart",
+       "webPlugInStop",
+       "webScriptNameForKey:",
+       "webScriptNameForSelector:",
        "webView",
+       "webView:addMessageToConsole:",
        "webView:contextMenuItemsForElement:defaultMenuItems:",
        "webView:createWebViewWithRequest:",
+       "webView:dashboardRegionsChanged:",
        "webView:decidePolicyForMIMEType:request:frame:decisionListener:",
        "webView:decidePolicyForNavigationAction:request:frame:decisionListener:",
        "webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener:",
@@ -15132,14 +16176,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "webView:didFailLoadWithError:forFrame:",
        "webView:didFailProvisionalLoadWithError:forFrame:",
        "webView:didFinishLoadForFrame:",
+       "webView:didFirstLayoutInFrame:",
        "webView:didReceiveIcon:forFrame:",
        "webView:didReceiveServerRedirectForProvisionalLoadForFrame:",
        "webView:didReceiveTitle:forFrame:",
        "webView:didStartProvisionalLoadForFrame:",
+       "webView:doCommandBySelector:",
+       "webView:dragDestinationActionMaskForDraggingInfo:",
+       "webView:dragSourceActionMaskForPoint:",
+       "webView:drawFooterInRect:",
+       "webView:drawHeaderInRect:",
        "webView:identifierForInitialRequest:fromDataSource:",
        "webView:makeFirstResponder:",
        "webView:mouseDidMoveOverElement:modifierFlags:",
        "webView:plugInFailedWithError:dataSource:",
+       "webView:printFrameView:",
        "webView:resource:didCancelAuthenticationChallenge:fromDataSource:",
        "webView:resource:didFailLoadingWithError:fromDataSource:",
        "webView:resource:didFinishLoadingFromDataSource:",
@@ -15151,55 +16202,82 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "webView:runJavaScriptConfirmPanelWithMessage:",
        "webView:runJavaScriptTextInputPanelWithPrompt:defaultText:",
        "webView:runOpenPanelForFileButtonWithResultListener:",
-       "webView:setContentRect:",
        "webView:setFrame:",
        "webView:setResizable:",
        "webView:setStatusBarVisible:",
        "webView:setStatusText:",
        "webView:setToolbarsVisible:",
+       "webView:shouldApplyStyle:toElementsInDOMRange:",
+       "webView:shouldBeginEditingInDOMRange:",
+       "webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:",
+       "webView:shouldDeleteDOMRange:",
+       "webView:shouldEndEditingInDOMRange:",
+       "webView:shouldInsertNode:replacingDOMRange:givenAction:",
+       "webView:shouldInsertText:replacingDOMRange:givenAction:",
        "webView:unableToImplementPolicyWithError:frame:",
        "webView:willCloseFrame:",
        "webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:",
+       "webView:willPerformDragDestinationAction:forDraggingInfo:",
+       "webView:willPerformDragSourceAction:fromPoint:withPasteboard:",
+       "webView:windowScriptObjectAvailable:",
        "webViewAreToolbarsVisible:",
        "webViewClose:",
        "webViewContentRect:",
-       "webViewCount",
+       "webViewDidBeginEditing:",
+       "webViewDidChange:",
+       "webViewDidChangeSelection:",
+       "webViewDidChangeTypingStyle:",
+       "webViewDidEndEditing:",
        "webViewFirstResponder:",
        "webViewFocus:",
+       "webViewFooterHeight:",
        "webViewFrame:",
+       "webViewHeaderHeight:",
        "webViewIsResizable:",
        "webViewIsStatusBarVisible:",
+       "webViewPrint:",
        "webViewShow:",
-       "webViewStatusText:",
-       "webViewUnfocus:",
        "webViewsInSetNamed:",
        "weightOfFont:",
-       "whatIsKeyType:",
        "whiteColor",
        "whiteComponent",
+       "whitespace",
        "whitespaceAndNewlineCharacterSet",
        "whitespaceCharacterSet",
        "widget",
        "widgetInView:withButtonID:action:",
        "width",
        "widthAdjustLimit",
-       "widthForCharacters:length:",
-       "widthForString:",
-       "widthOfColumn:",
+       "widthForLayer:edge:",
+       "widthForSegment:",
        "widthOfString:",
-       "widthString",
        "widthTracksTextView",
+       "widthValueTypeForLayer:edge:",
+       "willAccessValueForKey:",
        "willBeDisplayed",
+       "willCacheResponse:",
        "willChange:valuesAtIndexes:forKey:",
+       "willChangeExpandedNodes",
        "willChangeValueForKey:",
+       "willChangeValueForKey:withSetMutation:usingObjects:",
+       "willChangeValuesForArrangedKeys:objectKeys:indexKeys:",
        "willForwardSelector:",
        "willHaveItemsToDisplayForItemViewers:",
-       "willLoadImagesAutomatically",
+       "willPopUpNotification:",
+       "willPresentError:",
+       "willRead",
        "willRemoveSubview:",
+       "willSave",
+       "willSendRequest:redirectResponse:",
+       "willSetLineFragmentRect:forGlyphRange:usedRect:",
+       "willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:",
        "windingRule",
        "window",
+       "window:didChangeToVisibleState:",
+       "window:willPositionSheet:usingRect:",
        "windowBackgroundColor",
        "windowBecameKey:",
+       "windowChangedKeyState",
        "windowContentRect",
        "windowController",
        "windowControllerDidLoadNib:",
@@ -15207,8 +16285,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "windowControllers",
        "windowDidBecomeKey:",
        "windowDidBecomeKeyNotification:",
-       "windowDidBecomeMain:",
        "windowDidDeminiaturize:",
+       "windowDidEnableToolTipCreationAndDisplay",
        "windowDidLoad",
        "windowDidMiniaturize:",
        "windowDidResignKey:",
@@ -15227,10 +16305,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "windowNibName",
        "windowNibPath",
        "windowNumber",
+       "windowObjectCleared",
        "windowProperties",
        "windowRef",
        "windowResignedKey:",
+       "windowScriptNPObject",
+       "windowScriptObject",
        "windowShouldClose:",
+       "windowShouldZoom:toFrame:",
        "windowTitle",
        "windowTitleForDocumentDisplayName:",
        "windowTitlebarLinesSpacingWidth",
@@ -15238,6 +16320,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "windowTitlebarTitleLinesSpacingWidth",
        "windowTitlebarTitleLinesSpacingWidth:",
        "windowWillClose:",
+       "windowWillCloseNotification:",
        "windowWillLoad",
        "windowWillResize:toSize:",
        "windowWillReturnFieldEditor:toObject:",
@@ -15245,28 +16328,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "windowWillUseStandardFrame:defaultFrame:",
        "windowWithWindowNumber:",
        "windows",
-       "windowsMenu",
        "wordMovementHandler",
        "wordWrap",
-       "words",
-       "workLoop",
        "workQueue",
        "worksWhenModal",
-       "wrapperExtensions",
+       "wrapMode",
+       "wrapROI:forRect:",
        "wraps",
        "writablePasteboardTypes",
        "writableTypes",
-       "write:",
+       "writableTypesForSaveOperation:",
        "write:len:buffer:",
-       "write:maxLength:",
        "writeAlignedDataSize:",
        "writeAttachment:",
-       "writeBOSArray:count:ofType:",
-       "writeBOSNumString:length:ofType:scale:",
-       "writeBOSString:length:",
        "writeBackgroundColor",
        "writeBaselineOffset:",
-       "writeBinaryObjectSequence:length:",
        "writeBody",
        "writeCharacterAttributes:previousAttributes:",
        "writeCharacterShape:",
@@ -15275,69 +16351,72 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = {
        "writeColors",
        "writeData:",
        "writeData:length:",
+       "writeDate:",
+       "writeDateDocumentAttribute:withRTFKeyword:",
        "writeDefaultTabInterval",
        "writeDelayedInt:for:",
        "writeDocument:pbtype:filename:",
-       "writeEPSInsideRect:toPasteboard:",
        "writeEscapedUTF8String:",
        "writeExpansion:",
-       "writeFd:",
-       "writeFile:",
-       "writeFileContents:",
-       "writeFileWrapper:",
        "writeFont:",
        "writeFontTable",
        "writeGlyphInfo:",
        "writeHeader",
        "writeHyphenation",
-       "writeImageToPasteboard:",
-       "writeIndexPath",
+       "writeImageToPasteboard:types:",
+       "writeInfo",
        "writeInt:",
        "writeKern:",
+       "writeKeywordsDocumentAttribute",
        "writeLigature:",
+       "writeLinkInfo:",
+       "writeListTable",
        "writeLock",
        "writeObliqueness:",
-       "writePDFInsideRect:toPasteboard:",
-       "writePaneGeometryToDefaults",
        "writePaperSize",
        "writeParagraphStyle:",
-       "writePath:docInfo:errorHandler:remapContents:",
-       "writePostScriptWithLanguageEncodingConversion:",
+       "writePath:docInfo:errorHandler:remapContents:hardLinkPath:",
+       "writePath:docInfo:errorHandler:remapContents:markBusy:hardLinkPath:",
        "writePrintInfo",
-       "writeProfilingDataToPath:",
        "writeProperty:forKey:",
        "writeRTF",
-       "writeRTFDToFile:atomically:",
        "writeRoomForInt:",
-       "writeSelectedGroupsAndPeopleToDefaults",
+       "writeSafelyToURL:ofType:forSaveOperation:error:",
        "writeSelectionToPasteboard:type:",
        "writeSelectionToPasteboard:types:",
+       "writeSelectionWithPasteboardTypes:toPasteboard:",
        "writeShadow:",
        "writeStrikethroughStyle:",
+       "writeStringDocumentAttribute:withRTFKeyword:",
        "writeStrokeWidth:",
        "writeStyleSheetTable",
        "writeSuperscript:",
+       "writeTableHeader:forRowNumber:atIndex:",
        "writeToFile:",
        "writeToFile:atomically:",
+       "writeToFile:atomically:error:",
        "writeToFile:atomically:updateFilenames:",
+       "writeToFile:error:",
        "writeToFile:ofType:",
        "writeToFile:ofType:originalFile:saveOperation:",
+       "writeToFile:options:error:",
        "writeToPasteboard:",
-       "writeToPath:safely:",
        "writeToURL:atomically:",
-       "writeToURL:ofType:",
+       "writeToURL:ofType:error:",
+       "writeToURL:ofType:forSaveOperation:originalContentsURL:error:",
        "writeURLs:andTitles:toPasteboard:",
        "writeUnderlineStyle:allowStrikethrough:",
        "writeUnlock",
        "writeWithBackupToFile:ofType:saveOperation:",
        "xHeight",
-       "yank:",
-       "yankAndSelect:",
+       "xmlInfoForAttribute:",
+       "xmlNode",
        "yearOfCommonEra",
-       "years:months:days:hours:minutes:seconds:sinceDate:",
        "yellowColor",
        "yellowComponent",
        "zero",
+       "zeroOrMoreDescriptionsForSubelementName:",
+       "zeroSymbol",
        "zone",
        "zoom:",
        "zoomButton"
index 89b4927c45051636c414f4a0d733f552d53dc510..cb9c9e1a5a0f7ff1f300eb851777f9180a840bb8 100644 (file)
  */
 
 #include <objc/objc.h>
-#include <CoreFoundation/CFSet.h>
 #import "objc-private.h"
+#import "objc-auto.h"
+#import "objc-rtp.h"
+#import "objc-sel-set.h"
 
 // NUM_BUILTIN_SELS, LG_NUM_BUILTIN_SELS, _objc_builtin_selectors
 #include "objc-sel-table.h"
 
 #define NUM_NONBUILTIN_SELS 3500
-// Panther CFSet grows at 3571, 5778, 9349. 
+// objc_sel_set grows at 3571, 5778, 9349. 
 // Most apps use 2000..7000 extra sels. Most apps will grow zero to two times.
 
 static const char *_objc_empty_selector = "";
+static OBJC_DECLARE_LOCK(_objc_selector_lock);
+static struct __objc_sel_set *_objc_selectors = NULL;
+
+
+static inline int ignore_selector(const char *sel)
+{
+    // force retain/release/autorelease to be a constant value when GC is on
+    // note that the selectors for "Protocol" are registered before we can
+    // see the executable image header that sets _WantsGC, so we can't cache
+    // this result (sigh).
+    return (UseGC &&
+            (  (sel[0] == 'r' && sel[1] == 'e' &&
+                (_objc_strcmp(&sel[2], "lease") == 0 || 
+                 _objc_strcmp(&sel[2], "tain") == 0 ||
+                 _objc_strcmp(&sel[2], "tainCount") == 0 ))
+               ||
+               (_objc_strcmp(sel, "dealloc") == 0)
+               || 
+               (sel[0] == 'a' && sel[1] == 'u' && 
+                _objc_strcmp(&sel[2], "torelease") == 0)));
+}
+
 
 static SEL _objc_search_builtins(const char *key) {
     int c, idx, lg = LG_NUM_BUILTIN_SELS;
@@ -50,10 +74,12 @@ static SEL _objc_search_builtins(const char *key) {
 #if defined(DUMP_SELECTORS)
     if (NULL != key) printf("\t\"%s\",\n", key);
 #endif
-    /* The builtin table contains only sels starting with '[A-z]', including '_' */
+    /* The builtin table contains only sels starting with '[.A-z]', including '_' */
     if (!key) return (SEL)0;
     if ('\0' == *key) return (SEL)_objc_empty_selector;
-    if (*key < 'A' || 'z' < *key) return (SEL)0;
+    if ((*key < 'A' || 'z' < *key)  &&  *key != '.') return (SEL)0;
+    if (ignore_selector(key)) return (SEL)kIgnore;
+
     s = _objc_builtin_selectors[-1 + (1 << lg)];
     c = _objc_strcmp(s, key);
     if (c == 0) return (SEL)s;
@@ -67,19 +93,6 @@ static SEL _objc_search_builtins(const char *key) {
     return (SEL)0;
 }
 
-static OBJC_DECLARE_LOCK(_objc_selector_lock);
-static CFMutableSetRef _objc_selectors = NULL;
-
-static Boolean _objc_equal_selector(const void *v1, const void *v2) {
-    if (v1 == v2) return TRUE;
-    if ((v1 == NULL) || (v2 == NULL)) return FALSE;
-    return _objc_strcmp((const unsigned char *)v1, (const unsigned char *)v2) == 0;
-}
-
-static CFHashCode _objc_hash_selector(const void *v) {
-    if (!v) return 0;
-    return (CFHashCode)_objc_strhash(v);
-}
 
 const char *sel_getName(SEL sel) {
     return sel ? (const char *)sel : "<null selector>";
@@ -88,56 +101,52 @@ const char *sel_getName(SEL sel) {
 
 BOOL sel_isMapped(SEL name) {
     SEL result;
-    const void *value;
     
     if (NULL == name) return NO;
     result = _objc_search_builtins((const char *)name);
     if ((SEL)0 != result) return YES;
     OBJC_LOCK(&_objc_selector_lock);
-    if (_objc_selectors && CFSetGetValueIfPresent(_objc_selectors, name, &value)) {
-        result = (SEL)value;
+    if (_objc_selectors) {
+        result = __objc_sel_set_get(_objc_selectors, name);
     }
     OBJC_UNLOCK(&_objc_selector_lock);
     return ((SEL)0 != (SEL)result) ? YES : NO;
 }
 
-// CoreFoundation private API
-extern void _CFSetSetCapacity(CFMutableSetRef set, CFIndex cap);
-
-static SEL __sel_registerName(const char *name, int lockAndCopy) {
+static SEL __sel_registerName(const char *name, int lock, int copy) {
     SEL result = 0;
-    const void *value;
+
     if (NULL == name) return (SEL)0;
     result = _objc_search_builtins(name);
-    if ((SEL)0 != result) return result;
+    if (result != NULL) return result;
     
-    if (lockAndCopy) OBJC_LOCK(&_objc_selector_lock);
-    if (!_objc_selectors || !CFSetGetValueIfPresent(_objc_selectors, name, &value)) {
-       if (!_objc_selectors) {
-           CFSetCallBacks cb = {0, NULL, NULL, NULL,
-               _objc_equal_selector, _objc_hash_selector};
-           _objc_selectors = CFSetCreateMutable(kCFAllocatorDefault, 0, &cb);
-           _CFSetSetCapacity(_objc_selectors, NUM_NONBUILTIN_SELS);
-           CFSetAddValue(_objc_selectors, (void *)NULL);
-       }
-       //if (lockAndCopy > 1) printf("registering %s for sel_getUid\n",name);
-       value = lockAndCopy ? strdup(name) : name;
-       CFSetAddValue(_objc_selectors, (void *)value);
+    if (lock) OBJC_LOCK(&_objc_selector_lock);
+
+    if (_objc_selectors) {
+        result = __objc_sel_set_get(_objc_selectors, (SEL)name);
+    }
+    if (result == NULL) {
+        if (!_objc_selectors) {
+            _objc_selectors = __objc_sel_set_create(NUM_NONBUILTIN_SELS);
+        }
+        result = (SEL)(copy ? _strdup_internal(name) : name);
+        __objc_sel_set_add(_objc_selectors, result);
 #if defined(DUMP_UNKNOWN_SELECTORS)
-       printf("\t\"%s\",\n", value);
+        printf("\t\"%s\",\n", name);
 #endif
     }
-    result = (SEL)value;
-    if (lockAndCopy) OBJC_UNLOCK(&_objc_selector_lock);
+
+    if (lock) OBJC_UNLOCK(&_objc_selector_lock);
     return result;
 }
 
+
 SEL sel_registerName(const char *name) {
-    return __sel_registerName(name, 1);
+    return __sel_registerName(name, 1, 1);     // YES lock, YES copy
 }
 
-__private_extern__ SEL sel_registerNameNoCopyNoLock(const char *name) {
-    return __sel_registerName(name, 0);
+__private_extern__ SEL sel_registerNameNoLock(const char *name, BOOL copy) {
+    return __sel_registerName(name, 0, copy);  // NO lock, maybe copy
 }
 
 __private_extern__ void sel_lock(void)
@@ -156,5 +165,5 @@ __private_extern__ void sel_unlock(void)
 // did not check for NULL, so, in fact, never return NULL
 //
 SEL sel_getUid(const char *name) {
-    return __sel_registerName(name, 2);
+    return __sel_registerName(name, 2, 1);  // YES lock, YES copy
 }
index 86be2a18bfc741dd81d5149226d4d7a828a934b4..fe8e3a20757dace245d291e653b0b5b11f4afbea 100644 (file)
@@ -32,6 +32,7 @@
 #include <stdlib.h>
 #include <sys/time.h>
 #include <pthread.h>
+#include <errno.h>
 #include <AssertMacros.h>
 
 #include "objc-sync.h"
@@ -161,13 +162,17 @@ done:
 int objc_sync_enter(id obj)
 {
     int result = OBJC_SYNC_SUCCESS;
-    
-    SyncData* data = id2data(obj, ACQUIRE);
-    require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_INITIALIZED, "id2data failed");
+
+    if (obj) {
+        SyncData* data = id2data(obj, ACQUIRE);
+        require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_INITIALIZED, "id2data failed");
        
-    result = pthread_mutex_lock(&data->mutex);
-    require_noerr_string(result, done, "pthread_mutex_lock failed");
-               
+        result = pthread_mutex_lock(&data->mutex);
+        require_noerr_string(result, done, "pthread_mutex_lock failed");
+    } else {
+        // @synchronized(nil) does nothing
+    }
+
 done: 
     return result;
 }
@@ -179,11 +184,15 @@ int objc_sync_exit(id obj)
 {
     int result = OBJC_SYNC_SUCCESS;
     
-    SyncData* data = id2data(obj, RELEASE); 
-    require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_OWNING_THREAD_ERROR, "id2data failed");
-    
-    result = pthread_mutex_unlock(&data->mutex);
-    require_noerr_string(result, done, "pthread_mutex_unlock failed");
+    if (obj) {
+        SyncData* data = id2data(obj, RELEASE); 
+        require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_OWNING_THREAD_ERROR, "id2data failed");
+        
+        result = pthread_mutex_unlock(&data->mutex);
+        require_noerr_string(result, done, "pthread_mutex_unlock failed");
+    } else {
+        // @synchronized(nil) does nothing
+    }
        
 done:
     if ( result == EPERM )
index 6e2f63823de5c0404c35e8b45dfadbe2846e17ed..d936162e731a41a384f5fce0e87b394339a3399c 100644 (file)
@@ -56,6 +56,9 @@ typedef signed char           BOOL;
 #define nil 0          /* id of Nil instance */
 #endif
 
+#ifndef __OBJC_GC__
+# define __strong
+#endif
 
 #if !defined(STRICT_OPENSTEP)